Avoid large reads using parport_read() ?

From: Nick Holloway (Nick.Holloway@pyrites.org.uk)
Date: Mon Dec 30 2002 - 05:32:01 EST


I've been involved with the cpia_pp driver (parallel port Webcam), and
found that X becomes very sluggish when capturing a stream of images.
I suspect that this is due to reading the whole of each frame using
parport_read(), which could be up to 200K.

In the 2.0 kernel days (pre-parport layer), the cpia_pp driver would do
its own parallel port banging, and would actually only read 16 bytes
(fifo size) at a time before checking if it needed to reschedule.
Now it fetches the whole image using a single call to parport_read().

I did a quick check, and instead of issuing one parport_read for the whole
image, I looped round issuing reads of 4096 bytes. The responsiveness
of the machine was much improved.

Is there any problem with looping calls to parport_read() with a smaller
buffer size, and performing cond_resched() each time through the loop?
What size of buffer should I use?

-- 
 `O O'  | Nick.Holloway@pyrites.org.uk
// ^ \\ | http://www.pyrites.org.uk/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Dec 31 2002 - 22:00:16 EST