You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

2291 lines
105 KiB

<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.8"/>
<title>fuse: include/fuse_lowlevel.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">fuse
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.8 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">fuse_lowlevel.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="fuse__common_8h.html">fuse_common.h</a>&quot;</code><br />
<code>#include &lt;utime.h&gt;</code><br />
<code>#include &lt;fcntl.h&gt;</code><br />
<code>#include &lt;sys/types.h&gt;</code><br />
<code>#include &lt;sys/stat.h&gt;</code><br />
<code>#include &lt;sys/statvfs.h&gt;</code><br />
<code>#include &lt;sys/uio.h&gt;</code><br />
<code>#include &quot;fuse_lowlevel_compat.h&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfuse__entry__param.html">fuse_entry_param</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfuse__ctx.html">fuse_ctx</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfuse__lowlevel__ops.html">fuse_lowlevel_ops</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfuse__session__ops.html">fuse_session_ops</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfuse__chan__ops.html">fuse_chan_ops</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a14d7299559cf05272b838cfc6388ef91"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a14d7299559cf05272b838cfc6388ef91">FUSE_ROOT_ID</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:a14d7299559cf05272b838cfc6388ef91"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ab419149c707451eaf61b75afb852e016"><td class="memItemLeft" align="right" valign="top">typedef unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a></td></tr>
<tr class="separator:ab419149c707451eaf61b75afb852e016"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33e2aa4a8905a05397292ae047cd2257"><td class="memItemLeft" align="right" valign="top">typedef struct fuse_req *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a></td></tr>
<tr class="separator:a33e2aa4a8905a05397292ae047cd2257"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5bb8b555b1d9d8a38b8c6cac28d51f1e"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a5bb8b555b1d9d8a38b8c6cac28d51f1e">fuse_interrupt_func_t</a> )(<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, void *data)</td></tr>
<tr class="separator:a5bb8b555b1d9d8a38b8c6cac28d51f1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a2553c03f9a63c75e609e67f90a3a5d88"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, int err)</td></tr>
<tr class="separator:a2553c03f9a63c75e609e67f90a3a5d88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85ae91390a6704dc26f8d80fed7d5678"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a85ae91390a6704dc26f8d80fed7d5678">fuse_reply_none</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req)</td></tr>
<tr class="separator:a85ae91390a6704dc26f8d80fed7d5678"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a672c45e126cd240f4bcd59bf9b7e3708"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a672c45e126cd240f4bcd59bf9b7e3708">fuse_reply_entry</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, const struct <a class="el" href="structfuse__entry__param.html">fuse_entry_param</a> *e)</td></tr>
<tr class="separator:a672c45e126cd240f4bcd59bf9b7e3708"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abea78d22349198f8370d7cb91fbf05ed"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#abea78d22349198f8370d7cb91fbf05ed">fuse_reply_create</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, const struct <a class="el" href="structfuse__entry__param.html">fuse_entry_param</a> *e, const struct <a class="el" href="structfuse__file__info.html">fuse_file_info</a> *fi)</td></tr>
<tr class="separator:abea78d22349198f8370d7cb91fbf05ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad28378dc569019c32acdb4995d70be18"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#ad28378dc569019c32acdb4995d70be18">fuse_reply_attr</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, const struct stat *attr, double attr_timeout)</td></tr>
<tr class="separator:ad28378dc569019c32acdb4995d70be18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a5872d7f73f0bd593e00788a4c7bbb7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a5a5872d7f73f0bd593e00788a4c7bbb7">fuse_reply_readlink</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, const char *link)</td></tr>
<tr class="separator:a5a5872d7f73f0bd593e00788a4c7bbb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a170f8c6b953d70928e83bcecee43bfdc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a170f8c6b953d70928e83bcecee43bfdc">fuse_reply_open</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, const struct <a class="el" href="structfuse__file__info.html">fuse_file_info</a> *fi)</td></tr>
<tr class="separator:a170f8c6b953d70928e83bcecee43bfdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3cfa73f61d6ef461ab5a3fbf859eb97"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#aa3cfa73f61d6ef461ab5a3fbf859eb97">fuse_reply_write</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, size_t count)</td></tr>
<tr class="separator:aa3cfa73f61d6ef461ab5a3fbf859eb97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a300a88b63ab7c8ca92853a97486448c0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a300a88b63ab7c8ca92853a97486448c0">fuse_reply_buf</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, const char *buf, size_t size)</td></tr>
<tr class="separator:a300a88b63ab7c8ca92853a97486448c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1242694fe0fb6e253a88b57795987302"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a1242694fe0fb6e253a88b57795987302">fuse_reply_data</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, struct <a class="el" href="structfuse__bufvec.html">fuse_bufvec</a> *bufv, enum <a class="el" href="fuse__common_8h.html#aec0ad71a3e8c357ebe7e87cdecbdbe18">fuse_buf_copy_flags</a> flags)</td></tr>
<tr class="separator:a1242694fe0fb6e253a88b57795987302"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5fbbf591a55f09c02cd54d34bdbfe0e9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a5fbbf591a55f09c02cd54d34bdbfe0e9">fuse_reply_iov</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, const struct iovec *iov, int count)</td></tr>
<tr class="separator:a5fbbf591a55f09c02cd54d34bdbfe0e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1d95ec3ca674253baac3639ea10f0ff"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#aa1d95ec3ca674253baac3639ea10f0ff">fuse_reply_statfs</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, const struct statvfs *stbuf)</td></tr>
<tr class="separator:aa1d95ec3ca674253baac3639ea10f0ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afed32e5d3e1f54d390103f79ebb8bd42"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#afed32e5d3e1f54d390103f79ebb8bd42">fuse_reply_xattr</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, size_t count)</td></tr>
<tr class="separator:afed32e5d3e1f54d390103f79ebb8bd42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a135eda9b7d36fb4eaae2de58526d4f85"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a135eda9b7d36fb4eaae2de58526d4f85">fuse_reply_lock</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, const struct flock *lock)</td></tr>
<tr class="separator:a135eda9b7d36fb4eaae2de58526d4f85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65431e8196e0533257acad767f7b074f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a65431e8196e0533257acad767f7b074f">fuse_reply_bmap</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, uint64_t idx)</td></tr>
<tr class="separator:a65431e8196e0533257acad767f7b074f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1957bcc8ece8c90f16c42c4daf3053f"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#ad1957bcc8ece8c90f16c42c4daf3053f">fuse_add_direntry</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, char *buf, size_t bufsize, const char *name, const struct stat *stbuf, off_t off)</td></tr>
<tr class="separator:ad1957bcc8ece8c90f16c42c4daf3053f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a940683d07df12c24f56b4363aed90e4d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a940683d07df12c24f56b4363aed90e4d">fuse_reply_ioctl_retry</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, const struct iovec *in_iov, size_t in_count, const struct iovec *out_iov, size_t out_count)</td></tr>
<tr class="separator:a940683d07df12c24f56b4363aed90e4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf7f34f470c04f276b7091ad3b3dcb31"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#adf7f34f470c04f276b7091ad3b3dcb31">fuse_reply_ioctl</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, int result, const void *buf, size_t size)</td></tr>
<tr class="separator:adf7f34f470c04f276b7091ad3b3dcb31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37381eb84c39e5fe3af9f3ef507aeeb7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a37381eb84c39e5fe3af9f3ef507aeeb7">fuse_reply_ioctl_iov</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, int result, const struct iovec *iov, int count)</td></tr>
<tr class="separator:a37381eb84c39e5fe3af9f3ef507aeeb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2172d260d34c76c25cd601870aee4220"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a2172d260d34c76c25cd601870aee4220">fuse_reply_poll</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, unsigned revents)</td></tr>
<tr class="separator:a2172d260d34c76c25cd601870aee4220"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab078685b1f480188031fc40aa2e2fbca"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#ab078685b1f480188031fc40aa2e2fbca">fuse_lowlevel_notify_poll</a> (struct fuse_pollhandle *ph)</td></tr>
<tr class="separator:ab078685b1f480188031fc40aa2e2fbca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05b0e5326257af22062d90809801b730"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a05b0e5326257af22062d90809801b730">fuse_lowlevel_notify_inval_inode</a> (struct fuse_chan *ch, <a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a> ino, off_t off, off_t len)</td></tr>
<tr class="separator:a05b0e5326257af22062d90809801b730"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac250195a1e88bb7c1d10340558b30c8f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#ac250195a1e88bb7c1d10340558b30c8f">fuse_lowlevel_notify_inval_entry</a> (struct fuse_chan *ch, <a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a> parent, const char *name, size_t namelen)</td></tr>
<tr class="separator:ac250195a1e88bb7c1d10340558b30c8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94893b3eb83fe2a218e80e43089670a1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a94893b3eb83fe2a218e80e43089670a1">fuse_lowlevel_notify_delete</a> (struct fuse_chan *ch, <a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a> parent, <a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a> child, const char *name, size_t namelen)</td></tr>
<tr class="separator:a94893b3eb83fe2a218e80e43089670a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d12f831402f7f25de8bef2d2a82f402"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a4d12f831402f7f25de8bef2d2a82f402">fuse_lowlevel_notify_store</a> (struct fuse_chan *ch, <a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a> ino, off_t offset, struct <a class="el" href="structfuse__bufvec.html">fuse_bufvec</a> *bufv, enum <a class="el" href="fuse__common_8h.html#aec0ad71a3e8c357ebe7e87cdecbdbe18">fuse_buf_copy_flags</a> flags)</td></tr>
<tr class="separator:a4d12f831402f7f25de8bef2d2a82f402"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b2a260132708b581b00e1066b43faa8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a8b2a260132708b581b00e1066b43faa8">fuse_lowlevel_notify_retrieve</a> (struct fuse_chan *ch, <a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a> ino, size_t size, off_t offset, void *cookie)</td></tr>
<tr class="separator:a8b2a260132708b581b00e1066b43faa8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab00273c65d124e44abcf2374f9c504b"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#aab00273c65d124e44abcf2374f9c504b">fuse_req_userdata</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req)</td></tr>
<tr class="separator:aab00273c65d124e44abcf2374f9c504b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1d1963190eb93ae5667d32d2b387ca1"><td class="memItemLeft" align="right" valign="top">const struct <a class="el" href="structfuse__ctx.html">fuse_ctx</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#ad1d1963190eb93ae5667d32d2b387ca1">fuse_req_ctx</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req)</td></tr>
<tr class="separator:ad1d1963190eb93ae5667d32d2b387ca1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57f4dabcf044aafcdba6c4682b3a1869"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a57f4dabcf044aafcdba6c4682b3a1869">fuse_req_getgroups</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, int size, gid_t list[])</td></tr>
<tr class="separator:a57f4dabcf044aafcdba6c4682b3a1869"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3cdb9744f033e37a72984489343940f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#ab3cdb9744f033e37a72984489343940f">fuse_req_interrupt_func</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="el" href="fuse__lowlevel_8h.html#a5bb8b555b1d9d8a38b8c6cac28d51f1e">fuse_interrupt_func_t</a> func, void *data)</td></tr>
<tr class="separator:ab3cdb9744f033e37a72984489343940f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52674fc627647f33e63c74267f0f1f9d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a52674fc627647f33e63c74267f0f1f9d">fuse_req_interrupted</a> (<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req)</td></tr>
<tr class="separator:a52674fc627647f33e63c74267f0f1f9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab71e91777def283987cd8a504e926d01"><td class="memItemLeft" align="right" valign="top">struct fuse_session *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#ab71e91777def283987cd8a504e926d01">fuse_lowlevel_new</a> (struct <a class="el" href="structfuse__args.html">fuse_args</a> *args, const struct <a class="el" href="structfuse__lowlevel__ops.html">fuse_lowlevel_ops</a> *op, size_t op_size, void *userdata)</td></tr>
<tr class="separator:ab71e91777def283987cd8a504e926d01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28b7d09c6e87e3e375743c2ef6e06f0f"><td class="memItemLeft" align="right" valign="top">struct fuse_session *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a28b7d09c6e87e3e375743c2ef6e06f0f">fuse_session_new</a> (struct <a class="el" href="structfuse__session__ops.html">fuse_session_ops</a> *op, void *data)</td></tr>
<tr class="separator:a28b7d09c6e87e3e375743c2ef6e06f0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcc40a021ee1a21752e3c622f3d3692d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#adcc40a021ee1a21752e3c622f3d3692d">fuse_session_add_chan</a> (struct fuse_session *se, struct fuse_chan *ch)</td></tr>
<tr class="separator:adcc40a021ee1a21752e3c622f3d3692d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93cb94614503b2249d15629c447dddb9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a93cb94614503b2249d15629c447dddb9">fuse_session_remove_chan</a> (struct fuse_chan *ch)</td></tr>
<tr class="separator:a93cb94614503b2249d15629c447dddb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a6664baeee7a580928f959fd4968d5c"><td class="memItemLeft" align="right" valign="top">struct fuse_chan *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a8a6664baeee7a580928f959fd4968d5c">fuse_session_next_chan</a> (struct fuse_session *se, struct fuse_chan *ch)</td></tr>
<tr class="separator:a8a6664baeee7a580928f959fd4968d5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a210cb96700171ccbb5fe84a42b4613d8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a210cb96700171ccbb5fe84a42b4613d8">fuse_session_process</a> (struct fuse_session *se, const char *buf, size_t len, struct fuse_chan *ch)</td></tr>
<tr class="separator:a210cb96700171ccbb5fe84a42b4613d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58da9b49939ed7e60c906d99bbf7b21a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a58da9b49939ed7e60c906d99bbf7b21a">fuse_session_process_buf</a> (struct fuse_session *se, const struct <a class="el" href="structfuse__buf.html">fuse_buf</a> *buf, struct fuse_chan *ch)</td></tr>
<tr class="separator:a58da9b49939ed7e60c906d99bbf7b21a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f7f424f58729d08af8ab7be91d93478"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a7f7f424f58729d08af8ab7be91d93478">fuse_session_receive_buf</a> (struct fuse_session *se, struct <a class="el" href="structfuse__buf.html">fuse_buf</a> *buf, struct fuse_chan **chp)</td></tr>
<tr class="separator:a7f7f424f58729d08af8ab7be91d93478"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08b5503c4e9656f9c4bc88331233cc65"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a08b5503c4e9656f9c4bc88331233cc65">fuse_session_destroy</a> (struct fuse_session *se)</td></tr>
<tr class="separator:a08b5503c4e9656f9c4bc88331233cc65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a198429f3fbc23ef29ef9971271827690"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a198429f3fbc23ef29ef9971271827690">fuse_session_exit</a> (struct fuse_session *se)</td></tr>
<tr class="separator:a198429f3fbc23ef29ef9971271827690"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3d015de77ae0edeb3157321e7a5c434"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#ab3d015de77ae0edeb3157321e7a5c434">fuse_session_reset</a> (struct fuse_session *se)</td></tr>
<tr class="separator:ab3d015de77ae0edeb3157321e7a5c434"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41b12193fa1520ff658d65679f4e513c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a41b12193fa1520ff658d65679f4e513c">fuse_session_exited</a> (struct fuse_session *se)</td></tr>
<tr class="separator:a41b12193fa1520ff658d65679f4e513c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac58f69b8c0f7e9fbd45280fb1d68d9f5"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#ac58f69b8c0f7e9fbd45280fb1d68d9f5">fuse_session_data</a> (struct fuse_session *se)</td></tr>
<tr class="separator:ac58f69b8c0f7e9fbd45280fb1d68d9f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f1e538aa3287e251afbe985438c4249"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a5f1e538aa3287e251afbe985438c4249">fuse_session_loop</a> (struct fuse_session *se)</td></tr>
<tr class="separator:a5f1e538aa3287e251afbe985438c4249"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afeffdee79e361c96b10ce798c56ed2cc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#afeffdee79e361c96b10ce798c56ed2cc">fuse_session_loop_mt</a> (struct fuse_session *se)</td></tr>
<tr class="separator:afeffdee79e361c96b10ce798c56ed2cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a9a9cd6bffbd37ee1971b3dfe183140"><td class="memItemLeft" align="right" valign="top">struct fuse_chan *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a0a9a9cd6bffbd37ee1971b3dfe183140">fuse_chan_new</a> (struct <a class="el" href="structfuse__chan__ops.html">fuse_chan_ops</a> *op, int fd, size_t bufsize, void *data)</td></tr>
<tr class="separator:a0a9a9cd6bffbd37ee1971b3dfe183140"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed5405bd1725a4da8610ce1a1fe49307"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#aed5405bd1725a4da8610ce1a1fe49307">fuse_chan_fd</a> (struct fuse_chan *ch)</td></tr>
<tr class="separator:aed5405bd1725a4da8610ce1a1fe49307"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2018fab0f56f1b15f6e5fd9ff63641c"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#ab2018fab0f56f1b15f6e5fd9ff63641c">fuse_chan_bufsize</a> (struct fuse_chan *ch)</td></tr>
<tr class="separator:ab2018fab0f56f1b15f6e5fd9ff63641c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50696378a60c9b5daea8de2fbcf1dc5d"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a50696378a60c9b5daea8de2fbcf1dc5d">fuse_chan_data</a> (struct fuse_chan *ch)</td></tr>
<tr class="separator:a50696378a60c9b5daea8de2fbcf1dc5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d0c57c5be8fe4884c10270fcaad4710"><td class="memItemLeft" align="right" valign="top">struct fuse_session *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a0d0c57c5be8fe4884c10270fcaad4710">fuse_chan_session</a> (struct fuse_chan *ch)</td></tr>
<tr class="separator:a0d0c57c5be8fe4884c10270fcaad4710"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa1748ec47595b3ab7be93ad29e55fcb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#afa1748ec47595b3ab7be93ad29e55fcb">fuse_chan_recv</a> (struct fuse_chan **ch, char *buf, size_t size)</td></tr>
<tr class="separator:afa1748ec47595b3ab7be93ad29e55fcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad53f74694d7c8605d956d48ab04b55e9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#ad53f74694d7c8605d956d48ab04b55e9">fuse_chan_send</a> (struct fuse_chan *ch, const struct iovec iov[], size_t count)</td></tr>
<tr class="separator:ad53f74694d7c8605d956d48ab04b55e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a88655f900be214db61844337879fa5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fuse__lowlevel_8h.html#a7a88655f900be214db61844337879fa5">fuse_chan_destroy</a> (struct fuse_chan *ch)</td></tr>
<tr class="separator:a7a88655f900be214db61844337879fa5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Low level API</p>
<p>IMPORTANT: you should define FUSE_USE_VERSION before including this header. To use the newest API define it to 26 (recommended for any new application), to use the old API define it to 24 (default) or 25 </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a14d7299559cf05272b838cfc6388ef91"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FUSE_ROOT_ID&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>The node ID of the root inode </p>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="ab419149c707451eaf61b75afb852e016"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef unsigned long <a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Inode number type </p>
</div>
</div>
<a class="anchor" id="a5bb8b555b1d9d8a38b8c6cac28d51f1e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef void(* fuse_interrupt_func_t)(<a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, void *data)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Callback function for an interrupt</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>interrupted request </td></tr>
<tr><td class="paramname">data</td><td>user data </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a33e2aa4a8905a05397292ae047cd2257"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct fuse_req* <a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Request pointer type </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ad1957bcc8ece8c90f16c42c4daf3053f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t fuse_add_direntry </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>bufsize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct stat *&#160;</td>
<td class="paramname"><em>stbuf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">off_t&#160;</td>
<td class="paramname"><em>off</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a directory entry to the buffer</p>
<p>Buffer needs to be large enough to hold the entry. If it's not, then the entry is not filled in but the size of the entry is still returned. The caller can check this by comparing the bufsize parameter with the returned entry size. If the entry size is larger than the buffer size, the operation failed.</p>
<p>From the 'stbuf' argument the st_ino field and bits 12-15 of the st_mode field are used. The other fields are ignored.</p>
<p>Note: offsets do not necessarily represent physical offsets, and could be any marker, that enables the implementation to find a specific point in the directory stream.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">buf</td><td>the point where the new entry will be added to the buffer </td></tr>
<tr><td class="paramname">bufsize</td><td>remaining size of the buffer </td></tr>
<tr><td class="paramname">name</td><td>the name of the entry </td></tr>
<tr><td class="paramname">stbuf</td><td>the file attributes </td></tr>
<tr><td class="paramname">off</td><td>the offset of the next entry </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the space needed for the entry </dd></dl>
</div>
</div>
<a class="anchor" id="ab2018fab0f56f1b15f6e5fd9ff63641c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t fuse_chan_bufsize </td>
<td>(</td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the minimal receive buffer size</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ch</td><td>the channel </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the buffer size passed to <a class="el" href="fuse__lowlevel_8h.html#a0a9a9cd6bffbd37ee1971b3dfe183140">fuse_chan_new()</a> </dd></dl>
</div>
</div>
<a class="anchor" id="a50696378a60c9b5daea8de2fbcf1dc5d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* fuse_chan_data </td>
<td>(</td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the user data</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ch</td><td>the channel </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the user data passed to <a class="el" href="fuse__lowlevel_8h.html#a0a9a9cd6bffbd37ee1971b3dfe183140">fuse_chan_new()</a> </dd></dl>
</div>
</div>
<a class="anchor" id="a7a88655f900be214db61844337879fa5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fuse_chan_destroy </td>
<td>(</td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroy a channel</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ch</td><td>the channel </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="aed5405bd1725a4da8610ce1a1fe49307"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_chan_fd </td>
<td>(</td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the file descriptor of the channel</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ch</td><td>the channel </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the file descriptor passed to <a class="el" href="fuse__lowlevel_8h.html#a0a9a9cd6bffbd37ee1971b3dfe183140">fuse_chan_new()</a> </dd></dl>
</div>
</div>
<a class="anchor" id="a0a9a9cd6bffbd37ee1971b3dfe183140"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct fuse_chan* fuse_chan_new </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structfuse__chan__ops.html">fuse_chan_ops</a> *&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>fd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>bufsize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new channel</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">op</td><td>channel operations </td></tr>
<tr><td class="paramname">fd</td><td>file descriptor of the channel </td></tr>
<tr><td class="paramname">bufsize</td><td>the minimal receive buffer size </td></tr>
<tr><td class="paramname">data</td><td>user data </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the new channel object, or NULL on failure </dd></dl>
</div>
</div>
<a class="anchor" id="afa1748ec47595b3ab7be93ad29e55fcb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_chan_recv </td>
<td>(</td>
<td class="paramtype">struct fuse_chan **&#160;</td>
<td class="paramname"><em>ch</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Receive a raw request</p>
<p>A return value of -ENODEV means, that the filesystem was unmounted</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ch</td><td>pointer to the channel </td></tr>
<tr><td class="paramname">buf</td><td>the buffer to store the request in </td></tr>
<tr><td class="paramname">size</td><td>the size of the buffer </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the actual size of the raw request, or -errno on error </dd></dl>
</div>
</div>
<a class="anchor" id="ad53f74694d7c8605d956d48ab04b55e9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_chan_send </td>
<td>(</td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct iovec&#160;</td>
<td class="paramname"><em>iov</em>[], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a raw reply</p>
<p>A return value of -ENOENT means, that the request was interrupted, and the reply was discarded</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ch</td><td>the channel </td></tr>
<tr><td class="paramname">iov</td><td>vector of blocks </td></tr>
<tr><td class="paramname">count</td><td>the number of blocks in vector </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero on success, -errno on failure </dd></dl>
</div>
</div>
<a class="anchor" id="a0d0c57c5be8fe4884c10270fcaad4710"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct fuse_session* fuse_chan_session </td>
<td>(</td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the session to which this channel is assigned</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ch</td><td>the channel </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the session, or NULL if the channel is not assigned </dd></dl>
</div>
</div>
<a class="anchor" id="ab71e91777def283987cd8a504e926d01"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct fuse_session* fuse_lowlevel_new </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structfuse__args.html">fuse_args</a> *&#160;</td>
<td class="paramname"><em>args</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct <a class="el" href="structfuse__lowlevel__ops.html">fuse_lowlevel_ops</a> *&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>op_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>userdata</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a low level session</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">args</td><td>argument vector </td></tr>
<tr><td class="paramname">op</td><td>the low level filesystem operations </td></tr>
<tr><td class="paramname">op_size</td><td>sizeof(struct fuse_lowlevel_ops) </td></tr>
<tr><td class="paramname">userdata</td><td>user data </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the created session object, or NULL on failure </dd></dl>
</div>
</div>
<a class="anchor" id="a94893b3eb83fe2a218e80e43089670a1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_lowlevel_notify_delete </td>
<td>(</td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a>&#160;</td>
<td class="paramname"><em>parent</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a>&#160;</td>
<td class="paramname"><em>child</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>namelen</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Notify to invalidate parent attributes and delete the dentry matching parent/name if the dentry's inode number matches child (otherwise it will invalidate the matching dentry).</p>
<p>To avoid a deadlock don't call this function from a filesystem operation and don't call it with a lock held that can also be held by a filesystem operation.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ch</td><td>the channel through which to send the notification </td></tr>
<tr><td class="paramname">parent</td><td>inode number </td></tr>
<tr><td class="paramname">child</td><td>inode number </td></tr>
<tr><td class="paramname">name</td><td>file name </td></tr>
<tr><td class="paramname">namelen</td><td>strlen() of file name </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure </dd></dl>
</div>
</div>
<a class="anchor" id="ac250195a1e88bb7c1d10340558b30c8f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_lowlevel_notify_inval_entry </td>
<td>(</td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a>&#160;</td>
<td class="paramname"><em>parent</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>namelen</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Notify to invalidate parent attributes and the dentry matching parent/name</p>
<p>To avoid a deadlock don't call this function from a filesystem operation and don't call it with a lock held that can also be held by a filesystem operation.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ch</td><td>the channel through which to send the invalidation </td></tr>
<tr><td class="paramname">parent</td><td>inode number </td></tr>
<tr><td class="paramname">name</td><td>file name </td></tr>
<tr><td class="paramname">namelen</td><td>strlen() of file name </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure </dd></dl>
</div>
</div>
<a class="anchor" id="a05b0e5326257af22062d90809801b730"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_lowlevel_notify_inval_inode </td>
<td>(</td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a>&#160;</td>
<td class="paramname"><em>ino</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">off_t&#160;</td>
<td class="paramname"><em>off</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">off_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Notify to invalidate cache for an inode</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ch</td><td>the channel through which to send the invalidation </td></tr>
<tr><td class="paramname">ino</td><td>the inode number </td></tr>
<tr><td class="paramname">off</td><td>the offset in the inode where to start invalidating or negative to invalidate attributes only </td></tr>
<tr><td class="paramname">len</td><td>the amount of cache to invalidate or 0 for all </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure </dd></dl>
</div>
</div>
<a class="anchor" id="ab078685b1f480188031fc40aa2e2fbca"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_lowlevel_notify_poll </td>
<td>(</td>
<td class="paramtype">struct fuse_pollhandle *&#160;</td>
<td class="paramname"><em>ph</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Notify IO readiness event</p>
<p>For more information, please read comment for poll operation.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ph</td><td>poll handle to notify IO readiness event for </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a8b2a260132708b581b00e1066b43faa8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_lowlevel_notify_retrieve </td>
<td>(</td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a>&#160;</td>
<td class="paramname"><em>ino</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">off_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>cookie</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve data from the kernel buffers</p>
<p>Retrieve data in the kernel buffers belonging to the given inode. If successful then the retrieve_reply() method will be called with the returned data.</p>
<p>Only present pages are returned in the retrieve reply. Retrieving stops when it finds a non-present page and only data prior to that is returned.</p>
<p>If this function returns an error, then the retrieve will not be completed and no reply will be sent.</p>
<p>This function doesn't change the dirty state of pages in the kernel buffer. For dirty pages the write() method will be called regardless of having been retrieved previously.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ch</td><td>the channel through which to send the invalidation </td></tr>
<tr><td class="paramname">ino</td><td>the inode number </td></tr>
<tr><td class="paramname">size</td><td>the number of bytes to retrieve </td></tr>
<tr><td class="paramname">offset</td><td>the starting offset into the file to retrieve from </td></tr>
<tr><td class="paramname">cookie</td><td>user data to supply to the reply callback </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure </dd></dl>
</div>
</div>
<a class="anchor" id="a4d12f831402f7f25de8bef2d2a82f402"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_lowlevel_notify_store </td>
<td>(</td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#ab419149c707451eaf61b75afb852e016">fuse_ino_t</a>&#160;</td>
<td class="paramname"><em>ino</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">off_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structfuse__bufvec.html">fuse_bufvec</a> *&#160;</td>
<td class="paramname"><em>bufv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">enum <a class="el" href="fuse__common_8h.html#aec0ad71a3e8c357ebe7e87cdecbdbe18">fuse_buf_copy_flags</a>&#160;</td>
<td class="paramname"><em>flags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Store data to the kernel buffers</p>
<p>Synchronously store data in the kernel buffers belonging to the given inode. The stored data is marked up-to-date (no read will be performed against it, unless it's invalidated or evicted from the cache).</p>
<p>If the stored data overflows the current file size, then the size is extended, similarly to a write(2) on the filesystem.</p>
<p>If this function returns an error, then the store wasn't fully completed, but it may have been partially completed.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ch</td><td>the channel through which to send the invalidation </td></tr>
<tr><td class="paramname">ino</td><td>the inode number </td></tr>
<tr><td class="paramname">offset</td><td>the starting offset into the file to store to </td></tr>
<tr><td class="paramname">bufv</td><td>buffer vector </td></tr>
<tr><td class="paramname">flags</td><td>flags controlling the copy </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure </dd></dl>
</div>
</div>
<a class="anchor" id="ad28378dc569019c32acdb4995d70be18"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_attr </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct stat *&#160;</td>
<td class="paramname"><em>attr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>attr_timeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with attributes</p>
<p>Possible requests: getattr, setattr</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">attr</td><td>the attributes </td></tr>
<tr><td class="paramname">attr_timeout</td><td>validity timeout (in seconds) for the attributes </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="a65431e8196e0533257acad767f7b074f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_bmap </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>idx</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with block index</p>
<p>Possible requests: bmap</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">idx</td><td>block index within device </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="a300a88b63ab7c8ca92853a97486448c0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_buf </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with data</p>
<p>Possible requests: read, readdir, getxattr, listxattr</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">buf</td><td>buffer containing data </td></tr>
<tr><td class="paramname">size</td><td>the size of data in bytes </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="abea78d22349198f8370d7cb91fbf05ed"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_create </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct <a class="el" href="structfuse__entry__param.html">fuse_entry_param</a> *&#160;</td>
<td class="paramname"><em>e</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct <a class="el" href="structfuse__file__info.html">fuse_file_info</a> *&#160;</td>
<td class="paramname"><em>fi</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with a directory entry and open parameters</p>
<p>currently the following members of 'fi' are used: fh, direct_io, keep_cache</p>
<p>Possible requests: create</p>
<p>Side effects: increments the lookup count on success</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">e</td><td>the entry parameters </td></tr>
<tr><td class="paramname">fi</td><td>file information </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="a1242694fe0fb6e253a88b57795987302"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_data </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structfuse__bufvec.html">fuse_bufvec</a> *&#160;</td>
<td class="paramname"><em>bufv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">enum <a class="el" href="fuse__common_8h.html#aec0ad71a3e8c357ebe7e87cdecbdbe18">fuse_buf_copy_flags</a>&#160;</td>
<td class="paramname"><em>flags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with data copied/moved from buffer(s)</p>
<p>Possible requests: read, readdir, getxattr, listxattr</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">bufv</td><td>buffer vector </td></tr>
<tr><td class="paramname">flags</td><td>flags controlling the copy </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="a672c45e126cd240f4bcd59bf9b7e3708"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_entry </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct <a class="el" href="structfuse__entry__param.html">fuse_entry_param</a> *&#160;</td>
<td class="paramname"><em>e</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with a directory entry</p>
<p>Possible requests: lookup, mknod, mkdir, symlink, link</p>
<p>Side effects: increments the lookup count on success</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">e</td><td>the entry parameters </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="a2553c03f9a63c75e609e67f90a3a5d88"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_err </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>err</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with an error code or success</p>
<p>Possible requests: all except forget</p>
<p>unlink, rmdir, rename, flush, release, fsync, fsyncdir, setxattr, removexattr and setlk may send a zero code</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">err</td><td>the positive error value, or zero for success </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="adf7f34f470c04f276b7091ad3b3dcb31"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_ioctl </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply to finish ioctl</p>
<p>Possible requests: ioctl</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">result</td><td>result to be passed to the caller </td></tr>
<tr><td class="paramname">buf</td><td>buffer containing output data </td></tr>
<tr><td class="paramname">size</td><td>length of output data </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a37381eb84c39e5fe3af9f3ef507aeeb7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_ioctl_iov </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct iovec *&#160;</td>
<td class="paramname"><em>iov</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply to finish ioctl with iov buffer</p>
<p>Possible requests: ioctl</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">result</td><td>result to be passed to the caller </td></tr>
<tr><td class="paramname">iov</td><td>the vector containing the data </td></tr>
<tr><td class="paramname">count</td><td>the size of vector </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a940683d07df12c24f56b4363aed90e4d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_ioctl_retry </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct iovec *&#160;</td>
<td class="paramname"><em>in_iov</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>in_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct iovec *&#160;</td>
<td class="paramname"><em>out_iov</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>out_count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply to ask for data fetch and output buffer preparation. ioctl will be retried with the specified input data fetched and output buffer prepared.</p>
<p>Possible requests: ioctl</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">in_iov</td><td>iovec specifying data to fetch from the caller </td></tr>
<tr><td class="paramname">in_count</td><td>number of entries in in_iov </td></tr>
<tr><td class="paramname">out_iov</td><td>iovec specifying addresses to write output to </td></tr>
<tr><td class="paramname">out_count</td><td>number of entries in out_iov </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="a5fbbf591a55f09c02cd54d34bdbfe0e9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_iov </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct iovec *&#160;</td>
<td class="paramname"><em>iov</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with data vector</p>
<p>Possible requests: read, readdir, getxattr, listxattr</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">iov</td><td>the vector containing the data </td></tr>
<tr><td class="paramname">count</td><td>the size of vector </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="a135eda9b7d36fb4eaae2de58526d4f85"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_lock </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct flock *&#160;</td>
<td class="paramname"><em>lock</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with file lock information</p>
<p>Possible requests: getlk</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">lock</td><td>the lock information </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="a85ae91390a6704dc26f8d80fed7d5678"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fuse_reply_none </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Don't send reply</p>
<p>Possible requests: forget</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a170f8c6b953d70928e83bcecee43bfdc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_open </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct <a class="el" href="structfuse__file__info.html">fuse_file_info</a> *&#160;</td>
<td class="paramname"><em>fi</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with open parameters</p>
<p>currently the following members of 'fi' are used: fh, direct_io, keep_cache</p>
<p>Possible requests: open, opendir</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">fi</td><td>file information </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="a2172d260d34c76c25cd601870aee4220"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_poll </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>revents</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with poll result event mask</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">revents</td><td>poll result event mask </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a5a5872d7f73f0bd593e00788a4c7bbb7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_readlink </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>link</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with the contents of a symbolic link</p>
<p>Possible requests: readlink</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">link</td><td>symbolic link contents </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="aa1d95ec3ca674253baac3639ea10f0ff"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_statfs </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct statvfs *&#160;</td>
<td class="paramname"><em>stbuf</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with filesystem statistics</p>
<p>Possible requests: statfs</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">stbuf</td><td>filesystem statistics </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="aa3cfa73f61d6ef461ab5a3fbf859eb97"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_write </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with number of bytes written</p>
<p>Possible requests: write</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">count</td><td>the number of bytes written </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="afed32e5d3e1f54d390103f79ebb8bd42"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_reply_xattr </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reply with needed buffer size</p>
<p>Possible requests: getxattr, listxattr</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">count</td><td>the buffer size needed in bytes </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero for success, -errno for failure to send reply </dd></dl>
</div>
</div>
<a class="anchor" id="ad1d1963190eb93ae5667d32d2b387ca1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const struct <a class="el" href="structfuse__ctx.html">fuse_ctx</a>* fuse_req_ctx </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the context from the request</p>
<p>The pointer returned by this function will only be valid for the request's lifetime</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the context structure </dd></dl>
</div>
</div>
<a class="anchor" id="a57f4dabcf044aafcdba6c4682b3a1869"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_req_getgroups </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">gid_t&#160;</td>
<td class="paramname"><em>list</em>[]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the current supplementary group IDs for the specified request</p>
<p>Similar to the getgroups(2) system call, except the return value is always the total number of group IDs, even if it is larger than the specified size.</p>
<p>The current fuse kernel module in linux (as of 2.6.30) doesn't pass the group list to userspace, hence this function needs to parse "/proc/$TID/task/$TID/status" to get the group IDs.</p>
<p>This feature may not be supported on all operating systems. In such a case this function will return -ENOSYS.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">size</td><td>size of given array </td></tr>
<tr><td class="paramname">list</td><td>array of group IDs to be filled in </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the total number of supplementary group IDs or -errno on failure </dd></dl>
</div>
</div>
<a class="anchor" id="ab3cdb9744f033e37a72984489343940f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fuse_req_interrupt_func </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a5bb8b555b1d9d8a38b8c6cac28d51f1e">fuse_interrupt_func_t</a>&#160;</td>
<td class="paramname"><em>func</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Register/unregister callback for an interrupt</p>
<p>If an interrupt has already happened, then the callback function is called from within this function, hence it's not possible for interrupts to be lost.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
<tr><td class="paramname">func</td><td>the callback function or NULL for unregister </td></tr>
<tr><td class="paramname">data</td><td>user data passed to the callback function </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a52674fc627647f33e63c74267f0f1f9d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_req_interrupted </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Check if a request has already been interrupted</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 if the request has been interrupted, 0 otherwise </dd></dl>
</div>
</div>
<a class="anchor" id="aab00273c65d124e44abcf2374f9c504b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* fuse_req_userdata </td>
<td>(</td>
<td class="paramtype"><a class="el" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a>&#160;</td>
<td class="paramname"><em>req</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the userdata from the request</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">req</td><td>request handle </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the user data passed to <a class="el" href="fuse__lowlevel_8h.html#ab71e91777def283987cd8a504e926d01">fuse_lowlevel_new()</a> </dd></dl>
</div>
</div>
<a class="anchor" id="adcc40a021ee1a21752e3c622f3d3692d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fuse_session_add_chan </td>
<td>(</td>
<td class="paramtype">struct fuse_session *&#160;</td>
<td class="paramname"><em>se</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Assign a channel to a session</p>
<p>Note: currently only a single channel may be assigned. This may change in the future</p>
<p>If a session is destroyed, the assigned channel is also destroyed</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">se</td><td>the session </td></tr>
<tr><td class="paramname">ch</td><td>the channel </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ac58f69b8c0f7e9fbd45280fb1d68d9f5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* fuse_session_data </td>
<td>(</td>
<td class="paramtype">struct fuse_session *&#160;</td>
<td class="paramname"><em>se</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the user data provided to the session</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">se</td><td>the session </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the user data </dd></dl>
</div>
</div>
<a class="anchor" id="a08b5503c4e9656f9c4bc88331233cc65"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fuse_session_destroy </td>
<td>(</td>
<td class="paramtype">struct fuse_session *&#160;</td>
<td class="paramname"><em>se</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroy a session</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">se</td><td>the session </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a198429f3fbc23ef29ef9971271827690"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fuse_session_exit </td>
<td>(</td>
<td class="paramtype">struct fuse_session *&#160;</td>
<td class="paramname"><em>se</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Exit a session</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">se</td><td>the session </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a41b12193fa1520ff658d65679f4e513c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_session_exited </td>
<td>(</td>
<td class="paramtype">struct fuse_session *&#160;</td>
<td class="paramname"><em>se</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the exited status of a session</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">se</td><td>the session </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 if exited, 0 if not exited </dd></dl>
</div>
</div>
<a class="anchor" id="a5f1e538aa3287e251afbe985438c4249"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_session_loop </td>
<td>(</td>
<td class="paramtype">struct fuse_session *&#160;</td>
<td class="paramname"><em>se</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Enter a single threaded event loop</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">se</td><td>the session </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 on error </dd></dl>
</div>
</div>
<a class="anchor" id="afeffdee79e361c96b10ce798c56ed2cc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_session_loop_mt </td>
<td>(</td>
<td class="paramtype">struct fuse_session *&#160;</td>
<td class="paramname"><em>se</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Enter a multi-threaded event loop</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">se</td><td>the session </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 on error </dd></dl>
</div>
</div>
<a class="anchor" id="a28b7d09c6e87e3e375743c2ef6e06f0f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct fuse_session* fuse_session_new </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structfuse__session__ops.html">fuse_session_ops</a> *&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new session</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">op</td><td>session operations </td></tr>
<tr><td class="paramname">data</td><td>user data </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>new session object, or NULL on failure </dd></dl>
</div>
</div>
<a class="anchor" id="a8a6664baeee7a580928f959fd4968d5c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct fuse_chan* fuse_session_next_chan </td>
<td>(</td>
<td class="paramtype">struct fuse_session *&#160;</td>
<td class="paramname"><em>se</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Iterate over the channels assigned to a session</p>
<p>The iterating function needs to start with a NULL channel, and after that needs to pass the previously returned channel to the function.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">se</td><td>the session </td></tr>
<tr><td class="paramname">ch</td><td>the previous channel, or NULL </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the next channel, or NULL if no more channels exist </dd></dl>
</div>
</div>
<a class="anchor" id="a210cb96700171ccbb5fe84a42b4613d8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fuse_session_process </td>
<td>(</td>
<td class="paramtype">struct fuse_session *&#160;</td>
<td class="paramname"><em>se</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Process a raw request</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">se</td><td>the session </td></tr>
<tr><td class="paramname">buf</td><td>buffer containing the raw request </td></tr>
<tr><td class="paramname">len</td><td>request length </td></tr>
<tr><td class="paramname">ch</td><td>channel on which the request was received </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a58da9b49939ed7e60c906d99bbf7b21a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fuse_session_process_buf </td>
<td>(</td>
<td class="paramtype">struct fuse_session *&#160;</td>
<td class="paramname"><em>se</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct <a class="el" href="structfuse__buf.html">fuse_buf</a> *&#160;</td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Process a raw request supplied in a generic buffer</p>
<p>This is a more generic version of <a class="el" href="fuse__lowlevel_8h.html#a210cb96700171ccbb5fe84a42b4613d8">fuse_session_process()</a>. The <a class="el" href="structfuse__buf.html">fuse_buf</a> may contain a memory buffer or a pipe file descriptor.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">se</td><td>the session </td></tr>
<tr><td class="paramname">buf</td><td>the <a class="el" href="structfuse__buf.html">fuse_buf</a> containing the request </td></tr>
<tr><td class="paramname">ch</td><td>channel on which the request was received </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a7f7f424f58729d08af8ab7be91d93478"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fuse_session_receive_buf </td>
<td>(</td>
<td class="paramtype">struct fuse_session *&#160;</td>
<td class="paramname"><em>se</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structfuse__buf.html">fuse_buf</a> *&#160;</td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct fuse_chan **&#160;</td>
<td class="paramname"><em>chp</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Receive a raw request supplied in a generic buffer</p>
<p>This is a more generic version of <a class="el" href="fuse__lowlevel_8h.html#afa1748ec47595b3ab7be93ad29e55fcb">fuse_chan_recv()</a>. The <a class="el" href="structfuse__buf.html">fuse_buf</a> supplied to this function contains a suitably allocated memory buffer. This may be overwritten with a file descriptor buffer.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">se</td><td>the session </td></tr>
<tr><td class="paramname">buf</td><td>the <a class="el" href="structfuse__buf.html">fuse_buf</a> to store the request in </td></tr>
<tr><td class="paramname">chp</td><td>pointer to the channel </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the actual size of the raw request, or -errno on error </dd></dl>
</div>
</div>
<a class="anchor" id="a93cb94614503b2249d15629c447dddb9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fuse_session_remove_chan </td>
<td>(</td>
<td class="paramtype">struct fuse_chan *&#160;</td>
<td class="paramname"><em>ch</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove a channel from a session</p>
<p>If the channel is not assigned to a session, then this is a no-op</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ch</td><td>the channel to remove </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ab3d015de77ae0edeb3157321e7a5c434"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fuse_session_reset </td>
<td>(</td>
<td class="paramtype">struct fuse_session *&#160;</td>
<td class="paramname"><em>se</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reset the exited status of a session</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">se</td><td>the session </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Apr 23 2016 09:43:20 for fuse by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.8
</small></address>
</body>
</html>