sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget&/translations/zh_CN/filesystems/splicemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/zh_TW/filesystems/splicemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/it_IT/filesystems/splicemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ja_JP/filesystems/splicemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ko_KR/filesystems/splicemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/sp_SP/filesystems/splicemodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hsplice and pipesh]hsplice and pipes}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhh@/var/lib/git/docbuild/linux/Documentation/filesystems/splice.rsthKubh)}(hhh](h)}(h splice APIh]h splice API}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hsplice is a method for moving blocks of data around inside the kernel, without continually transferring them between the kernel and user space.h]hsplice is a method for moving blocks of data around inside the kernel, without continually transferring them between the kernel and user space.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlesplice_to_pipe (C function)c.splice_to_pipehNtauh1hhhhhhNhNubhdesc)}(hhh](hdesc_signature)}(hSssize_t splice_to_pipe (struct pipe_inode_info *pipe, struct splice_pipe_desc *spd)h]hdesc_signature_line)}(hRssize_t splice_to_pipe(struct pipe_inode_info *pipe, struct splice_pipe_desc *spd)h](h)}(hhh]h desc_sig_name)}(hssize_th]hssize_t}(hhhhhNhNubah}(h]h ]nah"]h$]h&]uh1hhhubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jsplice_to_pipesbc.splice_to_pipeasbuh1hhhhhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chKubhdesc_sig_space)}(h h]h }(hj-hhhNhNubah}(h]h ]wah"]h$]h&]uh1j+hhhhhj*hKubh desc_name)}(hsplice_to_pipeh]h)}(hj'h]hsplice_to_pipe}(hjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj>ubah}(h]h ](sig-namedescnameeh"]h$]h&] xml:spacepreserveuh1j<hhhhhj*hKubhdesc_parameterlist)}(h<(struct pipe_inode_info *pipe, struct splice_pipe_desc *spd)h](hdesc_parameter)}(hstruct pipe_inode_info *pipeh](hdesc_sig_keyword)}(hstructh]hstruct}(hjghhhNhNubah}(h]h ]kah"]h$]h&]uh1jehjaubj,)}(h h]h }(hjvhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjaubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]j%c.splice_to_pipeasbuh1hhjaubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjaubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjaubh)}(hpipeh]hpipe}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjaubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj[ubj`)}(hstruct splice_pipe_desc *spdh](jf)}(hjih]hstruct}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hhh]h)}(hsplice_pipe_desch]hsplice_pipe_desc}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]j%c.splice_to_pipeasbuh1hhjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hspdh]hspd}(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj[ubeh}(h]h ]h"]h$]h&]jWjXuh1jYhhhhhj*hKubeh}(h]h ]h"]h$]h&]jWjX add_permalinkuh1hsphinx_line_type declaratorhhhhhj*hKubah}(h]hah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1hhj*hKhhhhubh desc_content)}(hhh]h)}(hfill passed data into a pipeh]hfill passed data into a pipe}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chKhjehhubah}(h]h ]h"]h$]h&]uh1jchhhhhj*hKubeh}(h]h ](jfunctioneh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1hhhhhhNhNubh container)}(hX8**Parameters** ``struct pipe_inode_info *pipe`` pipe to fill ``struct splice_pipe_desc *spd`` data to fill **Description** **spd** contains a map of pages and len/offset tuples, along with the struct pipe_buf_operations associated with these pages. This function will link that data to the pipe.h](h)}(h**Parameters**h]hstrong)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chKhjubhdefinition_list)}(hhh](hdefinition_list_item)}(h.``struct pipe_inode_info *pipe`` pipe to fill h](hterm)}(h ``struct pipe_inode_info *pipe``h]hliteral)}(hjh]hstruct pipe_inode_info *pipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chKhjubh definition)}(hhh]h)}(h pipe to fillh]h pipe to fill}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h.``struct splice_pipe_desc *spd`` data to fill h](j)}(h ``struct splice_pipe_desc *spd``h]j)}(hjh]hstruct splice_pipe_desc *spd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chKhjubj)}(hhh]h)}(h data to fillh]h data to fill}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj1h]h Description}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chKhjubh block_quote)}(h**spd** contains a map of pages and len/offset tuples, along with the struct pipe_buf_operations associated with these pages. This function will link that data to the pipe.h]h)}(h**spd** contains a map of pages and len/offset tuples, along with the struct pipe_buf_operations associated with these pages. This function will link that data to the pipe.h](j)}(h**spd**h]hspd}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubh contains a map of pages and len/offset tuples, along with the struct pipe_buf_operations associated with these pages. This function will link that data to the pipe.}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chKhjIubah}(h]h ]h"]h$]h&]uh1jGhjihKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hcopy_splice_read (C function)c.copy_splice_readhNtauh1hhhhhhNhNubh)}(hhh](h)}(hvssize_t copy_splice_read (struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)h]h)}(hussize_t copy_splice_read(struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)h](h)}(hhh]h)}(hssize_th]hssize_t}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]j$)}jcopy_splice_readsbc.copy_splice_readasbuh1hhjhhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM?ubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjhhhjhM?ubj=)}(hcopy_splice_readh]h)}(hjh]hcopy_splice_read}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjhhhjhM?ubjZ)}(h](struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)h](j`)}(hstruct file *inh](jf)}(hjih]hstruct}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hhh]h)}(hfileh]hfile}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]jc.copy_splice_readasbuh1hhjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hinh]hin}(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(h loff_t *pposh](h)}(hhh]h)}(hloff_th]hloff_t}(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjRubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjWmodnameN classnameNjj)}j!]jc.copy_splice_readasbuh1hhjNubj,)}(h h]h }(hjshhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjNubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubh)}(hpposh]hppos}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjNubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]jc.copy_splice_readasbuh1hhjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hpipeh]hpipe}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(h size_t lenh](h)}(hhh]h)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]jc.copy_splice_readasbuh1hhjubj,)}(h h]h }(hj8hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hlenh]hlen}(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(hunsigned int flagsh](hdesc_sig_keyword_type)}(hunsignedh]hunsigned}(hjahhhNhNubah}(h]h ]ktah"]h$]h&]uh1j_hj[ubj,)}(h h]h }(hjphhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj[ubj`)}(hinth]hint}(hj~hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj[ubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj[ubh)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj[ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubeh}(h]h ]h"]h$]h&]jWjXuh1jYhjhhhjhM?ubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjhhhjhM?ubah}(h]jah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhjhM?hjhhubjd)}(hhh]h)}(h5Copy data from a file and splice the copy into a pipeh]h5Copy data from a file and splice the copy into a pipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM,hjhhubah}(h]h ]h"]h$]h&]uh1jchjhhhjhM?ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct file *in`` The file to read from ``loff_t *ppos`` Pointer to the file position to read from ``struct pipe_inode_info *pipe`` The pipe to splice into ``size_t len`` The amount to splice ``unsigned int flags`` The SPLICE_F_* flags **Description** This function allocates a bunch of pages sufficient to hold the requested amount of data (but limited by the remaining pipe capacity), passes it to the file's ->read_iter() to read into and then splices the used pages into the pipe. **Return** On success, the number of bytes read will be returned and ***ppos** will be updated if appropriate; 0 will be returned if there is no more data to be read; -EAGAIN will be returned if the pipe had no space, and some other negative error code will be returned on error. A short read may occur if the pipe has insufficient space, we reach the end of the data or we hit a hole.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM0hjubj)}(hhh](j)}(h*``struct file *in`` The file to read from h](j)}(h``struct file *in``h]j)}(hjh]hstruct file *in}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM-hjubj)}(hhh]h)}(hThe file to read fromh]hThe file to read from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM-hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM-hjubj)}(h;``loff_t *ppos`` Pointer to the file position to read from h](j)}(h``loff_t *ppos``h]j)}(hj>h]h loff_t *ppos}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM.hj8ubj)}(hhh]h)}(h)Pointer to the file position to read fromh]h)Pointer to the file position to read from}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShM.hjTubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhjShM.hjubj)}(h9``struct pipe_inode_info *pipe`` The pipe to splice into h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjwh]hstruct pipe_inode_info *pipe}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM/hjqubj)}(hhh]h)}(hThe pipe to splice intoh]hThe pipe to splice into}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM/hjubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1jhjhM/hjubj)}(h$``size_t len`` The amount to splice h](j)}(h``size_t len``h]j)}(hjh]h size_t len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM0hjubj)}(hhh]h)}(hThe amount to spliceh]hThe amount to splice}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM0hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM0hjubj)}(h,``unsigned int flags`` The SPLICE_F_* flags h](j)}(h``unsigned int flags``h]j)}(hjh]hunsigned int flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM1hjubj)}(hhh]h)}(hThe SPLICE_F_* flagsh]hThe SPLICE_F_* flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM1hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM1hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj$h]h Description}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM3hjubh)}(hThis function allocates a bunch of pages sufficient to hold the requested amount of data (but limited by the remaining pipe capacity), passes it to the file's ->read_iter() to read into and then splices the used pages into the pipe.h]hThis function allocates a bunch of pages sufficient to hold the requested amount of data (but limited by the remaining pipe capacity), passes it to the file’s ->read_iter() to read into and then splices the used pages into the pipe.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM3hjubh)}(h **Return**h]j)}(hjKh]hReturn}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM8hjubh)}(hXwOn success, the number of bytes read will be returned and ***ppos** will be updated if appropriate; 0 will be returned if there is no more data to be read; -EAGAIN will be returned if the pipe had no space, and some other negative error code will be returned on error. A short read may occur if the pipe has insufficient space, we reach the end of the data or we hit a hole.h](h:On success, the number of bytes read will be returned and }(hjahhhNhNubj)}(h ***ppos**h]h*ppos}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubhX4 will be updated if appropriate; 0 will be returned if there is no more data to be read; -EAGAIN will be returned if the pipe had no space, and some other negative error code will be returned on error. A short read may occur if the pipe has insufficient space, we reach the end of the data or we hit a hole.}(hjahhhNhNubeh}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM8hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h"splice_from_pipe_feed (C function)c.splice_from_pipe_feedhNtauh1hhhhhhNhNubh)}(hhh](h)}(heint splice_from_pipe_feed (struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)h]h)}(hdint splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)h](j`)}(hinth]hint}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjhhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjhhhjhMubj=)}(hsplice_from_pipe_feedh]h)}(hsplice_from_pipe_feedh]hsplice_from_pipe_feed}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjhhhjhMubjZ)}(hK(struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]j$)}jjsbc.splice_from_pipe_feedasbuh1hhjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj)}(hjh]h*}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hpipeh]hpipe}(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(hstruct splice_desc *sdh](jf)}(hjih]hstruct}(hjQhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjMubj,)}(h h]h }(hj^hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjMubh)}(hhh]h)}(h splice_desch]h splice_desc}(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjlubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjqmodnameN classnameNjj)}j!]jc.splice_from_pipe_feedasbuh1hhjMubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubh)}(hsdh]hsd}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjMubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(hsplice_actor *actorh](h)}(hhh]h)}(h splice_actorh]h splice_actor}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]jc.splice_from_pipe_feedasbuh1hhjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hactorh]hactor}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubeh}(h]h ]h"]h$]h&]jWjXuh1jYhjhhhjhMubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjhhhjhMubah}(h]jah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhjhMhjhhubjd)}(hhh]h)}(h)feed available data from a pipe to a fileh]h)feed available data from a pipe to a file}(hj' hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj$ hhubah}(h]h ]h"]h$]h&]uh1jchjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj? jj? jjjuh1hhhhhhNhNubj)}(hX\**Parameters** ``struct pipe_inode_info *pipe`` pipe to splice from ``struct splice_desc *sd`` information to **actor** ``splice_actor *actor`` handler that splices the data **Description** This function loops over the pipe and calls **actor** to do the actual moving of a single struct pipe_buffer to the desired destination. It returns when there's no more buffers left in the pipe or if the requested number of bytes (**sd->total_len**) have been copied. It returns a positive number (one) if the pipe needs to be filled with more data, zero if the required number of bytes have been copied and -errno on error. This, together with splice_from_pipe_{begin,end,next}, may be used to implement the functionality of __splice_from_pipe() when locking is required around copying the pipe buffers to the destination.h](h)}(h**Parameters**h]j)}(hjI h]h Parameters}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjC ubj)}(hhh](j)}(h5``struct pipe_inode_info *pipe`` pipe to splice from h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjh h]hstruct pipe_inode_info *pipe}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjf ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjb ubj)}(hhh]h)}(hpipe to splice fromh]hpipe to splice from}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj} hMhj~ ubah}(h]h ]h"]h$]h&]uh1jhjb ubeh}(h]h ]h"]h$]h&]uh1jhj} hMhj_ ubj)}(h4``struct splice_desc *sd`` information to **actor** h](j)}(h``struct splice_desc *sd``h]j)}(hj h]hstruct splice_desc *sd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj ubj)}(hhh]h)}(hinformation to **actor**h](hinformation to }(hj hhhNhNubj)}(h **actor**h]hactor}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj_ ubj)}(h6``splice_actor *actor`` handler that splices the data h](j)}(h``splice_actor *actor``h]j)}(hj h]hsplice_actor *actor}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj ubj)}(hhh]h)}(hhandler that splices the datah]hhandler that splices the data}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj_ ubeh}(h]h ]h"]h$]h&]uh1jhjC ubh)}(h**Description**h]j)}(hj# h]h Description}(hj% hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj! ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjC ubjH)}(hXrThis function loops over the pipe and calls **actor** to do the actual moving of a single struct pipe_buffer to the desired destination. It returns when there's no more buffers left in the pipe or if the requested number of bytes (**sd->total_len**) have been copied. It returns a positive number (one) if the pipe needs to be filled with more data, zero if the required number of bytes have been copied and -errno on error. This, together with splice_from_pipe_{begin,end,next}, may be used to implement the functionality of __splice_from_pipe() when locking is required around copying the pipe buffers to the destination.h](h)}(hXThis function loops over the pipe and calls **actor** to do the actual moving of a single struct pipe_buffer to the desired destination. It returns when there's no more buffers left in the pipe or if the requested number of bytes (**sd->total_len**) have been copied. It returns a positive number (one) if the pipe needs to be filled with more data, zero if the required number of bytes have been copied and -errno on error.h](h,This function loops over the pipe and calls }(hj= hhhNhNubj)}(h **actor**h]hactor}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj= ubh to do the actual moving of a single struct pipe_buffer to the desired destination. It returns when there’s no more buffers left in the pipe or if the requested number of bytes (}(hj= hhhNhNubj)}(h**sd->total_len**h]h sd->total_len}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj= ubh) have been copied. It returns a positive number (one) if the pipe needs to be filled with more data, zero if the required number of bytes have been copied and -errno on error.}(hj= hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj9 ubh)}(hThis, together with splice_from_pipe_{begin,end,next}, may be used to implement the functionality of __splice_from_pipe() when locking is required around copying the pipe buffers to the destination.h]hThis, together with splice_from_pipe_{begin,end,next}, may be used to implement the functionality of __splice_from_pipe() when locking is required around copying the pipe buffers to the destination.}(hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj9 ubeh}(h]h ]h"]h$]h&]uh1jGhjo hMhjC ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h"splice_from_pipe_next (C function)c.splice_from_pipe_nexthNtauh1hhhhhhNhNubh)}(hhh](h)}(hPint splice_from_pipe_next (struct pipe_inode_info *pipe, struct splice_desc *sd)h]h)}(hOint splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)h](j`)}(hinth]hint}(hj hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj hhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMubj,)}(h h]h }(hj hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj hhhj hMubj=)}(hsplice_from_pipe_nexth]h)}(hsplice_from_pipe_nexth]hsplice_from_pipe_next}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hj hhhj hMubjZ)}(h6(struct pipe_inode_info *pipe, struct splice_desc *sd)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hj hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehj ubj,)}(h h]h }(hj hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj ubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j!]j$)}jj sbc.splice_from_pipe_nextasbuh1hhj ubj,)}(h h]h }(hj hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj ubj)}(hjh]h*}(hj. hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hpipeh]hpipe}(hj; hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj ubj`)}(hstruct splice_desc *sdh](jf)}(hjih]hstruct}(hjT hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjP ubj,)}(h h]h }(hja hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjP ubh)}(hhh]h)}(h splice_desch]h splice_desc}(hjr hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjo ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjt modnameN classnameNjj)}j!]j c.splice_from_pipe_nextasbuh1hhjP ubj,)}(h h]h }(hj hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjP ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjP ubh)}(hsdh]hsd}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjP ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj ubeh}(h]h ]h"]h$]h&]jWjXuh1jYhj hhhj hMubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhj hhhj hMubah}(h]j ah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj hMhj hhubjd)}(hhh]h)}(h!wait for some data to splice fromh]h!wait for some data to splice from}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj hhubah}(h]h ]h"]h$]h&]uh1jchj hhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1hhhhhhNhNubj)}(hXQ**Parameters** ``struct pipe_inode_info *pipe`` pipe to splice from ``struct splice_desc *sd`` information about the splice operation **Description** This function will wait for some data and return a positive value (one) if pipe buffers are available. It will return zero or -errno if no more data needs to be spliced.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj ubj)}(hhh](j)}(h5``struct pipe_inode_info *pipe`` pipe to splice from h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hj h]hstruct pipe_inode_info *pipe}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj ubj)}(hhh]h)}(hpipe to splice fromh]hpipe to splice from}(hj/ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+ hMhj, ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj+ hMhj ubj)}(hB``struct splice_desc *sd`` information about the splice operation h](j)}(h``struct splice_desc *sd``h]j)}(hjO h]hstruct splice_desc *sd}(hjQ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjI ubj)}(hhh]h)}(h&information about the splice operationh]h&information about the splice operation}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjd hMhje ubah}(h]h ]h"]h$]h&]uh1jhjI ubeh}(h]h ]h"]h$]h&]uh1jhjd hMhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj ubjH)}(hThis function will wait for some data and return a positive value (one) if pipe buffers are available. It will return zero or -errno if no more data needs to be spliced.h]h)}(hThis function will wait for some data and return a positive value (one) if pipe buffers are available. It will return zero or -errno if no more data needs to be spliced.h]hThis function will wait for some data and return a positive value (one) if pipe buffers are available. It will return zero or -errno if no more data needs to be spliced.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj ubah}(h]h ]h"]h$]h&]uh1jGhj hMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#splice_from_pipe_begin (C function)c.splice_from_pipe_beginhNtauh1hhhhhhNhNubh)}(hhh](h)}(h4void splice_from_pipe_begin (struct splice_desc *sd)h]h)}(h3void splice_from_pipe_begin(struct splice_desc *sd)h](j`)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj hhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM2ubj,)}(h h]h }(hj hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj hhhj hM2ubj=)}(hsplice_from_pipe_beginh]h)}(hsplice_from_pipe_beginh]hsplice_from_pipe_begin}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hj hhhj hM2ubjZ)}(h(struct splice_desc *sd)h]j`)}(hstruct splice_desc *sdh](jf)}(hjih]hstruct}(hj hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehj ubj,)}(h h]h }(hj# hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj ubh)}(hhh]h)}(h splice_desch]h splice_desc}(hj4 hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj1 ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6 modnameN classnameNjj)}j!]j$)}jj sbc.splice_from_pipe_beginasbuh1hhj ubj,)}(h h]h }(hjT hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj ubj)}(hjh]h*}(hjb hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hsdh]hsd}(hjo hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj ubah}(h]h ]h"]h$]h&]jWjXuh1jYhj hhhj hM2ubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhj hhhj hM2ubah}(h]j ah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj hM2hj hhubjd)}(hhh]h)}(hstart splicing from pipeh]hstart splicing from pipe}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM*hj hhubah}(h]h ]h"]h$]h&]uh1jchj hhhj hM2ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct splice_desc *sd`` information about the splice operation **Description** This function should be called before a loop containing splice_from_pipe_next() and splice_from_pipe_feed() to initialize the necessary fields of **sd**.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM.hj ubj)}(hhh]j)}(hB``struct splice_desc *sd`` information about the splice operation h](j)}(h``struct splice_desc *sd``h]j)}(hj h]hstruct splice_desc *sd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM+hj ubj)}(hhh]h)}(h&information about the splice operationh]h&information about the splice operation}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM+hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hM+hj ubah}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM-hj ubjH)}(hThis function should be called before a loop containing splice_from_pipe_next() and splice_from_pipe_feed() to initialize the necessary fields of **sd**.h]h)}(hThis function should be called before a loop containing splice_from_pipe_next() and splice_from_pipe_feed() to initialize the necessary fields of **sd**.h](hThis function should be called before a loop containing splice_from_pipe_next() and splice_from_pipe_feed() to initialize the necessary fields of }(hj/hhhNhNubj)}(h**sd**h]hsd}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubh.}(hj/hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM-hj+ubah}(h]h ]h"]h$]h&]uh1jGhjOhM-hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!splice_from_pipe_end (C function)c.splice_from_pipe_endhNtauh1hhhhhhNhNubh)}(hhh](h)}(hPvoid splice_from_pipe_end (struct pipe_inode_info *pipe, struct splice_desc *sd)h]h)}(hOvoid splice_from_pipe_end(struct pipe_inode_info *pipe, struct splice_desc *sd)h](j`)}(hvoidh]hvoid}(hjvhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjrhhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMBubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjrhhhjhMBubj=)}(hsplice_from_pipe_endh]h)}(hsplice_from_pipe_endh]hsplice_from_pipe_end}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjrhhhjhMBubjZ)}(h6(struct pipe_inode_info *pipe, struct splice_desc *sd)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]j$)}jjsbc.splice_from_pipe_endasbuh1hhjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hpipeh]hpipe}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(hstruct splice_desc *sdh](jf)}(hjih]hstruct}(hj%hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehj!ubj,)}(h h]h }(hj2hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj!ubh)}(hhh]h)}(h splice_desch]h splice_desc}(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEmodnameN classnameNjj)}j!]jc.splice_from_pipe_endasbuh1hhj!ubj,)}(h h]h }(hjahhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj!ubj)}(hjh]h*}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubh)}(hsdh]hsd}(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj!ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubeh}(h]h ]h"]h$]h&]jWjXuh1jYhjrhhhjhMBubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjnhhhjhMBubah}(h]jiah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhjhMBhjkhhubjd)}(hhh]h)}(hfinish splicing from pipeh]hfinish splicing from pipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM9hjhhubah}(h]h ]h"]h$]h&]uh1jchjkhhhjhMBubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX>**Parameters** ``struct pipe_inode_info *pipe`` pipe to splice from ``struct splice_desc *sd`` information about the splice operation **Description** This function will wake up pipe writers if necessary. It should be called after a loop containing splice_from_pipe_next() and splice_from_pipe_feed().h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM=hjubj)}(hhh](j)}(h5``struct pipe_inode_info *pipe`` pipe to splice from h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjh]hstruct pipe_inode_info *pipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM:hjubj)}(hhh]h)}(hpipe to splice fromh]hpipe to splice from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM:hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM:hjubj)}(hB``struct splice_desc *sd`` information about the splice operation h](j)}(h``struct splice_desc *sd``h]j)}(hj h]hstruct splice_desc *sd}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM;hjubj)}(hhh]h)}(h&information about the splice operationh]h&information about the splice operation}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hM;hj6ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj5hM;hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj[h]h Description}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM=hjubjH)}(hThis function will wake up pipe writers if necessary. It should be called after a loop containing splice_from_pipe_next() and splice_from_pipe_feed().h]h)}(hThis function will wake up pipe writers if necessary. It should be called after a loop containing splice_from_pipe_next() and splice_from_pipe_feed().h]hThis function will wake up pipe writers if necessary. It should be called after a loop containing splice_from_pipe_next() and splice_from_pipe_feed().}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM=hjqubah}(h]h ]h"]h$]h&]uh1jGhjhM=hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h__splice_from_pipe (C function)c.__splice_from_pipehNtauh1hhhhhhNhNubh)}(hhh](h)}(hfssize_t __splice_from_pipe (struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)h]h)}(hessize_t __splice_from_pipe(struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)h](h)}(hhh]h)}(hssize_th]hssize_t}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]j$)}j__splice_from_pipesbc.__splice_from_pipeasbuh1hhjhhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMUubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjhhhjhMUubj=)}(h__splice_from_pipeh]h)}(hjh]h__splice_from_pipe}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjhhhjhMUubjZ)}(hK(struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjubj,)}(h h]h }(hj hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]jc.__splice_from_pipeasbuh1hhjubj,)}(h h]h }(hj8hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj)}(hjh]h*}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hpipeh]hpipe}(hjShhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(hstruct splice_desc *sdh](jf)}(hjih]hstruct}(hjlhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjhubj,)}(h h]h }(hjyhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjhubh)}(hhh]h)}(h splice_desch]h splice_desc}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]jc.__splice_from_pipeasbuh1hhjhubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjhubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubh)}(hsdh]hsd}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(hsplice_actor *actorh](h)}(hhh]h)}(h splice_actorh]h splice_actor}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]jc.__splice_from_pipeasbuh1hhjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hactorh]hactor}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubeh}(h]h ]h"]h$]h&]jWjXuh1jYhjhhhjhMUubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjhhhjhMUubah}(h]jah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhjhMUhjhhubjd)}(hhh]h)}(h&splice data from a pipe to given actorh]h&splice data from a pipe to given actor}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMIhj?hhubah}(h]h ]h"]h$]h&]uh1jchjhhhjhMUubeh}(h]h ](jfunctioneh"]h$]h&]jjjjZjjZjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pipe_inode_info *pipe`` pipe to splice from ``struct splice_desc *sd`` information to **actor** ``splice_actor *actor`` handler that splices the data **Description** This function does little more than loop over the pipe and call **actor** to do the actual moving of a single struct pipe_buffer to the desired destination. See pipe_to_file, pipe_to_sendmsg, or pipe_to_user.h](h)}(h**Parameters**h]j)}(hjdh]h Parameters}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMMhj^ubj)}(hhh](j)}(h5``struct pipe_inode_info *pipe`` pipe to splice from h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjh]hstruct pipe_inode_info *pipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMJhj}ubj)}(hhh]h)}(hpipe to splice fromh]hpipe to splice from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMJhjubah}(h]h ]h"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]uh1jhjhMJhjzubj)}(h4``struct splice_desc *sd`` information to **actor** h](j)}(h``struct splice_desc *sd``h]j)}(hjh]hstruct splice_desc *sd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMKhjubj)}(hhh]h)}(hinformation to **actor**h](hinformation to }(hjhhhNhNubj)}(h **actor**h]hactor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMKhjzubj)}(h6``splice_actor *actor`` handler that splices the data h](j)}(h``splice_actor *actor``h]j)}(hjh]hsplice_actor *actor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMLhjubj)}(hhh]h)}(hhandler that splices the datah]hhandler that splices the data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMLhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMLhjzubeh}(h]h ]h"]h$]h&]uh1jhj^ubh)}(h**Description**h]j)}(hj>h]h Description}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMNhj^ubjH)}(hThis function does little more than loop over the pipe and call **actor** to do the actual moving of a single struct pipe_buffer to the desired destination. See pipe_to_file, pipe_to_sendmsg, or pipe_to_user.h]h)}(hThis function does little more than loop over the pipe and call **actor** to do the actual moving of a single struct pipe_buffer to the desired destination. See pipe_to_file, pipe_to_sendmsg, or pipe_to_user.h](h@This function does little more than loop over the pipe and call }(hjXhhhNhNubj)}(h **actor**h]hactor}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubh to do the actual moving of a single struct pipe_buffer to the desired destination. See pipe_to_file, pipe_to_sendmsg, or pipe_to_user.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMNhjTubah}(h]h ]h"]h$]h&]uh1jGhjxhMNhj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hsplice_from_pipe (C function)c.splice_from_pipehNtauh1hhhhhhNhNubh)}(hhh](h)}(hssize_t splice_from_pipe (struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags, splice_actor *actor)h]h)}(hssize_t splice_from_pipe(struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags, splice_actor *actor)h](h)}(hhh]h)}(hssize_th]hssize_t}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]j$)}jsplice_from_pipesbc.splice_from_pipeasbuh1hhjhhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMuubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjhhhjhMuubj=)}(hsplice_from_pipeh]h)}(hjh]hsplice_from_pipe}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjhhhjhMuubjZ)}(hs(struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags, splice_actor *actor)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]jc.splice_from_pipeasbuh1hhjubj,)}(h h]h }(hj-hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj)}(hjh]h*}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hpipeh]hpipe}(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(hstruct file *outh](jf)}(hjih]hstruct}(hjahhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehj]ubj,)}(h h]h }(hjnhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj]ubh)}(hhh]h)}(hfileh]hfile}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]jc.splice_from_pipeasbuh1hhj]ubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj]ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubh)}(houth]hout}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj]ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(h loff_t *pposh](h)}(hhh]h)}(hloff_th]hloff_t}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]jc.splice_from_pipeasbuh1hhjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hpposh]hppos}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(h size_t lenh](h)}(hhh]h)}(hsize_th]hsize_t}(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j!]jc.splice_from_pipeasbuh1hhj"ubj,)}(h h]h }(hjGhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj"ubh)}(hlenh]hlen}(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj"ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(hunsigned int flagsh](j`)}(hunsignedh]hunsigned}(hjnhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjjubj,)}(h h]h }(hj|hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjjubj`)}(hinth]hint}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjjubh)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubj`)}(hsplice_actor *actorh](h)}(hhh]h)}(h splice_actorh]h splice_actor}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]jc.splice_from_pipeasbuh1hhjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hactorh]hactor}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjubeh}(h]h ]h"]h$]h&]jWjXuh1jYhjhhhjhMuubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjhhhjhMuubah}(h]jah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhjhMuhjhhubjd)}(hhh]h)}(h!splice data from a pipe to a fileh]h!splice data from a pipe to a file}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhhj"hhubah}(h]h ]h"]h$]h&]uh1jchjhhhjhMuubeh}(h]h ](jfunctioneh"]h$]h&]jjjj=jj=jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pipe_inode_info *pipe`` pipe to splice from ``struct file *out`` file to splice to ``loff_t *ppos`` position in **out** ``size_t len`` how many bytes to splice ``unsigned int flags`` splice modifier flags ``splice_actor *actor`` handler that splices the data **Description** See __splice_from_pipe. This function locks the pipe inode, otherwise it's identical to __splice_from_pipe().h](h)}(h**Parameters**h]j)}(hjGh]h Parameters}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMlhjAubj)}(hhh](j)}(h5``struct pipe_inode_info *pipe`` pipe to splice from h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjfh]hstruct pipe_inode_info *pipe}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMihj`ubj)}(hhh]h)}(hpipe to splice fromh]hpipe to splice from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hMihj|ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hMihj]ubj)}(h'``struct file *out`` file to splice to h](j)}(h``struct file *out``h]j)}(hjh]hstruct file *out}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMjhjubj)}(hhh]h)}(hfile to splice toh]hfile to splice to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMjhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMjhj]ubj)}(h%``loff_t *ppos`` position in **out** h](j)}(h``loff_t *ppos``h]j)}(hjh]h loff_t *ppos}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMkhjubj)}(hhh]h)}(hposition in **out**h](h position in }(hjhhhNhNubj)}(h**out**h]hout}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMkhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMkhj]ubj)}(h(``size_t len`` how many bytes to splice h](j)}(h``size_t len``h]j)}(hjh]h size_t len}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMlhjubj)}(hhh]h)}(hhow many bytes to spliceh]hhow many bytes to splice}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hMlhj5ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj4hMlhj]ubj)}(h-``unsigned int flags`` splice modifier flags h](j)}(h``unsigned int flags``h]j)}(hjXh]hunsigned int flags}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMmhjRubj)}(hhh]h)}(hsplice modifier flagsh]hsplice modifier flags}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhMmhjnubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjmhMmhj]ubj)}(h6``splice_actor *actor`` handler that splices the data h](j)}(h``splice_actor *actor``h]j)}(hjh]hsplice_actor *actor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMnhjubj)}(hhh]h)}(hhandler that splices the datah]hhandler that splices the data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMnhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMnhj]ubeh}(h]h ]h"]h$]h&]uh1jhjAubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMphjAubjH)}(hmSee __splice_from_pipe. This function locks the pipe inode, otherwise it's identical to __splice_from_pipe().h]h)}(hmSee __splice_from_pipe. This function locks the pipe inode, otherwise it's identical to __splice_from_pipe().h]hoSee __splice_from_pipe. This function locks the pipe inode, otherwise it’s identical to __splice_from_pipe().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMphjubah}(h]h ]h"]h$]h&]uh1jGhjhMphjAubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#iter_file_splice_write (C function)c.iter_file_splice_writehNtauh1hhhhhhNhNubh)}(hhh](h)}(h}ssize_t iter_file_splice_write (struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags)h]h)}(h|ssize_t iter_file_splice_write(struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags)h](h)}(hhh]h)}(hssize_th]hssize_t}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j!]j$)}jiter_file_splice_writesbc.iter_file_splice_writeasbuh1hhjhhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMubj,)}(h h]h }(hj@hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjhhhj?hMubj=)}(hiter_file_splice_writeh]h)}(hj<h]hiter_file_splice_write}(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjNubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjhhhj?hMubjZ)}(h^(struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hjmhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjiubj,)}(h h]h }(hjzhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjiubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]j:c.iter_file_splice_writeasbuh1hhjiubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjiubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubh)}(hpipeh]hpipe}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjiubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjeubj`)}(hstruct file *outh](jf)}(hjih]hstruct}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hhh]h)}(hfileh]hfile}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]j:c.iter_file_splice_writeasbuh1hhjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(houth]hout}(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjeubj`)}(h loff_t *pposh](h)}(hhh]h)}(hloff_th]hloff_t}(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjMubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjRmodnameN classnameNjj)}j!]j:c.iter_file_splice_writeasbuh1hhjIubj,)}(h h]h }(hjnhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjIubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubh)}(hpposh]hppos}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjIubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjeubj`)}(h size_t lenh](h)}(hhh]h)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]j:c.iter_file_splice_writeasbuh1hhjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjeubj`)}(hunsigned int flagsh](j`)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj`)}(hinth]hint}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hflagsh]hflags}(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjeubeh}(h]h ]h"]h$]h&]jWjXuh1jYhjhhhj?hMubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjhhhj?hMubah}(h]jah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj?hMhjhhubjd)}(hhh]h)}(h!splice data from a pipe to a fileh]h!splice data from a pipe to a file}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjIhhubah}(h]h ]h"]h$]h&]uh1jchjhhhj?hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjdjjdjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pipe_inode_info *pipe`` pipe info ``struct file *out`` file to write to ``loff_t *ppos`` position in **out** ``size_t len`` number of bytes to splice ``unsigned int flags`` splice modifier flags **Description** Will either move or copy pages (determined by **flags** options) from the given pipe inode to the given file. This one is ->write_iter-based.h](h)}(h**Parameters**h]j)}(hjnh]h Parameters}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjhubj)}(hhh](j)}(h+``struct pipe_inode_info *pipe`` pipe info h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjh]hstruct pipe_inode_info *pipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjubj)}(hhh]h)}(h pipe infoh]h pipe info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h&``struct file *out`` file to write to h](j)}(h``struct file *out``h]j)}(hjh]hstruct file *out}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjubj)}(hhh]h)}(hfile to write toh]hfile to write to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h%``loff_t *ppos`` position in **out** h](j)}(h``loff_t *ppos``h]j)}(hjh]h loff_t *ppos}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjubj)}(hhh]h)}(hposition in **out**h](h position in }(hjhhhNhNubj)}(h**out**h]hout}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h)``size_t len`` number of bytes to splice h](j)}(h``size_t len``h]j)}(hjFh]h size_t len}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj@ubj)}(hhh]h)}(hnumber of bytes to spliceh]hnumber of bytes to splice}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hMhj\ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj[hMhjubj)}(h-``unsigned int flags`` splice modifier flags h](j)}(h``unsigned int flags``h]j)}(hjh]hunsigned int flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjyubj)}(hhh]h)}(hsplice modifier flagsh]hsplice modifier flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjhubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjhubjH)}(hWill either move or copy pages (determined by **flags** options) from the given pipe inode to the given file. This one is ->write_iter-based.h]h)}(hWill either move or copy pages (determined by **flags** options) from the given pipe inode to the given file. This one is ->write_iter-based.h](h.Will either move or copy pages (determined by }(hjhhhNhNubj)}(h **flags**h]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhV options) from the given pipe inode to the given file. This one is ->write_iter-based.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjubah}(h]h ]h"]h$]h&]uh1jGhjhMhjhubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hsplice_to_socket (C function)c.splice_to_sockethNtauh1hhhhhhNhNubh)}(hhh](h)}(hwssize_t splice_to_socket (struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags)h]h)}(hvssize_t splice_to_socket(struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags)h](h)}(hhh]h)}(hssize_th]hssize_t}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j!]j$)}jsplice_to_socketsbc.splice_to_socketasbuh1hhjhhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMubj,)}(h h]h }(hj@hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjhhhj?hMubj=)}(hsplice_to_socketh]h)}(hj<h]hsplice_to_socket}(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjNubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjhhhj?hMubjZ)}(h^(struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hjmhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjiubj,)}(h h]h }(hjzhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjiubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]j:c.splice_to_socketasbuh1hhjiubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjiubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubh)}(hpipeh]hpipe}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjiubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjeubj`)}(hstruct file *outh](jf)}(hjih]hstruct}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hhh]h)}(hfileh]hfile}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]j:c.splice_to_socketasbuh1hhjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(houth]hout}(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjeubj`)}(h loff_t *pposh](h)}(hhh]h)}(hloff_th]hloff_t}(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjMubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjRmodnameN classnameNjj)}j!]j:c.splice_to_socketasbuh1hhjIubj,)}(h h]h }(hjnhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjIubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubh)}(hpposh]hppos}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjIubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjeubj`)}(h size_t lenh](h)}(hhh]h)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j!]j:c.splice_to_socketasbuh1hhjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjeubj`)}(hunsigned int flagsh](j`)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubj`)}(hinth]hint}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubj,)}(h h]h }(hjhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjubh)}(hflagsh]hflags}(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjeubeh}(h]h ]h"]h$]h&]jWjXuh1jYhjhhhj?hMubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjhhhj?hMubah}(h]jah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj?hMhjhhubjd)}(hhh]h)}(h#splice data from a pipe to a socketh]h#splice data from a pipe to a socket}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjIhhubah}(h]h ]h"]h$]h&]uh1jchjhhhj?hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjdjjdjjjuh1hhhhhhNhNubj)}(hXe**Parameters** ``struct pipe_inode_info *pipe`` pipe to splice from ``struct file *out`` socket to write to ``loff_t *ppos`` position in **out** ``size_t len`` number of bytes to splice ``unsigned int flags`` splice modifier flags **Description** Will send **len** bytes from the pipe to a network socket. No data copying is involved.h](h)}(h**Parameters**h]j)}(hjnh]h Parameters}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjhubj)}(hhh](j)}(h5``struct pipe_inode_info *pipe`` pipe to splice from h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjh]hstruct pipe_inode_info *pipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjubj)}(hhh]h)}(hpipe to splice fromh]hpipe to splice from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h(``struct file *out`` socket to write to h](j)}(h``struct file *out``h]j)}(hjh]hstruct file *out}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjubj)}(hhh]h)}(hsocket to write toh]hsocket to write to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h%``loff_t *ppos`` position in **out** h](j)}(h``loff_t *ppos``h]j)}(hjh]h loff_t *ppos}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjubj)}(hhh]h)}(hposition in **out**h](h position in }(hjhhhNhNubj)}(h**out**h]hout}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h)``size_t len`` number of bytes to splice h](j)}(h``size_t len``h]j)}(hjFh]h size_t len}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj@ubj)}(hhh]h)}(hnumber of bytes to spliceh]hnumber of bytes to splice}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hMhj\ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj[hMhjubj)}(h-``unsigned int flags`` splice modifier flags h](j)}(h``unsigned int flags``h]j)}(hjh]hunsigned int flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjyubj)}(hhh]h)}(hsplice modifier flagsh]hsplice modifier flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjhubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjhubjH)}(hWWill send **len** bytes from the pipe to a network socket. No data copying is involved.h]h)}(hWWill send **len** bytes from the pipe to a network socket. No data copying is involved.h](h Will send }(hjhhhNhNubj)}(h**len**h]hlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhF bytes from the pipe to a network socket. No data copying is involved.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjubah}(h]h ]h"]h$]h&]uh1jGhjhMhjhubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hvfs_splice_read (C function)c.vfs_splice_readhNtauh1hhhhhhNhNubh)}(hhh](h)}(hussize_t vfs_splice_read (struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)h]h)}(htssize_t vfs_splice_read(struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)h](h)}(hhh]h)}(hssize_th]hssize_t}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j!]j$)}jvfs_splice_readsbc.vfs_splice_readasbuh1hhj hhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMubj,)}(h h]h }(hj@ hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj hhhj? hMubj=)}(hvfs_splice_readh]h)}(hj< h]hvfs_splice_read}(hjR hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjN ubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hj hhhj? hMubjZ)}(h](struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)h](j`)}(hstruct file *inh](jf)}(hjih]hstruct}(hjm hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehji ubj,)}(h h]h }(hjz hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hji ubh)}(hhh]h)}(hfileh]hfile}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j!]j: c.vfs_splice_readasbuh1hhji ubj,)}(h h]h }(hj hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hji ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhji ubh)}(hinh]hin}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhji ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hje ubj`)}(h loff_t *pposh](h)}(hhh]h)}(hloff_th]hloff_t}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j!]j: c.vfs_splice_readasbuh1hhj ubj,)}(h h]h }(hj hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj ubj)}(hjh]h*}(hj !hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hpposh]hppos}(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hje ubj`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hj2!hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehj.!ubj,)}(h h]h }(hj?!hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj.!ubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjP!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjM!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjR!modnameN classnameNjj)}j!]j: c.vfs_splice_readasbuh1hhj.!ubj,)}(h h]h }(hjn!hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj.!ubj)}(hjh]h*}(hj|!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.!ubh)}(hpipeh]hpipe}(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj.!ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hje ubj`)}(h size_t lenh](h)}(hhh]h)}(hsize_th]hsize_t}(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!modnameN classnameNjj)}j!]j: c.vfs_splice_readasbuh1hhj!ubj,)}(h h]h }(hj!hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj!ubh)}(hlenh]hlen}(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj!ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hje ubj`)}(hunsigned int flagsh](j`)}(hunsignedh]hunsigned}(hj!hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj!ubj,)}(h h]h }(hj!hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj!ubj`)}(hinth]hint}(hj"hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj!ubj,)}(h h]h }(hj"hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj!ubh)}(hflagsh]hflags}(hj""hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj!ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hje ubeh}(h]h ]h"]h$]h&]jWjXuh1jYhj hhhj? hMubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhj hhhj? hMubah}(h]j ah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj? hMhj hhubjd)}(hhh]h)}(h/Read data from a file and splice it into a pipeh]h/Read data from a file and splice it into a pipe}(hjL"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjI"hhubah}(h]h ]h"]h$]h&]uh1jchj hhhj? hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjd"jjd"jjjuh1hhhhhhNhNubj)}(hX'**Parameters** ``struct file *in`` File to splice from ``loff_t *ppos`` Input file offset ``struct pipe_inode_info *pipe`` Pipe to splice to ``size_t len`` Number of bytes to splice ``unsigned int flags`` Splice modifier flags (SPLICE_F_*) **Description** Splice the requested amount of data from the input file to the pipe. This is synchronous as the caller must hold the pipe lock across the entire operation. If successful, it returns the amount of data spliced, 0 if it hit the EOF or a hole and a negative error code otherwise.h](h)}(h**Parameters**h]j)}(hjn"h]h Parameters}(hjp"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl"ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjh"ubj)}(hhh](j)}(h(``struct file *in`` File to splice from h](j)}(h``struct file *in``h]j)}(hj"h]hstruct file *in}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj"ubj)}(hhh]h)}(hFile to splice fromh]hFile to splice from}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hMhj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj"hMhj"ubj)}(h#``loff_t *ppos`` Input file offset h](j)}(h``loff_t *ppos``h]j)}(hj"h]h loff_t *ppos}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj"ubj)}(hhh]h)}(hInput file offseth]hInput file offset}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hMhj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj"hMhj"ubj)}(h3``struct pipe_inode_info *pipe`` Pipe to splice to h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hj"h]hstruct pipe_inode_info *pipe}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj"ubj)}(hhh]h)}(hPipe to splice toh]hPipe to splice to}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hMhj#ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj#hMhj"ubj)}(h)``size_t len`` Number of bytes to splice h](j)}(h``size_t len``h]j)}(hj8#h]h size_t len}(hj:#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6#ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj2#ubj)}(hhh]h)}(hNumber of bytes to spliceh]hNumber of bytes to splice}(hjQ#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjM#hMhjN#ubah}(h]h ]h"]h$]h&]uh1jhj2#ubeh}(h]h ]h"]h$]h&]uh1jhjM#hMhj"ubj)}(h:``unsigned int flags`` Splice modifier flags (SPLICE_F_*) h](j)}(h``unsigned int flags``h]j)}(hjq#h]hunsigned int flags}(hjs#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjo#ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjk#ubj)}(hhh]h)}(h"Splice modifier flags (SPLICE_F_*)h]h"Splice modifier flags (SPLICE_F_*)}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hMhj#ubah}(h]h ]h"]h$]h&]uh1jhjk#ubeh}(h]h ]h"]h$]h&]uh1jhj#hMhj"ubeh}(h]h ]h"]h$]h&]uh1jhjh"ubh)}(h**Description**h]j)}(hj#h]h Description}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjh"ubh)}(hSplice the requested amount of data from the input file to the pipe. This is synchronous as the caller must hold the pipe lock across the entire operation.h]hSplice the requested amount of data from the input file to the pipe. This is synchronous as the caller must hold the pipe lock across the entire operation.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjh"ubh)}(hxIf successful, it returns the amount of data spliced, 0 if it hit the EOF or a hole and a negative error code otherwise.h]hxIf successful, it returns the amount of data spliced, 0 if it hit the EOF or a hole and a negative error code otherwise.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjh"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#splice_direct_to_actor (C function)c.splice_direct_to_actorhNtauh1hhhhhhNhNubh)}(hhh](h)}(hdssize_t splice_direct_to_actor (struct file *in, struct splice_desc *sd, splice_direct_actor *actor)h]h)}(hcssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, splice_direct_actor *actor)h](h)}(hhh]h)}(hssize_th]hssize_t}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj$ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj$modnameN classnameNjj)}j!]j$)}jsplice_direct_to_actorsbc.splice_direct_to_actorasbuh1hhj#hhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMubj,)}(h h]h }(hj%$hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj#hhhj$$hMubj=)}(hsplice_direct_to_actorh]h)}(hj!$h]hsplice_direct_to_actor}(hj7$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj3$ubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hj#hhhj$$hMubjZ)}(hE(struct file *in, struct splice_desc *sd, splice_direct_actor *actor)h](j`)}(hstruct file *inh](jf)}(hjih]hstruct}(hjR$hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjN$ubj,)}(h h]h }(hj_$hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjN$ubh)}(hhh]h)}(hfileh]hfile}(hjp$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjm$ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjr$modnameN classnameNjj)}j!]j$c.splice_direct_to_actorasbuh1hhjN$ubj,)}(h h]h }(hj$hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjN$ubj)}(hjh]h*}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjN$ubh)}(hinh]hin}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjN$ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjJ$ubj`)}(hstruct splice_desc *sdh](jf)}(hjih]hstruct}(hj$hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehj$ubj,)}(h h]h }(hj$hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj$ubh)}(hhh]h)}(h splice_desch]h splice_desc}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj$ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj$modnameN classnameNjj)}j!]j$c.splice_direct_to_actorasbuh1hhj$ubj,)}(h h]h }(hj$hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj$ubj)}(hjh]h*}(hj %hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubh)}(hsdh]hsd}(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj$ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjJ$ubj`)}(hsplice_direct_actor *actorh](h)}(hhh]h)}(hsplice_direct_actorh]hsplice_direct_actor}(hj5%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj7%modnameN classnameNjj)}j!]j$c.splice_direct_to_actorasbuh1hhj.%ubj,)}(h h]h }(hjS%hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj.%ubj)}(hjh]h*}(hja%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.%ubh)}(hactorh]hactor}(hjn%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj.%ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjJ$ubeh}(h]h ]h"]h$]h&]jWjXuh1jYhj#hhhj$$hMubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhj#hhhj$$hMubah}(h]j#ah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj$$hMhj#hhubjd)}(hhh]h)}(h+splices data directly between two non-pipesh]h+splices data directly between two non-pipes}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj%hhubah}(h]h ]h"]h$]h&]uh1jchj#hhhj$$hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj%jj%jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct file *in`` file to splice from ``struct splice_desc *sd`` actor information on where to splice to ``splice_direct_actor *actor`` handles the data splicing **Description** This is a special case helper to splice directly between two points, without requiring an explicit pipe. Internally an allocated pipe is cached in the process, and reused during the lifetime of that process.h](h)}(h**Parameters**h]j)}(hj%h]h Parameters}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj%ubj)}(hhh](j)}(h(``struct file *in`` file to splice from h](j)}(h``struct file *in``h]j)}(hj%h]hstruct file *in}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj%ubj)}(hhh]h)}(hfile to splice fromh]hfile to splice from}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMhj%ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj%hMhj%ubj)}(hC``struct splice_desc *sd`` actor information on where to splice to h](j)}(h``struct splice_desc *sd``h]j)}(hj&h]hstruct splice_desc *sd}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj &ubj)}(hhh]h)}(h'actor information on where to splice toh]h'actor information on where to splice to}(hj+&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'&hMhj(&ubah}(h]h ]h"]h$]h&]uh1jhj &ubeh}(h]h ]h"]h$]h&]uh1jhj'&hMhj%ubj)}(h9``splice_direct_actor *actor`` handles the data splicing h](j)}(h``splice_direct_actor *actor``h]j)}(hjK&h]hsplice_direct_actor *actor}(hjM&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjI&ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjE&ubj)}(hhh]h)}(hhandles the data splicingh]hhandles the data splicing}(hjd&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`&hMhja&ubah}(h]h ]h"]h$]h&]uh1jhjE&ubeh}(h]h ]h"]h$]h&]uh1jhj`&hMhj%ubeh}(h]h ]h"]h$]h&]uh1jhj%ubh)}(h**Description**h]j)}(hj&h]h Description}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj%ubjH)}(hThis is a special case helper to splice directly between two points, without requiring an explicit pipe. Internally an allocated pipe is cached in the process, and reused during the lifetime of that process.h]h)}(hThis is a special case helper to splice directly between two points, without requiring an explicit pipe. Internally an allocated pipe is cached in the process, and reused during the lifetime of that process.h]hThis is a special case helper to splice directly between two points, without requiring an explicit pipe. Internally an allocated pipe is cached in the process, and reused during the lifetime of that process.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj&ubah}(h]h ]h"]h$]h&]uh1jGhj&hMhj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hdo_splice_direct (C function)c.do_splice_directhNtauh1hhhhhhNhNubh)}(hhh](h)}(hxssize_t do_splice_direct (struct file *in, loff_t *ppos, struct file *out, loff_t *opos, size_t len, unsigned int flags)h]h)}(hwssize_t do_splice_direct(struct file *in, loff_t *ppos, struct file *out, loff_t *opos, size_t len, unsigned int flags)h](h)}(hhh]h)}(hssize_th]hssize_t}(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj&modnameN classnameNjj)}j!]j$)}jdo_splice_directsbc.do_splice_directasbuh1hhj&hhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMubj,)}(h h]h }(hj&hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj&hhhj&hMubj=)}(hdo_splice_directh]h)}(hj&h]hdo_splice_direct}(hj 'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj'ubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hj&hhhj&hMubjZ)}(h_(struct file *in, loff_t *ppos, struct file *out, loff_t *opos, size_t len, unsigned int flags)h](j`)}(hstruct file *inh](jf)}(hjih]hstruct}(hj''hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehj#'ubj,)}(h h]h }(hj4'hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj#'ubh)}(hhh]h)}(hfileh]hfile}(hjE'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjB'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjG'modnameN classnameNjj)}j!]j&c.do_splice_directasbuh1hhj#'ubj,)}(h h]h }(hjc'hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj#'ubj)}(hjh]h*}(hjq'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#'ubh)}(hinh]hin}(hj~'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#'ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj'ubj`)}(h loff_t *pposh](h)}(hhh]h)}(hloff_th]hloff_t}(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'modnameN classnameNjj)}j!]j&c.do_splice_directasbuh1hhj'ubj,)}(h h]h }(hj'hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj'ubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubh)}(hpposh]hppos}(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj'ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj'ubj`)}(hstruct file *outh](jf)}(hjih]hstruct}(hj'hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehj'ubj,)}(h h]h }(hj'hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj'ubh)}(hhh]h)}(hfileh]hfile}(hj (hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj (modnameN classnameNjj)}j!]j&c.do_splice_directasbuh1hhj'ubj,)}(h h]h }(hj((hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj'ubj)}(hjh]h*}(hj6(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubh)}(houth]hout}(hjC(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj'ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj'ubj`)}(h loff_t *oposh](h)}(hhh]h)}(hloff_th]hloff_t}(hj_(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj\(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetja(modnameN classnameNjj)}j!]j&c.do_splice_directasbuh1hhjX(ubj,)}(h h]h }(hj}(hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjX(ubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX(ubh)}(hoposh]hopos}(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjX(ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj'ubj`)}(h size_t lenh](h)}(hhh]h)}(hsize_th]hsize_t}(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j!]j&c.do_splice_directasbuh1hhj(ubj,)}(h h]h }(hj(hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj(ubh)}(hlenh]hlen}(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj(ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj'ubj`)}(hunsigned int flagsh](j`)}(hunsignedh]hunsigned}(hj(hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj(ubj,)}(h h]h }(hj)hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj(ubj`)}(hinth]hint}(hj)hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj(ubj,)}(h h]h }(hj#)hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj(ubh)}(hflagsh]hflags}(hj1)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj(ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj'ubeh}(h]h ]h"]h$]h&]jWjXuh1jYhj&hhhj&hMubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhj&hhhj&hMubah}(h]j&ah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj&hMhj&hhubjd)}(hhh]h)}(h'splices data directly between two filesh]h'splices data directly between two files}(hj[)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjX)hhubah}(h]h ]h"]h$]h&]uh1jchj&hhhj&hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjs)jjs)jjjuh1hhhhhhNhNubj)}(hXd**Parameters** ``struct file *in`` file to splice from ``loff_t *ppos`` input file offset ``struct file *out`` file to splice to ``loff_t *opos`` output file offset ``size_t len`` number of bytes to splice ``unsigned int flags`` splice modifier flags **Description** For use by do_sendfile(). splice can easily emulate sendfile, but doing it in the application would incur an extra system call (splice in + splice out, as compared to just sendfile()). So this helper can splice directly through a process-private pipe. Callers already called rw_verify_area() on the entire range.h](h)}(h**Parameters**h]j)}(hj})h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{)ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjw)ubj)}(hhh](j)}(h(``struct file *in`` file to splice from h](j)}(h``struct file *in``h]j)}(hj)h]hstruct file *in}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj)ubj)}(hhh]h)}(hfile to splice fromh]hfile to splice from}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMhj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhj)hMhj)ubj)}(h#``loff_t *ppos`` input file offset h](j)}(h``loff_t *ppos``h]j)}(hj)h]h loff_t *ppos}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj)ubj)}(hhh]h)}(hinput file offseth]hinput file offset}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMhj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhj)hMhj)ubj)}(h'``struct file *out`` file to splice to h](j)}(h``struct file *out``h]j)}(hj*h]hstruct file *out}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj *ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj*ubj)}(hhh]h)}(hfile to splice toh]hfile to splice to}(hj'*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#*hMhj$*ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1jhj#*hMhj)ubj)}(h$``loff_t *opos`` output file offset h](j)}(h``loff_t *opos``h]j)}(hjG*h]h loff_t *opos}(hjI*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjE*ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjA*ubj)}(hhh]h)}(houtput file offseth]houtput file offset}(hj`*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\*hMhj]*ubah}(h]h ]h"]h$]h&]uh1jhjA*ubeh}(h]h ]h"]h$]h&]uh1jhj\*hMhj)ubj)}(h)``size_t len`` number of bytes to splice h](j)}(h``size_t len``h]j)}(hj*h]h size_t len}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~*ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjz*ubj)}(hhh]h)}(hnumber of bytes to spliceh]hnumber of bytes to splice}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMhj*ubah}(h]h ]h"]h$]h&]uh1jhjz*ubeh}(h]h ]h"]h$]h&]uh1jhj*hMhj)ubj)}(h-``unsigned int flags`` splice modifier flags h](j)}(h``unsigned int flags``h]j)}(hj*h]hunsigned int flags}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj*ubj)}(hhh]h)}(hsplice modifier flagsh]hsplice modifier flags}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMhj*ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1jhj*hMhj)ubeh}(h]h ]h"]h$]h&]uh1jhjw)ubh)}(h**Description**h]j)}(hj*h]h Description}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjw)ubjH)}(hFor use by do_sendfile(). splice can easily emulate sendfile, but doing it in the application would incur an extra system call (splice in + splice out, as compared to just sendfile()). So this helper can splice directly through a process-private pipe. h]h)}(hFor use by do_sendfile(). splice can easily emulate sendfile, but doing it in the application would incur an extra system call (splice in + splice out, as compared to just sendfile()). So this helper can splice directly through a process-private pipe.h]hFor use by do_sendfile(). splice can easily emulate sendfile, but doing it in the application would incur an extra system call (splice in + splice out, as compared to just sendfile()). So this helper can splice directly through a process-private pipe.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj +ubah}(h]h ]h"]h$]h&]uh1jGhj+hMhjw)ubh)}(hcopy_file_range() methods. Like do_splice_direct(), but vfs_copy_file_range() already holds start_file_write() on **out** file. Callers already called rw_verify_area() on the entire range.h](h)}(h**Parameters**h]j)}(hj-h]h Parameters}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj-ubj)}(hhh](j)}(h(``struct file *in`` file to splice from h](j)}(h``struct file *in``h]j)}(hj-h]hstruct file *in}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj-ubj)}(hhh]h)}(hfile to splice fromh]hfile to splice from}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hMhj-ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jhj-hMhj-ubj)}(h#``loff_t *ppos`` input file offset h](j)}(h``loff_t *ppos``h]j)}(hj.h]h loff_t *ppos}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj-ubj)}(hhh]h)}(hinput file offseth]hinput file offset}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hMhj.ubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jhj.hMhj-ubj)}(h'``struct file *out`` file to splice to h](j)}(h``struct file *out``h]j)}(hj:.h]hstruct file *out}(hj<.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8.ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj4.ubj)}(hhh]h)}(hfile to splice toh]hfile to splice to}(hjS.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjO.hMhjP.ubah}(h]h ]h"]h$]h&]uh1jhj4.ubeh}(h]h ]h"]h$]h&]uh1jhjO.hMhj-ubj)}(h$``loff_t *opos`` output file offset h](j)}(h``loff_t *opos``h]j)}(hjs.h]h loff_t *opos}(hju.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjq.ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjm.ubj)}(hhh]h)}(houtput file offseth]houtput file offset}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hMhj.ubah}(h]h ]h"]h$]h&]uh1jhjm.ubeh}(h]h ]h"]h$]h&]uh1jhj.hMhj-ubj)}(h)``size_t len`` number of bytes to splice h](j)}(h``size_t len``h]j)}(hj.h]h size_t len}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj.ubj)}(hhh]h)}(hnumber of bytes to spliceh]hnumber of bytes to splice}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hMhj.ubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhj.hMhj-ubeh}(h]h ]h"]h$]h&]uh1jhj-ubh)}(h**Description**h]j)}(hj.h]h Description}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj-ubjH)}(hFor use by ->copy_file_range() methods. Like do_splice_direct(), but vfs_copy_file_range() already holds start_file_write() on **out** file. h]h)}(hFor use by ->copy_file_range() methods. Like do_splice_direct(), but vfs_copy_file_range() already holds start_file_write() on **out** file.h](hFor use by ->copy_file_range() methods. Like do_splice_direct(), but vfs_copy_file_range() already holds start_file_write() on }(hj/hhhNhNubj)}(h**out**h]hout}(hj /hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubh file.}(hj/hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj.ubah}(h]h ]h"]h$]h&]uh1jGhj!/hMhj-ubh)}(hhj2hhubah}(h]h ]h"]h$]h&]uh1jchj1hhhj1hKubeh}(h]h ](jstructeh"]h$]h&]jjjj.2jj.2jjjuh1hhhhjF/hNhNubj)}(hXO**Definition**:: struct pipe_inode_info { struct mutex mutex; wait_queue_head_t rd_wait, wr_wait; union { unsigned long head_tail; struct { pipe_index_t head; pipe_index_t tail; }; }; unsigned int max_usage; unsigned int ring_size; unsigned int nr_accounted; unsigned int readers; unsigned int writers; unsigned int files; unsigned int r_counter; unsigned int w_counter; bool poll_usage; #ifdef CONFIG_WATCH_QUEUE; bool note_loss; #endif; struct page *tmp_page[2]; struct fasync_struct *fasync_readers; struct fasync_struct *fasync_writers; struct pipe_buffer *bufs; struct user_struct *user; #ifdef CONFIG_WATCH_QUEUE; struct watch_queue *watch_queue; #endif; }; **Members** ``mutex`` mutex protecting the whole thing ``rd_wait`` reader wait point in case of empty pipe ``wr_wait`` writer wait point in case of full pipe ``{unnamed_union}`` anonymous ``head_tail`` unsigned long union of **head** and **tail** ``{unnamed_struct}`` anonymous ``head`` The point of buffer production ``tail`` The point of buffer consumption ``max_usage`` The maximum number of slots that may be used in the ring ``ring_size`` total number of buffers (should be a power of 2) ``nr_accounted`` The amount this pipe accounts for in user->pipe_bufs ``readers`` number of current readers of this pipe ``writers`` number of current writers of this pipe ``files`` number of struct file referring this pipe (protected by ->i_lock) ``r_counter`` reader counter ``w_counter`` writer counter ``poll_usage`` is this pipe used for epoll, which has crazy wakeups? ``note_loss`` The next read() should insert a data-lost message ``tmp_page`` cached released page ``fasync_readers`` reader side fasync ``fasync_writers`` writer side fasync ``bufs`` the circular array of pipe buffers ``user`` the user who created this pipe ``watch_queue`` If this pipe is a watch_queue, this is the stuff for thath](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj:2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj62ubh:}(hj62hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKBhj22ubj/)}(hXstruct pipe_inode_info { struct mutex mutex; wait_queue_head_t rd_wait, wr_wait; union { unsigned long head_tail; struct { pipe_index_t head; pipe_index_t tail; }; }; unsigned int max_usage; unsigned int ring_size; unsigned int nr_accounted; unsigned int readers; unsigned int writers; unsigned int files; unsigned int r_counter; unsigned int w_counter; bool poll_usage; #ifdef CONFIG_WATCH_QUEUE; bool note_loss; #endif; struct page *tmp_page[2]; struct fasync_struct *fasync_readers; struct fasync_struct *fasync_writers; struct pipe_buffer *bufs; struct user_struct *user; #ifdef CONFIG_WATCH_QUEUE; struct watch_queue *watch_queue; #endif; };h]hXstruct pipe_inode_info { struct mutex mutex; wait_queue_head_t rd_wait, wr_wait; union { unsigned long head_tail; struct { pipe_index_t head; pipe_index_t tail; }; }; unsigned int max_usage; unsigned int ring_size; unsigned int nr_accounted; unsigned int readers; unsigned int writers; unsigned int files; unsigned int r_counter; unsigned int w_counter; bool poll_usage; #ifdef CONFIG_WATCH_QUEUE; bool note_loss; #endif; struct page *tmp_page[2]; struct fasync_struct *fasync_readers; struct fasync_struct *fasync_writers; struct pipe_buffer *bufs; struct user_struct *user; #ifdef CONFIG_WATCH_QUEUE; struct watch_queue *watch_queue; #endif; };}hjS2sbah}(h]h ]h"]h$]h&]jWjXuh1j/h\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKDhj22ubh)}(h **Members**h]j)}(hjd2h]hMembers}(hjf2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjb2ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKdhj22ubj)}(hhh](j)}(h+``mutex`` mutex protecting the whole thing h](j)}(h ``mutex``h]j)}(hj2h]hmutex}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhK@hj}2ubj)}(hhh]h)}(h mutex protecting the whole thingh]h mutex protecting the whole thing}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hK@hj2ubah}(h]h ]h"]h$]h&]uh1jhj}2ubeh}(h]h ]h"]h$]h&]uh1jhj2hK@hjz2ubj)}(h4``rd_wait`` reader wait point in case of empty pipe h](j)}(h ``rd_wait``h]j)}(hj2h]hrd_wait}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKAhj2ubj)}(hhh]h)}(h'reader wait point in case of empty pipeh]h'reader wait point in case of empty pipe}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hKAhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhj2hKAhjz2ubj)}(h3``wr_wait`` writer wait point in case of full pipe h](j)}(h ``wr_wait``h]j)}(hj2h]hwr_wait}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKBhj2ubj)}(hhh]h)}(h&writer wait point in case of full pipeh]h&writer wait point in case of full pipe}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj 3hKBhj 3ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhj 3hKBhjz2ubj)}(h``{unnamed_union}`` anonymous h](j)}(h``{unnamed_union}``h]j)}(hj.3h]h{unnamed_union}}(hj03hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,3ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKEhj(3ubj)}(hhh]h)}(h anonymoush]h anonymous}(hjG3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjC3hKEhjD3ubah}(h]h ]h"]h$]h&]uh1jhj(3ubeh}(h]h ]h"]h$]h&]uh1jhjC3hKEhjz2ubj)}(h;``head_tail`` unsigned long union of **head** and **tail** h](j)}(h ``head_tail``h]j)}(hjg3h]h head_tail}(hji3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhje3ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKEhja3ubj)}(hhh]h)}(h,unsigned long union of **head** and **tail**h](hunsigned long union of }(hj3hhhNhNubj)}(h**head**h]hhead}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubh and }(hj3hhhNhNubj)}(h**tail**h]htail}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1hhj|3hKEhj}3ubah}(h]h ]h"]h$]h&]uh1jhja3ubeh}(h]h ]h"]h$]h&]uh1jhj|3hKEhjz2ubj)}(h``{unnamed_struct}`` anonymous h](j)}(h``{unnamed_struct}``h]j)}(hj3h]h{unnamed_struct}}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKHhj3ubj)}(hhh]h)}(h anonymoush]h anonymous}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKHhj3ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jhj3hKHhjz2ubj)}(h(``head`` The point of buffer production h](j)}(h``head``h]j)}(hj3h]hhead}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKChj3ubj)}(hhh]h)}(hThe point of buffer productionh]hThe point of buffer production}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hKChj4ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jhj4hKChjz2ubj)}(h)``tail`` The point of buffer consumption h](j)}(h``tail``h]j)}(hj24h]htail}(hj44hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj04ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKDhj,4ubj)}(hhh]h)}(hThe point of buffer consumptionh]hThe point of buffer consumption}(hjK4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjG4hKDhjH4ubah}(h]h ]h"]h$]h&]uh1jhj,4ubeh}(h]h ]h"]h$]h&]uh1jhjG4hKDhjz2ubj)}(hG``max_usage`` The maximum number of slots that may be used in the ring h](j)}(h ``max_usage``h]j)}(hjk4h]h max_usage}(hjm4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji4ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKGhje4ubj)}(hhh]h)}(h8The maximum number of slots that may be used in the ringh]h8The maximum number of slots that may be used in the ring}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hKGhj4ubah}(h]h ]h"]h$]h&]uh1jhje4ubeh}(h]h ]h"]h$]h&]uh1jhj4hKGhjz2ubj)}(h?``ring_size`` total number of buffers (should be a power of 2) h](j)}(h ``ring_size``h]j)}(hj4h]h ring_size}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKHhj4ubj)}(hhh]h)}(h0total number of buffers (should be a power of 2)h]h0total number of buffers (should be a power of 2)}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hKHhj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhj4hKHhjz2ubj)}(hF``nr_accounted`` The amount this pipe accounts for in user->pipe_bufs h](j)}(h``nr_accounted``h]j)}(hj4h]h nr_accounted}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKIhj4ubj)}(hhh]h)}(h4The amount this pipe accounts for in user->pipe_bufsh]h4The amount this pipe accounts for in user->pipe_bufs}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hKIhj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhj4hKIhjz2ubj)}(h3``readers`` number of current readers of this pipe h](j)}(h ``readers``h]j)}(hj5h]hreaders}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKKhj5ubj)}(hhh]h)}(h&number of current readers of this pipeh]h&number of current readers of this pipe}(hj/5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+5hKKhj,5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj+5hKKhjz2ubj)}(h3``writers`` number of current writers of this pipe h](j)}(h ``writers``h]j)}(hjO5h]hwriters}(hjQ5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM5ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKLhjI5ubj)}(hhh]h)}(h&number of current writers of this pipeh]h&number of current writers of this pipe}(hjh5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjd5hKLhje5ubah}(h]h ]h"]h$]h&]uh1jhjI5ubeh}(h]h ]h"]h$]h&]uh1jhjd5hKLhjz2ubj)}(hL``files`` number of struct file referring this pipe (protected by ->i_lock) h](j)}(h ``files``h]j)}(hj5h]hfiles}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKMhj5ubj)}(hhh]h)}(hAnumber of struct file referring this pipe (protected by ->i_lock)h]hAnumber of struct file referring this pipe (protected by ->i_lock)}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hKMhj5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj5hKMhjz2ubj)}(h``r_counter`` reader counter h](j)}(h ``r_counter``h]j)}(hj5h]h r_counter}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKNhj5ubj)}(hhh]h)}(hreader counterh]hreader counter}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hKNhj5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj5hKNhjz2ubj)}(h``w_counter`` writer counter h](j)}(h ``w_counter``h]j)}(hj5h]h w_counter}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKOhj5ubj)}(hhh]h)}(hwriter counterh]hwriter counter}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKOhj6ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj6hKOhjz2ubj)}(hE``poll_usage`` is this pipe used for epoll, which has crazy wakeups? h](j)}(h``poll_usage``h]j)}(hj36h]h poll_usage}(hj56hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj16ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKPhj-6ubj)}(hhh]h)}(h5is this pipe used for epoll, which has crazy wakeups?h]h5is this pipe used for epoll, which has crazy wakeups?}(hjL6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjH6hKPhjI6ubah}(h]h ]h"]h$]h&]uh1jhj-6ubeh}(h]h ]h"]h$]h&]uh1jhjH6hKPhjz2ubj)}(h@``note_loss`` The next read() should insert a data-lost message h](j)}(h ``note_loss``h]j)}(hjl6h]h note_loss}(hjn6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj6ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKFhjf6ubj)}(hhh]h)}(h1The next read() should insert a data-lost messageh]h1The next read() should insert a data-lost message}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKFhj6ubah}(h]h ]h"]h$]h&]uh1jhjf6ubeh}(h]h ]h"]h$]h&]uh1jhj6hKFhjz2ubj)}(h"``tmp_page`` cached released page h](j)}(h ``tmp_page``h]j)}(hj6h]htmp_page}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKJhj6ubj)}(hhh]h)}(hcached released pageh]hcached released page}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKJhj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhj6hKJhjz2ubj)}(h&``fasync_readers`` reader side fasync h](j)}(h``fasync_readers``h]j)}(hj6h]hfasync_readers}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKQhj6ubj)}(hhh]h)}(hreader side fasynch]hreader side fasync}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKQhj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhj6hKQhjz2ubj)}(h&``fasync_writers`` writer side fasync h](j)}(h``fasync_writers``h]j)}(hj7h]hfasync_writers}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKRhj7ubj)}(hhh]h)}(hwriter side fasynch]hwriter side fasync}(hj07hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,7hKRhj-7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhj,7hKRhjz2ubj)}(h,``bufs`` the circular array of pipe buffers h](j)}(h``bufs``h]j)}(hjP7h]hbufs}(hjR7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN7ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKShjJ7ubj)}(hhh]h)}(h"the circular array of pipe buffersh]h"the circular array of pipe buffers}(hji7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhje7hKShjf7ubah}(h]h ]h"]h$]h&]uh1jhjJ7ubeh}(h]h ]h"]h$]h&]uh1jhje7hKShjz2ubj)}(h(``user`` the user who created this pipe h](j)}(h``user``h]j)}(hj7h]huser}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKThj7ubj)}(hhh]h)}(hthe user who created this pipeh]hthe user who created this pipe}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hKThj7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhj7hKThjz2ubj)}(hI``watch_queue`` If this pipe is a watch_queue, this is the stuff for thath](j)}(h``watch_queue``h]j)}(hj7h]h watch_queue}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKThj7ubj)}(hhh]h)}(h9If this pipe is a watch_queue, this is the stuff for thath]h9If this pipe is a watch_queue, this is the stuff for that}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKUhj7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhj7hKThjz2ubeh}(h]h ]h"]h$]h&]uh1jhj22ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!pipe_has_watch_queue (C function)c.pipe_has_watch_queuehNtauh1hhjF/hhhNhNubh)}(hhh](h)}(h>bool pipe_has_watch_queue (const struct pipe_inode_info *pipe)h]h)}(h=bool pipe_has_watch_queue(const struct pipe_inode_info *pipe)h](j`)}(hboolh]hbool}(hj8hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj8hhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj,)}(h h]h }(hj+8hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj8hhhj*8hKubj=)}(hpipe_has_watch_queueh]h)}(hpipe_has_watch_queueh]hpipe_has_watch_queue}(hj=8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj98ubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hj8hhhj*8hKubjZ)}(h$(const struct pipe_inode_info *pipe)h]j`)}(h"const struct pipe_inode_info *pipeh](jf)}(hconsth]hconst}(hjY8hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjU8ubj,)}(h h]h }(hjg8hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjU8ubjf)}(hjih]hstruct}(hju8hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjU8ubj,)}(h h]h }(hj8hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjU8ubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj8modnameN classnameNjj)}j!]j$)}jj?8sbc.pipe_has_watch_queueasbuh1hhjU8ubj,)}(h h]h }(hj8hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjU8ubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjU8ubh)}(hpipeh]hpipe}(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjU8ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjQ8ubah}(h]h ]h"]h$]h&]jWjXuh1jYhj8hhhj*8hKubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhj8hhhj*8hKubah}(h]j8ah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj*8hKhj8hhubjd)}(hhh]h)}(hUCheck whether the pipe is a watch_queue, i.e. it was created with O_NOTIFICATION_PIPEh]hUCheck whether the pipe is a watch_queue, i.e. it was created with O_NOTIFICATION_PIPE}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj8hhubah}(h]h ]h"]h$]h&]uh1jchj8hhhj*8hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj9jj9jjjuh1hhhhjF/hNhNubj)}(h**Parameters** ``const struct pipe_inode_info *pipe`` The pipe to check **Return** true if pipe is a watch queue, false otherwise.h](h)}(h**Parameters**h]j)}(hj9h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj9ubj)}(hhh]j)}(h9``const struct pipe_inode_info *pipe`` The pipe to check h](j)}(h&``const struct pipe_inode_info *pipe``h]j)}(hj99h]h"const struct pipe_inode_info *pipe}(hj;9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj79ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj39ubj)}(hhh]h)}(hThe pipe to checkh]hThe pipe to check}(hjR9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjN9hKhjO9ubah}(h]h ]h"]h$]h&]uh1jhj39ubeh}(h]h ]h"]h$]h&]uh1jhjN9hKhj09ubah}(h]h ]h"]h$]h&]uh1jhj9ubh)}(h **Return**h]j)}(hjt9h]hReturn}(hjv9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjr9ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj9ubh)}(h/true if pipe is a watch queue, false otherwise.h]h/true if pipe is a watch queue, false otherwise.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_occupancy (C function)c.pipe_occupancyhNtauh1hhjF/hhhNhNubh)}(hhh](h)}(hBunsigned int pipe_occupancy (unsigned int head, unsigned int tail)h]h)}(hAunsigned int pipe_occupancy(unsigned int head, unsigned int tail)h](j`)}(hunsignedh]hunsigned}(hj9hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj9hhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj,)}(h h]h }(hj9hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj9hhhj9hKubj`)}(hinth]hint}(hj9hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj9hhhj9hKubj,)}(h h]h }(hj9hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj9hhhj9hKubj=)}(hpipe_occupancyh]h)}(hpipe_occupancyh]hpipe_occupancy}(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj9ubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hj9hhhj9hKubjZ)}(h&(unsigned int head, unsigned int tail)h](j`)}(hunsigned int headh](j`)}(hunsignedh]hunsigned}(hj:hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj:ubj,)}(h h]h }(hj :hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj:ubj`)}(hinth]hint}(hj.:hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj:ubj,)}(h h]h }(hj<:hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj:ubh)}(hheadh]hhead}(hjJ:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj:ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj :ubj`)}(hunsigned int tailh](j`)}(hunsignedh]hunsigned}(hjc:hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj_:ubj,)}(h h]h }(hjq:hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj_:ubj`)}(hinth]hint}(hj:hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj_:ubj,)}(h h]h }(hj:hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj_:ubh)}(htailh]htail}(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj_:ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj :ubeh}(h]h ]h"]h$]h&]jWjXuh1jYhj9hhhj9hKubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhj9hhhj9hKubah}(h]j9ah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj9hKhj9hhubjd)}(hhh]h)}(h'Return number of slots used in the pipeh]h'Return number of slots used in the pipe}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj:hhubah}(h]h ]h"]h$]h&]uh1jchj9hhhj9hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj:jj:jjjuh1hhhhjF/hNhNubj)}(hv**Parameters** ``unsigned int head`` The pipe ring head pointer ``unsigned int tail`` The pipe ring tail pointerh](h)}(h**Parameters**h]j)}(hj:h]h Parameters}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj:ubj)}(hhh](j)}(h1``unsigned int head`` The pipe ring head pointer h](j)}(h``unsigned int head``h]j)}(hj;h]hunsigned int head}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj;ubj)}(hhh]h)}(hThe pipe ring head pointerh]hThe pipe ring head pointer}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hKhj;ubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhj;hKhj:ubj)}(h0``unsigned int tail`` The pipe ring tail pointerh](j)}(h``unsigned int tail``h]j)}(hj?;h]hunsigned int tail}(hjA;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=;ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj9;ubj)}(hhh]h)}(hThe pipe ring tail pointerh]hThe pipe ring tail pointer}(hjX;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjU;ubah}(h]h ]h"]h$]h&]uh1jhj9;ubeh}(h]h ]h"]h$]h&]uh1jhjT;hKhj:ubeh}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_empty (C function) c.pipe_emptyhNtauh1hhjF/hhhNhNubh)}(hhh](h)}(h6bool pipe_empty (unsigned int head, unsigned int tail)h]h)}(h5bool pipe_empty(unsigned int head, unsigned int tail)h](j`)}(hj8h]hbool}(hj;hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj;hhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj,)}(h h]h }(hj;hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj;hhhj;hKubj=)}(h pipe_emptyh]h)}(h pipe_emptyh]h pipe_empty}(hj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj;ubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hj;hhhj;hKubjZ)}(h&(unsigned int head, unsigned int tail)h](j`)}(hunsigned int headh](j`)}(hunsignedh]hunsigned}(hj;hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj;ubj,)}(h h]h }(hj;hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj;ubj`)}(hinth]hint}(hj;hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj;ubj,)}(h h]h }(hj;hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj;ubh)}(hheadh]hhead}(hj <hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj;ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj;ubj`)}(hunsigned int tailh](j`)}(hunsignedh]hunsigned}(hj&<hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj"<ubj,)}(h h]h }(hj4<hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj"<ubj`)}(hinth]hint}(hjB<hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj"<ubj,)}(h h]h }(hjP<hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj"<ubh)}(htailh]htail}(hj^<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj"<ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj;ubeh}(h]h ]h"]h$]h&]jWjXuh1jYhj;hhhj;hKubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhj;hhhj;hKubah}(h]j;ah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj;hKhj;hhubjd)}(hhh]h)}(h Return true if the pipe is emptyh]h Return true if the pipe is empty}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj<hhubah}(h]h ]h"]h$]h&]uh1jchj;hhhj;hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj<jj<jjjuh1hhhhjF/hNhNubj)}(hv**Parameters** ``unsigned int head`` The pipe ring head pointer ``unsigned int tail`` The pipe ring tail pointerh](h)}(h**Parameters**h]j)}(hj<h]h Parameters}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj<ubj)}(hhh](j)}(h1``unsigned int head`` The pipe ring head pointer h](j)}(h``unsigned int head``h]j)}(hj<h]hunsigned int head}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj<ubj)}(hhh]h)}(hThe pipe ring head pointerh]hThe pipe ring head pointer}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hKhj<ubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jhj<hKhj<ubj)}(h0``unsigned int tail`` The pipe ring tail pointerh](j)}(h``unsigned int tail``h]j)}(hj=h]hunsigned int tail}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj<ubj)}(hhh]h)}(hThe pipe ring tail pointerh]hThe pipe ring tail pointer}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj=ubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jhj=hKhj<ubeh}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_full (C function) c.pipe_fullhNtauh1hhjF/hhhNhNubh)}(hhh](h)}(hIbool pipe_full (unsigned int head, unsigned int tail, unsigned int limit)h]h)}(hHbool pipe_full(unsigned int head, unsigned int tail, unsigned int limit)h](j`)}(hj8h]hbool}(hj\=hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjX=hhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj,)}(h h]h }(hjj=hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjX=hhhji=hKubj=)}(h pipe_fullh]h)}(h pipe_fullh]h pipe_full}(hj|=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjx=ubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjX=hhhji=hKubjZ)}(h:(unsigned int head, unsigned int tail, unsigned int limit)h](j`)}(hunsigned int headh](j`)}(hunsignedh]hunsigned}(hj=hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj=ubj,)}(h h]h }(hj=hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj=ubj`)}(hinth]hint}(hj=hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj=ubj,)}(h h]h }(hj=hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj=ubh)}(hheadh]hhead}(hj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj=ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj=ubj`)}(hunsigned int tailh](j`)}(hunsignedh]hunsigned}(hj=hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj=ubj,)}(h h]h }(hj=hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj=ubj`)}(hinth]hint}(hj>hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj=ubj,)}(h h]h }(hj>hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj=ubh)}(htailh]htail}(hj!>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj=ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj=ubj`)}(hunsigned int limith](j`)}(hunsignedh]hunsigned}(hj:>hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj6>ubj,)}(h h]h }(hjH>hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj6>ubj`)}(hinth]hint}(hjV>hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj6>ubj,)}(h h]h }(hjd>hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj6>ubh)}(hlimith]hlimit}(hjr>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj6>ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj=ubeh}(h]h ]h"]h$]h&]jWjXuh1jYhjX=hhhji=hKubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjT=hhhji=hKubah}(h]jO=ah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhji=hKhjQ=hhubjd)}(hhh]h)}(hReturn true if the pipe is fullh]hReturn true if the pipe is full}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj>hhubah}(h]h ]h"]h$]h&]uh1jchjQ=hhhji=hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj>jj>jjjuh1hhhhjF/hNhNubj)}(h**Parameters** ``unsigned int head`` The pipe ring head pointer ``unsigned int tail`` The pipe ring tail pointer ``unsigned int limit`` The maximum amount of slots available.h](h)}(h**Parameters**h]j)}(hj>h]h Parameters}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj>ubj)}(hhh](j)}(h1``unsigned int head`` The pipe ring head pointer h](j)}(h``unsigned int head``h]j)}(hj>h]hunsigned int head}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj>ubj)}(hhh]h)}(hThe pipe ring head pointerh]hThe pipe ring head pointer}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhj>ubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1jhj>hKhj>ubj)}(h1``unsigned int tail`` The pipe ring tail pointer h](j)}(h``unsigned int tail``h]j)}(hj?h]hunsigned int tail}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj?ubj)}(hhh]h)}(hThe pipe ring tail pointerh]hThe pipe ring tail pointer}(hj/?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+?hKhj,?ubah}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]uh1jhj+?hKhj>ubj)}(h=``unsigned int limit`` The maximum amount of slots available.h](j)}(h``unsigned int limit``h]j)}(hjO?h]hunsigned int limit}(hjQ?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM?ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjI?ubj)}(hhh]h)}(h&The maximum amount of slots available.h]h&The maximum amount of slots available.}(hjh?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhje?ubah}(h]h ]h"]h$]h&]uh1jhjI?ubeh}(h]h ]h"]h$]h&]uh1jhjd?hKhj>ubeh}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_is_full (C function)c.pipe_is_fullhNtauh1hhjF/hhhNhNubh)}(hhh](h)}(h6bool pipe_is_full (const struct pipe_inode_info *pipe)h]h)}(h5bool pipe_is_full(const struct pipe_inode_info *pipe)h](j`)}(hj8h]hbool}(hj?hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj?hhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj,)}(h h]h }(hj?hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj?hhhj?hKubj=)}(h pipe_is_fullh]h)}(h pipe_is_fullh]h pipe_is_full}(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj?ubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hj?hhhj?hKubjZ)}(h$(const struct pipe_inode_info *pipe)h]j`)}(h"const struct pipe_inode_info *pipeh](jf)}(hj[8h]hconst}(hj?hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehj?ubj,)}(h h]h }(hj?hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj?ubjf)}(hjih]hstruct}(hj@hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehj?ubj,)}(h h]h }(hj @hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj?ubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj @modnameN classnameNjj)}j!]j$)}jj?sbc.pipe_is_fullasbuh1hhj?ubj,)}(h h]h }(hj>@hhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj?ubj)}(hjh]h*}(hjL@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubh)}(hpipeh]hpipe}(hjY@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj?ubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj?ubah}(h]h ]h"]h$]h&]jWjXuh1jYhj?hhhj?hKubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhj?hhhj?hKubah}(h]j?ah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj?hKhj?hhubjd)}(hhh]h)}(hReturn true if the pipe is fullh]hReturn true if the pipe is full}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj@hhubah}(h]h ]h"]h$]h&]uh1jchj?hhhj?hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj@jj@jjjuh1hhhhjF/hNhNubj)}(hA**Parameters** ``const struct pipe_inode_info *pipe`` the pipeh](h)}(h**Parameters**h]j)}(hj@h]h Parameters}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj@ubj)}(hhh]j)}(h/``const struct pipe_inode_info *pipe`` the pipeh](j)}(h&``const struct pipe_inode_info *pipe``h]j)}(hj@h]h"const struct pipe_inode_info *pipe}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj@ubj)}(hhh]h)}(hthe pipeh]hthe pipe}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj@ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]uh1jhj@hKhj@ubah}(h]h ]h"]h$]h&]uh1jhj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_is_empty (C function)c.pipe_is_emptyhNtauh1hhjF/hhhNhNubh)}(hhh](h)}(h7bool pipe_is_empty (const struct pipe_inode_info *pipe)h]h)}(h6bool pipe_is_empty(const struct pipe_inode_info *pipe)h](j`)}(hj8h]hbool}(hjAhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjAhhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj,)}(h h]h }(hj,AhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjAhhhj+AhKubj=)}(h pipe_is_emptyh]h)}(h pipe_is_emptyh]h pipe_is_empty}(hj>AhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj:Aubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjAhhhj+AhKubjZ)}(h$(const struct pipe_inode_info *pipe)h]j`)}(h"const struct pipe_inode_info *pipeh](jf)}(hj[8h]hconst}(hjZAhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjVAubj,)}(h h]h }(hjgAhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjVAubjf)}(hjih]hstruct}(hjuAhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjVAubj,)}(h h]h }(hjAhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjVAubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j!]j$)}jj@Asbc.pipe_is_emptyasbuh1hhjVAubj,)}(h h]h }(hjAhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjVAubj)}(hjh]h*}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVAubh)}(hpipeh]hpipe}(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjVAubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjRAubah}(h]h ]h"]h$]h&]jWjXuh1jYhjAhhhj+AhKubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjAhhhj+AhKubah}(h]jAah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj+AhKhjAhhubjd)}(hhh]h)}(h Return true if the pipe is emptyh]h Return true if the pipe is empty}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjAhhubah}(h]h ]h"]h$]h&]uh1jchjAhhhj+AhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjBjjBjjjuh1hhhhjF/hNhNubj)}(hA**Parameters** ``const struct pipe_inode_info *pipe`` the pipeh](h)}(h**Parameters**h]j)}(hjBh]h Parameters}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjBubj)}(hhh]j)}(h/``const struct pipe_inode_info *pipe`` the pipeh](j)}(h&``const struct pipe_inode_info *pipe``h]j)}(hj9Bh]h"const struct pipe_inode_info *pipe}(hj;BhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7Bubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj3Bubj)}(hhh]h)}(hthe pipeh]hthe pipe}(hjRBhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjOBubah}(h]h ]h"]h$]h&]uh1jhj3Bubeh}(h]h ]h"]h$]h&]uh1jhjNBhKhj0Bubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_buf_usage (C function)c.pipe_buf_usagehNtauh1hhjF/hhhNhNubh)}(hhh](h)}(h@unsigned int pipe_buf_usage (const struct pipe_inode_info *pipe)h]h)}(h?unsigned int pipe_buf_usage(const struct pipe_inode_info *pipe)h](j`)}(hunsignedh]hunsigned}(hjBhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjBhhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj,)}(h h]h }(hjBhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjBhhhjBhKubj`)}(hinth]hint}(hjBhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjBhhhjBhKubj,)}(h h]h }(hjBhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjBhhhjBhKubj=)}(hpipe_buf_usageh]h)}(hpipe_buf_usageh]hpipe_buf_usage}(hjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjBubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjBhhhjBhKubjZ)}(h$(const struct pipe_inode_info *pipe)h]j`)}(h"const struct pipe_inode_info *pipeh](jf)}(hj[8h]hconst}(hjBhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjBubj,)}(h h]h }(hjBhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjBubjf)}(hjih]hstruct}(hjChhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjBubj,)}(h h]h }(hjChhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjBubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hj%ChhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj"Cubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'CmodnameN classnameNjj)}j!]j$)}jjBsbc.pipe_buf_usageasbuh1hhjBubj,)}(h h]h }(hjEChhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjBubj)}(hjh]h*}(hjSChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubh)}(hpipeh]hpipe}(hj`ChhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjBubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjBubah}(h]h ]h"]h$]h&]jWjXuh1jYhjBhhhjBhKubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjBhhhjBhKubah}(h]jBah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhjBhKhjBhhubjd)}(hhh]h)}(h'Return how many pipe buffers are in useh]h'Return how many pipe buffers are in use}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjChhubah}(h]h ]h"]h$]h&]uh1jchjBhhhjBhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjCjjCjjjuh1hhhhjF/hNhNubj)}(hA**Parameters** ``const struct pipe_inode_info *pipe`` the pipeh](h)}(h**Parameters**h]j)}(hjCh]h Parameters}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjCubj)}(hhh]j)}(h/``const struct pipe_inode_info *pipe`` the pipeh](j)}(h&``const struct pipe_inode_info *pipe``h]j)}(hjCh]h"const struct pipe_inode_info *pipe}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjCubj)}(hhh]h)}(hthe pipeh]hthe pipe}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjCubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhjChKhjCubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_buf (C function) c.pipe_bufhNtauh1hhjF/hhhNhNubh)}(hhh](h)}(hUstruct pipe_buffer * pipe_buf (const struct pipe_inode_info *pipe, unsigned int slot)h]h)}(hSstruct pipe_buffer *pipe_buf(const struct pipe_inode_info *pipe, unsigned int slot)h](jf)}(hjih]hstruct}(hj%DhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehj!Dhhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj,)}(h h]h }(hj3DhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj!Dhhhj2DhKubh)}(hhh]h)}(h pipe_bufferh]h pipe_buffer}(hjDDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjADubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjFDmodnameN classnameNjj)}j!]j$)}jpipe_bufsb c.pipe_bufasbuh1hhj!Dhhhj2DhKubj,)}(h h]h }(hjeDhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj!Dhhhj2DhKubj)}(hjh]h*}(hjsDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!Dhhhj2DhKubj=)}(hpipe_bufh]h)}(hjbDh]hpipe_buf}(hjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjDubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hj!Dhhhj2DhKubjZ)}(h7(const struct pipe_inode_info *pipe, unsigned int slot)h](j`)}(h"const struct pipe_inode_info *pipeh](jf)}(hj[8h]hconst}(hjDhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjDubj,)}(h h]h }(hjDhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjDubjf)}(hjih]hstruct}(hjDhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjDubj,)}(h h]h }(hjDhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjDubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j!]j`D c.pipe_bufasbuh1hhjDubj,)}(h h]h }(hjDhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjDubj)}(hjh]h*}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubh)}(hpipeh]hpipe}(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjDubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjDubj`)}(hunsigned int sloth](j`)}(hunsignedh]hunsigned}(hj*EhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj&Eubj,)}(h h]h }(hj8EhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj&Eubj`)}(hinth]hint}(hjFEhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj&Eubj,)}(h h]h }(hjTEhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj&Eubh)}(hsloth]hslot}(hjbEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj&Eubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjDubeh}(h]h ]h"]h$]h&]jWjXuh1jYhj!Dhhhj2DhKubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjDhhhj2DhKubah}(h]jDah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj2DhKhjDhhubjd)}(hhh]h)}(h>Return the pipe buffer for the specified slot in the pipe ringh]h>Return the pipe buffer for the specified slot in the pipe ring}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjEhhubah}(h]h ]h"]h$]h&]uh1jchjDhhhj2DhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjEjjEjjjuh1hhhhjF/hNhNubj)}(hy**Parameters** ``const struct pipe_inode_info *pipe`` The pipe to access ``unsigned int slot`` The slot of interesth](h)}(h**Parameters**h]j)}(hjEh]h Parameters}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjEubj)}(hhh](j)}(h:``const struct pipe_inode_info *pipe`` The pipe to access h](j)}(h&``const struct pipe_inode_info *pipe``h]j)}(hjEh]h"const struct pipe_inode_info *pipe}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjEubj)}(hhh]h)}(hThe pipe to accessh]hThe pipe to access}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhKhjEubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1jhjEhKhjEubj)}(h*``unsigned int slot`` The slot of interesth](j)}(h``unsigned int slot``h]j)}(hjFh]hunsigned int slot}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjFubj)}(hhh]h)}(hThe slot of interesth]hThe slot of interest}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjFubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjFhKhjEubeh}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_head_buf (C function)c.pipe_head_bufhNtauh1hhjF/hhhNhNubh)}(hhh](h)}(hGstruct pipe_buffer * pipe_head_buf (const struct pipe_inode_info *pipe)h]h)}(hEstruct pipe_buffer *pipe_head_buf(const struct pipe_inode_info *pipe)h](jf)}(hjih]hstruct}(hj`FhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehj\Fhhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj,)}(h h]h }(hjnFhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj\FhhhjmFhKubh)}(hhh]h)}(h pipe_bufferh]h pipe_buffer}(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|Fubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjFmodnameN classnameNjj)}j!]j$)}j pipe_head_bufsbc.pipe_head_bufasbuh1hhj\FhhhjmFhKubj,)}(h h]h }(hjFhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj\FhhhjmFhKubj)}(hjh]h*}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\FhhhjmFhKubj=)}(h pipe_head_bufh]h)}(hjFh]h pipe_head_buf}(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjFubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hj\FhhhjmFhKubjZ)}(h$(const struct pipe_inode_info *pipe)h]j`)}(h"const struct pipe_inode_info *pipeh](jf)}(hj[8h]hconst}(hjFhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjFubj,)}(h h]h }(hjFhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjFubjf)}(hjih]hstruct}(hjFhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjFubj,)}(h h]h }(hjGhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjFubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjGubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjGmodnameN classnameNjj)}j!]jFc.pipe_head_bufasbuh1hhjFubj,)}(h h]h }(hj1GhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjFubj)}(hjh]h*}(hj?GhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFubh)}(hpipeh]hpipe}(hjLGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjFubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjFubah}(h]h ]h"]h$]h&]jWjXuh1jYhj\FhhhjmFhKubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjXFhhhjmFhKubah}(h]jSFah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhjmFhKhjUFhhubjd)}(hhh]h)}(h3Return the pipe buffer at the head of the pipe ringh]h3Return the pipe buffer at the head of the pipe ring}(hjvGhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjsGhhubah}(h]h ]h"]h$]h&]uh1jchjUFhhhjmFhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjGjjGjjjuh1hhhhjF/hNhNubj)}(hK**Parameters** ``const struct pipe_inode_info *pipe`` The pipe to accessh](h)}(h**Parameters**h]j)}(hjGh]h Parameters}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjGubj)}(hhh]j)}(h9``const struct pipe_inode_info *pipe`` The pipe to accessh](j)}(h&``const struct pipe_inode_info *pipe``h]j)}(hjGh]h"const struct pipe_inode_info *pipe}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhjGubj)}(hhh]h)}(hThe pipe to accessh]hThe pipe to access}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjGubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]uh1jhjGhMhjGubah}(h]h ]h"]h$]h&]uh1jhjGubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_buf_get (C function)c.pipe_buf_gethNtauh1hhjF/hhhNhNubh)}(hhh](h)}(hIbool pipe_buf_get (struct pipe_inode_info *pipe, struct pipe_buffer *buf)h]h)}(hHbool pipe_buf_get(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hj8h]hbool}(hjHhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj Hhhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhM ubj,)}(h h]h }(hjHhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hj HhhhjHhM ubj=)}(h pipe_buf_geth]h)}(h pipe_buf_geth]h pipe_buf_get}(hj1HhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj-Hubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hj HhhhjHhM ubjZ)}(h7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hjMHhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjIHubj,)}(h h]h }(hjZHhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjIHubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjkHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmHmodnameN classnameNjj)}j!]j$)}jj3Hsbc.pipe_buf_getasbuh1hhjIHubj,)}(h h]h }(hjHhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjIHubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIHubh)}(hpipeh]hpipe}(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjIHubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjEHubj`)}(hstruct pipe_buffer *bufh](jf)}(hjih]hstruct}(hjHhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjHubj,)}(h h]h }(hjHhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjHubh)}(hhh]h)}(h pipe_bufferh]h pipe_buffer}(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjHmodnameN classnameNjj)}j!]jHc.pipe_buf_getasbuh1hhjHubj,)}(h h]h }(hjHhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjHubj)}(hjh]h*}(hj IhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubh)}(hbufh]hbuf}(hjIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjHubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjEHubeh}(h]h ]h"]h$]h&]jWjXuh1jYhj HhhhjHhM ubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhj HhhhjHhM ubah}(h]jHah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhjHhM hjHhhubjd)}(hhh]h)}(h get a reference to a pipe_bufferh]h get a reference to a pipe_buffer}(hj@IhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhj=Ihhubah}(h]h ]h"]h$]h&]uh1jchjHhhhjHhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjXIjjXIjjjuh1hhhhjF/hNhNubj)}(h**Parameters** ``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ``struct pipe_buffer *buf`` the buffer to get a reference to **Return** ``true`` if the reference was successfully obtained.h](h)}(h**Parameters**h]j)}(hjbIh]h Parameters}(hjdIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`Iubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhj\Iubj)}(hhh](j)}(hE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjIh]hstruct pipe_inode_info *pipe}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhj{Iubj)}(hhh]h)}(h#the pipe that the buffer belongs toh]h#the pipe that the buffer belongs to}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhMhjIubah}(h]h ]h"]h$]h&]uh1jhj{Iubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjxIubj)}(h=``struct pipe_buffer *buf`` the buffer to get a reference to h](j)}(h``struct pipe_buffer *buf``h]j)}(hjIh]hstruct pipe_buffer *buf}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhjIubj)}(hhh]h)}(h the buffer to get a reference toh]h the buffer to get a reference to}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhMhjIubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjxIubeh}(h]h ]h"]h$]h&]uh1jhj\Iubh)}(h **Return**h]j)}(hjIh]hReturn}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhj\Iubh)}(h4``true`` if the reference was successfully obtained.h](j)}(h``true``h]htrue}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Jubh, if the reference was successfully obtained.}(hj JhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhj\Iubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_buf_release (C function)c.pipe_buf_releasehNtauh1hhjF/hhhNhNubh)}(hhh](h)}(hMvoid pipe_buf_release (struct pipe_inode_info *pipe, struct pipe_buffer *buf)h]h)}(hLvoid pipe_buf_release(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hvoidh]hvoid}(hjHJhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjDJhhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMubj,)}(h h]h }(hjWJhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjDJhhhjVJhMubj=)}(hpipe_buf_releaseh]h)}(hpipe_buf_releaseh]hpipe_buf_release}(hjiJhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjeJubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjDJhhhjVJhMubjZ)}(h7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hjJhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjJubj,)}(h h]h }(hjJhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjJubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjJhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjJubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJmodnameN classnameNjj)}j!]j$)}jjkJsbc.pipe_buf_releaseasbuh1hhjJubj,)}(h h]h }(hjJhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjJubj)}(hjh]h*}(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubh)}(hpipeh]hpipe}(hjJhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjJubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj}Jubj`)}(hstruct pipe_buffer *bufh](jf)}(hjih]hstruct}(hjJhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjJubj,)}(h h]h }(hjKhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjJubh)}(hhh]h)}(h pipe_bufferh]h pipe_buffer}(hjKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjKubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjKmodnameN classnameNjj)}j!]jJc.pipe_buf_releaseasbuh1hhjJubj,)}(h h]h }(hj3KhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjJubj)}(hjh]h*}(hjAKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubh)}(hbufh]hbuf}(hjNKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjJubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hj}Jubeh}(h]h ]h"]h$]h&]jWjXuh1jYhjDJhhhjVJhMubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhj@JhhhjVJhMubah}(h]j;Jah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhjVJhMhj=Jhhubjd)}(hhh]h)}(h put a reference to a pipe_bufferh]h put a reference to a pipe_buffer}(hjxKhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhjuKhhubah}(h]h ]h"]h$]h&]uh1jchj=JhhhjVJhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjKjjKjjjuh1hhhhjF/hNhNubj)}(h**Parameters** ``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ``struct pipe_buffer *buf`` the buffer to put a reference toh](h)}(h**Parameters**h]j)}(hjKh]h Parameters}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhjKubj)}(hhh](j)}(hE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjKh]hstruct pipe_inode_info *pipe}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhjKubj)}(hhh]h)}(h#the pipe that the buffer belongs toh]h#the pipe that the buffer belongs to}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhMhjKubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhjKhMhjKubj)}(h<``struct pipe_buffer *buf`` the buffer to put a reference toh](j)}(h``struct pipe_buffer *buf``h]j)}(hjKh]hstruct pipe_buffer *buf}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhjKubj)}(hhh]h)}(h the buffer to put a reference toh]h the buffer to put a reference to}(hj LhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhjLubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhjLhMhjKubeh}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_buf_confirm (C function)c.pipe_buf_confirmhNtauh1hhjF/hhhNhNubh)}(hhh](h)}(hLint pipe_buf_confirm (struct pipe_inode_info *pipe, struct pipe_buffer *buf)h]h)}(hKint pipe_buf_confirm(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hinth]hint}(hjLLhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjHLhhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhM"ubj,)}(h h]h }(hj[LhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjHLhhhjZLhM"ubj=)}(hpipe_buf_confirmh]h)}(hpipe_buf_confirmh]hpipe_buf_confirm}(hjmLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjiLubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjHLhhhjZLhM"ubjZ)}(h7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hjLhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjLubj,)}(h h]h }(hjLhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjLubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjLubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjLmodnameN classnameNjj)}j!]j$)}jjoLsbc.pipe_buf_confirmasbuh1hhjLubj,)}(h h]h }(hjLhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjLubj)}(hjh]h*}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubh)}(hpipeh]hpipe}(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjLubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjLubj`)}(hstruct pipe_buffer *bufh](jf)}(hjih]hstruct}(hjLhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjLubj,)}(h h]h }(hjMhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjLubh)}(hhh]h)}(h pipe_bufferh]h pipe_buffer}(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjMubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjMmodnameN classnameNjj)}j!]jLc.pipe_buf_confirmasbuh1hhjLubj,)}(h h]h }(hj7MhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjLubj)}(hjh]h*}(hjEMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubh)}(hbufh]hbuf}(hjRMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjLubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjLubeh}(h]h ]h"]h$]h&]jWjXuh1jYhjHLhhhjZLhM"ubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjDLhhhjZLhM"ubah}(h]j?Lah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhjZLhM"hjALhhubjd)}(hhh]h)}(h"verify contents of the pipe bufferh]h"verify contents of the pipe buffer}(hj|MhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhjyMhhubah}(h]h ]h"]h$]h&]uh1jchjALhhhjZLhM"ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjMjjMjjjuh1hhhhjF/hNhNubj)}(h**Parameters** ``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ``struct pipe_buffer *buf`` the buffer to confirmh](h)}(h**Parameters**h]j)}(hjMh]h Parameters}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhM"hjMubj)}(hhh](j)}(hE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjMh]hstruct pipe_inode_info *pipe}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMhjMubj)}(hhh]h)}(h#the pipe that the buffer belongs toh]h#the pipe that the buffer belongs to}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhMhjMubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jhjMhMhjMubj)}(h1``struct pipe_buffer *buf`` the buffer to confirmh](j)}(h``struct pipe_buffer *buf``h]j)}(hjMh]hstruct pipe_buffer *buf}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhM!hjMubj)}(hhh]h)}(hthe buffer to confirmh]hthe buffer to confirm}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhM hj Nubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jhj NhM!hjMubeh}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_buf_try_steal (C function)c.pipe_buf_try_stealhNtauh1hhjF/hhhNhNubh)}(hhh](h)}(hObool pipe_buf_try_steal (struct pipe_inode_info *pipe, struct pipe_buffer *buf)h]h)}(hNbool pipe_buf_try_steal(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hj8h]hbool}(hjPNhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjLNhhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhM/ubj,)}(h h]h }(hj^NhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjLNhhhj]NhM/ubj=)}(hpipe_buf_try_stealh]h)}(hpipe_buf_try_stealh]hpipe_buf_try_steal}(hjpNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjlNubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjLNhhhj]NhM/ubjZ)}(h7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hjNhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjNubj,)}(h h]h }(hjNhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjNubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjNubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjNmodnameN classnameNjj)}j!]j$)}jjrNsbc.pipe_buf_try_stealasbuh1hhjNubj,)}(h h]h }(hjNhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjNubj)}(hjh]h*}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubh)}(hpipeh]hpipe}(hjNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjNubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjNubj`)}(hstruct pipe_buffer *bufh](jf)}(hjih]hstruct}(hjNhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjNubj,)}(h h]h }(hj OhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjNubh)}(hhh]h)}(h pipe_bufferh]h pipe_buffer}(hjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjOubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjOmodnameN classnameNjj)}j!]jNc.pipe_buf_try_stealasbuh1hhjNubj,)}(h h]h }(hj:OhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjNubj)}(hjh]h*}(hjHOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubh)}(hbufh]hbuf}(hjUOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjNubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjNubeh}(h]h ]h"]h$]h&]jWjXuh1jYhjLNhhhj]NhM/ubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjHNhhhj]NhM/ubah}(h]jCNah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj]NhM/hjENhhubjd)}(hhh]h)}(h*attempt to take ownership of a pipe_bufferh]h*attempt to take ownership of a pipe_buffer}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhM+hj|Ohhubah}(h]h ]h"]h$]h&]uh1jchjENhhhj]NhM/ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjOjjOjjjuh1hhhhjF/hNhNubj)}(h**Parameters** ``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ``struct pipe_buffer *buf`` the buffer to attempt to stealh](h)}(h**Parameters**h]j)}(hjOh]h Parameters}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhM/hjOubj)}(hhh](j)}(hE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjOh]hstruct pipe_inode_info *pipe}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhM,hjOubj)}(hhh]h)}(h#the pipe that the buffer belongs toh]h#the pipe that the buffer belongs to}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhM,hjOubah}(h]h ]h"]h$]h&]uh1jhjOubeh}(h]h ]h"]h$]h&]uh1jhjOhM,hjOubj)}(h:``struct pipe_buffer *buf`` the buffer to attempt to stealh](j)}(h``struct pipe_buffer *buf``h]j)}(hjOh]hstruct pipe_buffer *buf}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhM.hjOubj)}(hhh]h)}(hthe buffer to attempt to stealh]hthe buffer to attempt to steal}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhM-hjPubah}(h]h ]h"]h$]h&]uh1jhjOubeh}(h]h ]h"]h$]h&]uh1jhjPhM.hjOubeh}(h]h ]h"]h$]h&]uh1jhjOubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h'generic_pipe_buf_try_steal (C function)c.generic_pipe_buf_try_stealhNtauh1hhjF/hhhNhNubh)}(hhh](h)}(hWbool generic_pipe_buf_try_steal (struct pipe_inode_info *pipe, struct pipe_buffer *buf)h]h)}(hVbool generic_pipe_buf_try_steal(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hj8h]hbool}(hjSPhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjOPhhhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKubj,)}(h h]h }(hjaPhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjOPhhhj`PhKubj=)}(hgeneric_pipe_buf_try_stealh]h)}(hgeneric_pipe_buf_try_stealh]hgeneric_pipe_buf_try_steal}(hjsPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjoPubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjOPhhhj`PhKubjZ)}(h7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hjPhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjPubj,)}(h h]h }(hjPhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjPubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjPmodnameN classnameNjj)}j!]j$)}jjuPsbc.generic_pipe_buf_try_stealasbuh1hhjPubj,)}(h h]h }(hjPhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjPubj)}(hjh]h*}(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubh)}(hpipeh]hpipe}(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjPubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjPubj`)}(hstruct pipe_buffer *bufh](jf)}(hjih]hstruct}(hjQhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjPubj,)}(h h]h }(hjQhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjPubh)}(hhh]h)}(h pipe_bufferh]h pipe_buffer}(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjQubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!QmodnameN classnameNjj)}j!]jPc.generic_pipe_buf_try_stealasbuh1hhjPubj,)}(h h]h }(hj=QhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjPubj)}(hjh]h*}(hjKQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubh)}(hbufh]hbuf}(hjXQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjPubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjPubeh}(h]h ]h"]h$]h&]jWjXuh1jYhjOPhhhj`PhKubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjKPhhhj`PhKubah}(h]jFPah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj`PhKhjHPhhubjd)}(hhh]h)}(h4attempt to take ownership of a :c:type:`pipe_buffer`h](hattempt to take ownership of a }(hjQhhhNhNubh)}(h:c:type:`pipe_buffer`h]j)}(hjQh]h pipe_buffer}(hjQhhhNhNubah}(h]h ](xrefjc-typeeh"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]refdocfilesystems/splice refdomainjreftypetype refexplicitrefwarnjj)}j!]jPc.generic_pipe_buf_try_stealasb reftarget pipe_bufferuh1hhj`PhKhjQubeh}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjQhhubah}(h]h ]h"]h$]h&]uh1jchjHPhhhj`PhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjQjjQjjjuh1hhhhjF/hNhNubj)}(hX**Parameters** ``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ``struct pipe_buffer *buf`` the buffer to attempt to steal **Description** This function attempts to steal the :c:type:`struct page ` attached to **buf**. If successful, this function returns 0 and returns with the page locked. The caller may then reuse the page for whatever he wishes; the typical use is insertion into a different file page cache.h](h)}(h**Parameters**h]j)}(hjQh]h Parameters}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjQubj)}(hhh](j)}(hE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjQh]hstruct pipe_inode_info *pipe}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1jhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjQubj)}(hhh]h)}(h#the pipe that the buffer belongs toh]h#the pipe that the buffer belongs to}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhKhjRubah}(h]h ]h"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]uh1jhjQhKhjQubj)}(h;``struct pipe_buffer *buf`` the buffer to attempt to steal h](j)}(h``struct pipe_buffer *buf``h]j)}(hj#Rh]hstruct pipe_buffer *buf}(hj%RhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!Rubah}(h]h ]h"]h$]h&]uh1jhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjRubj)}(hhh]h)}(hthe buffer to attempt to stealh]hthe buffer to attempt to steal}(hj` attached to **buf**. If successful, this function returns 0 and returns with the page locked. The caller may then reuse the page for whatever he wishes; the typical use is insertion into a different file page cache.h]h)}(hXThis function attempts to steal the :c:type:`struct page ` attached to **buf**. If successful, this function returns 0 and returns with the page locked. The caller may then reuse the page for whatever he wishes; the typical use is insertion into a different file page cache.h](h$This function attempts to steal the }(hjxRhhhNhNubh)}(h:c:type:`struct page `h]j)}(hjRh]h struct page}(hjRhhhNhNubah}(h]h ](jQjc-typeeh"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]refdocjQ refdomainjreftypetype refexplicitrefwarnjj)}j!]sbjQpageuh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjxRubh attached to }(hjxRhhhNhNubj)}(h**buf**h]hbuf}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxRubh. If successful, this function returns 0 and returns with the page locked. The caller may then reuse the page for whatever he wishes; the typical use is insertion into a different file page cache.}(hjxRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjRhKhjtRubah}(h]h ]h"]h$]h&]uh1jGhjRhKhjQubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!generic_pipe_buf_get (C function)c.generic_pipe_buf_gethNtauh1hhjF/hhhNhNubh)}(hhh](h)}(hQbool generic_pipe_buf_get (struct pipe_inode_info *pipe, struct pipe_buffer *buf)h]h)}(hPbool generic_pipe_buf_get(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hj8h]hbool}(hjRhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjRhhhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKubj,)}(h h]h }(hjRhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjRhhhjRhKubj=)}(hgeneric_pipe_buf_geth]h)}(hgeneric_pipe_buf_geth]hgeneric_pipe_buf_get}(hjShhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjSubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjRhhhjRhKubjZ)}(h7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hj!ShhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjSubj,)}(h h]h }(hj.ShhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjSubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hj?ShhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj`h](hget a reference to a }(hjThhhNhNubh)}(h*:c:type:`struct pipe_buffer `h]j)}(hjTh]hstruct pipe_buffer}(hj ThhhNhNubah}(h]h ](jQjc-typeeh"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]refdocjQ refdomainjreftypetype refexplicitrefwarnjj)}j!]j[Sc.generic_pipe_buf_getasbjQ pipe_bufferuh1hhj`PhKhjTubeh}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjThhubah}(h]h ]h"]h$]h&]uh1jchjRhhhjRhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjPTjjPTjjjuh1hhhhjF/hNhNubj)}(hXF**Parameters** ``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ``struct pipe_buffer *buf`` the buffer to get a reference to **Description** This function grabs an extra reference to **buf**. It's used in the tee() system call, when we duplicate the buffers in one pipe into another.h](h)}(h**Parameters**h]j)}(hjZTh]h Parameters}(hj\ThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXTubah}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjTTubj)}(hhh](j)}(hE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjyTh]hstruct pipe_inode_info *pipe}(hj{ThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwTubah}(h]h ]h"]h$]h&]uh1jhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjsTubj)}(hhh]h)}(h#the pipe that the buffer belongs toh]h#the pipe that the buffer belongs to}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThKhjTubah}(h]h ]h"]h$]h&]uh1jhjsTubeh}(h]h ]h"]h$]h&]uh1jhjThKhjpTubj)}(h=``struct pipe_buffer *buf`` the buffer to get a reference to h](j)}(h``struct pipe_buffer *buf``h]j)}(hjTh]hstruct pipe_buffer *buf}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjTubj)}(hhh]h)}(h the buffer to get a reference toh]h the buffer to get a reference to}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThKhjTubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjThKhjpTubeh}(h]h ]h"]h$]h&]uh1jhjTTubh)}(h**Description**h]j)}(hjTh]h Description}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjTTubjH)}(hThis function grabs an extra reference to **buf**. It's used in the tee() system call, when we duplicate the buffers in one pipe into another.h]h)}(hThis function grabs an extra reference to **buf**. It's used in the tee() system call, when we duplicate the buffers in one pipe into another.h](h*This function grabs an extra reference to }(hjUhhhNhNubj)}(h**buf**h]hbuf}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubh_. It’s used in the tee() system call, when we duplicate the buffers in one pipe into another.}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjUubah}(h]h ]h"]h$]h&]uh1jGhj'UhKhjTTubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%generic_pipe_buf_release (C function)c.generic_pipe_buf_releasehNtauh1hhjF/hhhNhNubh)}(hhh](h)}(hUvoid generic_pipe_buf_release (struct pipe_inode_info *pipe, struct pipe_buffer *buf)h]h)}(hTvoid generic_pipe_buf_release(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hvoidh]hvoid}(hjNUhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjJUhhhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKubj,)}(h h]h }(hj]UhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjJUhhhj\UhKubj=)}(hgeneric_pipe_buf_releaseh]h)}(hgeneric_pipe_buf_releaseh]hgeneric_pipe_buf_release}(hjoUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjkUubah}(h]h ](jRjSeh"]h$]h&]jWjXuh1j<hjJUhhhj\UhKubjZ)}(h7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](j`)}(hstruct pipe_inode_info *pipeh](jf)}(hjih]hstruct}(hjUhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjUubj,)}(h h]h }(hjUhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjUubh)}(hhh]h)}(hpipe_inode_infoh]hpipe_inode_info}(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjUubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUmodnameN classnameNjj)}j!]j$)}jjqUsbc.generic_pipe_buf_releaseasbuh1hhjUubj,)}(h h]h }(hjUhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjUubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubh)}(hpipeh]hpipe}(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjUubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjUubj`)}(hstruct pipe_buffer *bufh](jf)}(hjih]hstruct}(hjUhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jehjUubj,)}(h h]h }(hj VhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjUubh)}(hhh]h)}(h pipe_bufferh]h pipe_buffer}(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjVubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjVmodnameN classnameNjj)}j!]jUc.generic_pipe_buf_releaseasbuh1hhjUubj,)}(h h]h }(hj9VhhhNhNubah}(h]h ]j8ah"]h$]h&]uh1j+hjUubj)}(hjh]h*}(hjGVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubh)}(hbufh]hbuf}(hjTVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjUubeh}(h]h ]h"]h$]h&]noemphjWjXuh1j_hjUubeh}(h]h ]h"]h$]h&]jWjXuh1jYhjJUhhhj\UhKubeh}(h]h ]h"]h$]h&]jWjXjUuh1hjVjWhjFUhhhj\UhKubah}(h]jAUah ](j[j\eh"]h$]h&]j`ja)jbhuh1hhj\UhKhjCUhhubjd)}(hhh]h)}(h?put a reference to a :c:type:`struct pipe_buffer `h](hput a reference to a }(hj~VhhhNhNubh)}(h*:c:type:`struct pipe_buffer `h]j)}(hjVh]hstruct pipe_buffer}(hjVhhhNhNubah}(h]h ](jQjc-typeeh"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]refdocjQ refdomainjreftypetype refexplicitrefwarnjj)}j!]jUc.generic_pipe_buf_releaseasbjQ pipe_bufferuh1hhj`PhKhj~Vubeh}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhj{Vhhubah}(h]h ]h"]h$]h&]uh1jchjCUhhhj\UhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjVjjVjjjuh1hhhhjF/hNhNubj)}(h**Parameters** ``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ``struct pipe_buffer *buf`` the buffer to put a reference to **Description** This function releases a reference to **buf**.h](h)}(h**Parameters**h]j)}(hjVh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjVubj)}(hhh](j)}(hE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjVh]hstruct pipe_inode_info *pipe}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1jhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjVubj)}(hhh]h)}(h#the pipe that the buffer belongs toh]h#the pipe that the buffer belongs to}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhKhjVubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1jhjVhKhjVubj)}(h=``struct pipe_buffer *buf`` the buffer to put a reference to h](j)}(h``struct pipe_buffer *buf``h]j)}(hjWh]hstruct pipe_buffer *buf}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1jhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjWubj)}(hhh]h)}(h the buffer to put a reference toh]h the buffer to put a reference to}(hj5WhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1WhKhj2Wubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhj1WhKhjVubeh}(h]h ]h"]h$]h&]uh1jhjVubh)}(h**Description**h]j)}(hjWWh]h Description}(hjYWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUWubah}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjVubjH)}(h.This function releases a reference to **buf**.h]h)}(hjoWh](h&This function releases a reference to }(hjqWhhhNhNubj)}(h**buf**h]hbuf}(hjxWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqWubh.}(hjqWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjmWubah}(h]h ]h"]h$]h&]uh1jGhjWhKhjVubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjF/hhhNhNubeh}(h] pipes-apiah ]h"] pipes apiah$]h&]uh1hhhhhhhhKubeh}(h]splice-and-pipesah ]h"]splice and pipesah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjWerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jWjWjC/j@/jWjWu nametypes}(jWjC/jWuh}(jWhj@/hhhjjjjj j j j jijnjjjjjjjjj j j#j#j&j&jE+jJ+jWjF/jq/jv/j1j1j8j8j9j9j;j;jO=jT=j?j?jAjAjBjBjDjDjSFjXFjHj Hj;Jj@Jj?LjDLjCNjHNjFPjKPjRjRjAUjFUu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.