<?xml version="1.0" encoding="ANSI_X3.4-1968" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968" /><title>blk_rq_map_user</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="index.html" title="The Linux Kernel API" /><link rel="up" href="ch14.html" title="Chapter 14. Block Devices" /><link rel="prev" href="re531.html" title="__blk_end_bidi_request" /><link rel="next" href="re533.html" title="blk_rq_map_user_iov" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span>blk_rq_map_user</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="re531.html">Prev</a> </td><th width="60%" align="center">Chapter 14. Block Devices</th><td width="20%" align="right"> <a accesskey="n" href="re533.html">Next</a></td></tr></table><hr /></div><div class="refentry" title="blk_rq_map_user"><a id="API-blk-rq-map-user"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>blk_rq_map_user — map user data to a request, for REQ_TYPE_BLOCK_PC usage </p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">blk_rq_map_user </b>(</code></td><td>struct request_queue * <var class="pdparam">q</var>, </td></tr><tr><td> </td><td>struct request * <var class="pdparam">rq</var>, </td></tr><tr><td> </td><td>struct rq_map_data * <var class="pdparam">map_data</var>, </td></tr><tr><td> </td><td>void __user * <var class="pdparam">ubuf</var>, </td></tr><tr><td> </td><td>unsigned long <var class="pdparam">len</var>, </td></tr><tr><td> </td><td>gfp_t <var class="pdparam">gfp_mask</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Arguments"><a id="id2700569"></a><h2>Arguments</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>q</code></em></span></dt><dd><p> request queue where request should be inserted </p></dd><dt><span class="term"><em class="parameter"><code>rq</code></em></span></dt><dd><p> request structure to fill </p></dd><dt><span class="term"><em class="parameter"><code>map_data</code></em></span></dt><dd><p> pointer to the rq_map_data holding pages (if necessary) </p></dd><dt><span class="term"><em class="parameter"><code>ubuf</code></em></span></dt><dd><p> the user buffer </p></dd><dt><span class="term"><em class="parameter"><code>len</code></em></span></dt><dd><p> length of user data </p></dd><dt><span class="term"><em class="parameter"><code>gfp_mask</code></em></span></dt><dd><p> memory allocation flags </p></dd></dl></div></div><div class="refsect1" title="Description"><a id="id2700682"></a><h2>Description</h2><p> Data will be mapped directly for zero copy I/O, if possible. Otherwise a kernel bounce buffer is used. </p><p> A matching <code class="function">blk_rq_unmap_user</code> must be issued at the end of I/O, while still in process context. </p></div><div class="refsect1" title="Note"><a id="id2700703"></a><h2>Note</h2><p> The mapped bio may need to be bounced through <code class="function">blk_queue_bounce</code> before being submitted to the device, as pages mapped may be out of reach. It's the callers responsibility to make sure this happens. The original bio must be passed back in to <code class="function">blk_rq_unmap_user</code> for proper unmapping. </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="re531.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch14.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="re533.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span>__blk_end_bidi_request</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span>blk_rq_map_user_iov</span></td></tr></table></div></body></html>