kopia lustrzana https://gitlab.com/sane-project/website
69 wiersze
3.4 KiB
HTML
69 wiersze
3.4 KiB
HTML
<!-- received="Sat Aug 14 17:20:48 1999 PDT" -->
|
||
<!-- sent="Sun, 15 Aug 1999 01:20:05 +0100 (GMT)" -->
|
||
<!-- name="Nick Lamb" -->
|
||
<!-- email="njl98r@ecs.soton.ac.uk" -->
|
||
<!-- subject="Re: Starting a discussion about SANE and TWAIN..." -->
|
||
<!-- id="" -->
|
||
<!-- inreplyto="199908142225.PAA01622@icarus.com" -->
|
||
<title>sane-devel: Re: Starting a discussion about SANE and TWAIN...</title>
|
||
<h1>Re: Starting a discussion about SANE and TWAIN...</h1>
|
||
<b>Nick Lamb</b> (<a href="mailto:njl98r@ecs.soton.ac.uk"><i>njl98r@ecs.soton.ac.uk</i></a>)<br>
|
||
<i>Sun, 15 Aug 1999 01:20:05 +0100 (GMT)</i>
|
||
<p>
|
||
<ul>
|
||
<li> <b>Messages sorted by:</b> <a href="date.html#152">[ date ]</a><a href="index.html#152">[ thread ]</a><a href="subject.html#152">[ subject ]</a><a href="author.html#152">[ author ]</a>
|
||
<!-- next="start" -->
|
||
<li> <b>Next message:</b> <a href="0153.html">Andreas Beck: "Re: Starting a discussion about SANE and TWAIN..."</a>
|
||
<li> <b>Previous message:</b> <a href="0151.html">becka@rz.uni-duesseldorf.de: "SANE V2 - past discussions. A summary."</a>
|
||
<li> <b>In reply to:</b> <a href="0150.html">Stephen Williams: "Re: Starting a discussion about SANE and TWAIN..."</a>
|
||
<!-- nextthread="start" -->
|
||
<li> <b>Next in thread:</b> <a href="0153.html">Andreas Beck: "Re: Starting a discussion about SANE and TWAIN..."</a>
|
||
<!-- reply="end" -->
|
||
</ul>
|
||
<!-- body="start" -->
|
||
On Sat, 14 Aug 1999, Stephen Williams wrote:<br>
|
||
<p>
|
||
<i>> However, I want to be able to write SANE front-ends that can drive my</i><br>
|
||
<i>> back-end at those sorts of rates. I have put considerable effort into</i><br>
|
||
<i>> making sure the kernel mode device driver does *not* copy lots of image</i><br>
|
||
<i>> buffers around (app mmaps the image buffer which the card can access</i><br>
|
||
<i>> via DMA) and I don't want to see a SANE standard that does gratuitous</i><br>
|
||
<i>> copies.</i><br>
|
||
<p>
|
||
Image data goes through sane_read, which is defined as:<br>
|
||
<p>
|
||
sane_read (SANE_Handle h, SANE_Byte * buf, SANE_Int maxlen, SANE_Int * len);<br>
|
||
<p>
|
||
This means that the backend is required to copy at most maxlen bytes<br>
|
||
into the buffer (buf) which was provided by the frontend. This interface<br>
|
||
is not optional, and should incur exactly one copy, which I don't think<br>
|
||
is unreasonable.<br>
|
||
<p>
|
||
In a typical localhost scenario the backend is a dynamically loaded<br>
|
||
shared object, added to the frontend at runtime, and sharing the same<br>
|
||
process space. Most such backends seem to fork() in order to do the<br>
|
||
heavy lifting in a separate process, but that's entirely optional.<br>
|
||
<p>
|
||
Does this sound alright, or is Zero Copy absolutely a must for your<br>
|
||
proposed application?<br>
|
||
<p>
|
||
Nick.<br>
|
||
<p>
|
||
<p>
|
||
<pre>
|
||
--
|
||
Source code, list archive, and docs: <a href="http://www.mostang.com/sane/">http://www.mostang.com/sane/</a>
|
||
To unsubscribe: echo unsubscribe sane-devel | mail <a href="mailto:majordomo@mostang.com">majordomo@mostang.com</a>
|
||
</pre>
|
||
<!-- body="end" -->
|
||
<p>
|
||
<ul>
|
||
<!-- next="start" -->
|
||
<li> <b>Next message:</b> <a href="0153.html">Andreas Beck: "Re: Starting a discussion about SANE and TWAIN..."</a>
|
||
<li> <b>Previous message:</b> <a href="0151.html">becka@rz.uni-duesseldorf.de: "SANE V2 - past discussions. A summary."</a>
|
||
<li> <b>In reply to:</b> <a href="0150.html">Stephen Williams: "Re: Starting a discussion about SANE and TWAIN..."</a>
|
||
<!-- nextthread="start" -->
|
||
<li> <b>Next in thread:</b> <a href="0153.html">Andreas Beck: "Re: Starting a discussion about SANE and TWAIN..."</a>
|
||
<!-- reply="end" -->
|
||
</ul>
|