/usr/share/doc/libkcapi/html/ch02s07.html is in libkcapi-doc 1.0.3-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Zero Copy</title><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="index.html" title="Linux Kernel Crypto API User Space Interface Library"><link rel="up" href="Usage.html" title="Chapter 2. Programming Guidelines"><link rel="prev" href="ch02s06.html" title="Asymmetric Cipher API"><link rel="next" href="ch02s08.html" title="Memory Allocation"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Zero Copy</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s06.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Programming Guidelines</th><td width="20%" align="right"> <a accesskey="n" href="ch02s08.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm127"></a>Zero Copy</h2></div></div></div><p>
When using the one-shot API for symmetric ciphers, AEAD ciphers,
as well as message digests, the library uses the zero copy interface to
provide the input data to the kernel. That means, the kernel operates on
the user space pages.
</p><p>
To ensure the efficiency of this zero copy approach, the caller should
use a page-aligned data buffer for the input data. Non-aligned buffers
would work also, but the kernel would need to perform more page
accesses, lowering the throughput. Such an aligned buffer can be created,
for example, using the following call - the value 4096 should be the size
of one page on the system:
</p><pre class="programlisting">
unsigned char buf[4096] __attribute__((__aligned__(4096)));
</pre><pre class="programlisting">
unsigned char *buf;
posix_memalign((void *)&buf, PAGE_SIZE, buflen);
</pre></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s06.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Usage.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Asymmetric Cipher API </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Memory Allocation</td></tr></table></div></body></html>
|