Oliver Rauch schrieb:
> Hi,
>
> has someone experience with a sane backend and scsi command queueing?
>
> I am just working on it for the umax backend.
>
> At first I created some routines that replace the pipe to transfer the
> data from the reader_process to the main process, it uses shared memory
> instead (on systems where shared memory is available, otherwise the pipe is
> used).
>
> Unfortunetly it does not speed up scanning large images. It really looks like
> the comunication via the scsi bus is not fast enough.
>
> So I added scsi command queueing into the umax backend. But I am not
> sure how I can see
> 1) how/if it works (sanei_scsi debug output is not good enough)
> 2) what I can do to speed up the comunication (it also does not help a lot).
>
> Any help is appreciated
>
I have done the UnixWare2 port of sane.  Bofore this work I wrote a scanner
driver for Microtek scanners for Unixware.
I compared the scanning speed for A4  600x600 dpi  full color  scans with both
sane and  my Microtek solution.
The sane scanning speed is much more slow then my singular solution . So whats
the difference - I send a scsi command
block along with a repeat faktor to a special  kernel driver.   The driver
handles the whole scan internally without returning
to the user programm.  Original Unixes have a physio kernel funktion to lock
user process in memory and the low level
scsi drivers can send data direct to the user space even with dma mode . So a
driver copy to user like in the linux kernel is also
not necessary.
But I think the most bottlenek is the interaktion between backends and kernel
after every scsi-command. This interaction time  by
system calls ,  kernel scheduling  etc. at this time is to long to  keep the
scanner running, the next scan command block should be send
by the driver  if it receives the completion interrupt  from the last.
If we talk about scanspeed  we should think about extending the sg driver  for
doublebuffering data pages in kernel memory space
and command block repeat count.  Filling one  buffer by dma from  scsi hardware
and coping in parallel the other out to the user
space instead of waiting for interrupts. My somebody have looked more to the
linux sg driver source code then I and  knows more
about  how it works. But so all backends must be changed because not all could
be done ins sane_scsi.
Bye Wolfgang
-- Source code, list archive, and docs: http://www.mostang.com/sane/ To unsubscribe: echo unsubscribe sane-devel | mail majordomo@mostang.com
This archive was generated by hypermail 2b29 : Wed Jun 28 2000 - 10:38:46 PDT