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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/pt_BR/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}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j0 ASTIdentifier)}j+splice_to_pipesbc.splice_to_pipeasbuh1hhj hhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chKubhdesc_sig_space)}(h h]h }(hjAhhhNhNubah}(h]h ]wah"]h$]h&]uh1j?hj hhhj>hKubh desc_name)}(hsplice_to_pipeh]j)}(hj;h]hsplice_to_pipe}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubah}(h]h ](sig-namedescnameeh"]h$]h&] xml:spacepreserveuh1jPhj hhhj>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}(hj{hhhNhNubah}(h]h ]kah"]h$]h&]uh1jyhjuubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjuubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]j9c.splice_to_pipeasbuh1hhjuubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjuubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjuubj)}(hpipeh]hpipe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjoubjt)}(hstruct splice_pipe_desc *spdh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]j)}(hsplice_pipe_desch]hsplice_pipe_desc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]j9c.splice_to_pipeasbuh1hhjubj@)}(h h]h }(hj-hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hjh]h*}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hspdh]hspd}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjoubeh}(h]h ]h"]h$]h&]jkjluh1jmhj hhhj>hKubeh}(h]h ]h"]h$]h&]jkjl add_permalinkuh1jsphinx_line_type declaratorhjhhhj>hKubah}(h]hah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhj>hKhhhhubh desc_content)}(hhh]h)}(hfill passed data into a pipeh]hfill passed data into a pipe}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chKhjyhhubah}(h]h ]h"]h$]h&]uh1jwhhhhhj>hKubeh}(h]h ](j)functioneh"]h$]h&]domainj)objtypejdesctypejnoindex 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)}(hj h]hstruct splice_pipe_desc *spd}(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.chKhjubj)}(hhh]h)}(h data to fillh]h data to fill}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjEh]h Description}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(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}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubh 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.}(hjahhhNhNubeh}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chKhj]ubah}(h]h ]h"]h$]h&]uh1j[hj}hKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hcopy_splice_read (C function)c.copy_splice_readhNtauh1hhhhhhNhNubh)}(hhh](j)}(hvssize_t copy_splice_read (struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)h]j )}(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]j)}(hssize_th]hssize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]j8)}j+copy_splice_readsbc.copy_splice_readasbuh1hhjhhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM+ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhM+ubjQ)}(hcopy_splice_readh]j)}(hjh]hcopy_splice_read}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhjhhhjhM+ubjn)}(h](struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)h](jt)}(hstruct file *inh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]j)}(hfileh]hfile}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]jc.copy_splice_readasbuh1hhjubj@)}(h h]h }(hj2hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hinh]hin}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(h loff_t *pposh](h)}(hhh]j)}(hloff_th]hloff_t}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjkmodnameN classnameNj/j2)}j5]jc.copy_splice_readasbuh1hhjbubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjbubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubj)}(hpposh]hppos}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(hstruct pipe_inode_info *pipeh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]jc.copy_splice_readasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hpipeh]hpipe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj0modnameN classnameNj/j2)}j5]jc.copy_splice_readasbuh1hhj'ubj@)}(h h]h }(hjLhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj'ubj)}(hlenh]hlen}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(hunsigned int flagsh](hdesc_sig_keyword_type)}(hunsignedh]hunsigned}(hjuhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jshjoubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjoubjt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjoubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjoubj)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubeh}(h]h ]h"]h$]h&]jkjluh1jmhjhhhjhM+ubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhjhhhjhM+ubah}(h]jah ](jojpeh"]h$]h&]jtju)jvhuh1jhjhM+hjhhubjx)}(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&]uh1jwhjhhhjhM+ubeh}(h]h ](j)functioneh"]h$]h&]jj)jjjjjjjuh1hhhhhhNhNubj)}(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.chM/hjubj)}(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}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hM,hj/ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj.hM,hjubj)}(h;``loff_t *ppos`` Pointer to the file position to read from h](j)}(h``loff_t *ppos``h]j)}(hjRh]h loff_t *ppos}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM-hjLubj)}(hhh]h)}(h)Pointer to the file position to read fromh]h)Pointer to the file position to read from}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghM-hjhubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1jhjghM-hjubj)}(h9``struct pipe_inode_info *pipe`` The pipe to splice into 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)}(hThe pipe to splice intoh]hThe pipe to splice into}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM.hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(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.chM/hjubj)}(hhh]h)}(hThe amount to spliceh]hThe amount to splice}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM/hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM/hjubj)}(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.chM0hjubj)}(hhh]h)}(hThe SPLICE_F_* flagsh]hThe SPLICE_F_* flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM0hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM0hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj8h]h Description}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM2hjubh)}(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.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM1hjubh)}(h **Return**h]j)}(hj_h]hReturn}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM6hjubh)}(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 }(hjuhhhNhNubj)}(h ***ppos**h]h*ppos}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubhX4 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.}(hjuhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM7hjubeh}(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](j)}(heint splice_from_pipe_feed (struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)h]j )}(hdint splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)h](jt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMubjQ)}(hsplice_from_pipe_feedh]j)}(hsplice_from_pipe_feedh]hsplice_from_pipe_feed}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhjhhhjhMubjn)}(hK(struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)h](jt)}(hstruct pipe_inode_info *pipeh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]j8)}j+jsbc.splice_from_pipe_feedasbuh1hhjubj@)}(h h]h }(hj1hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hpipeh]hpipe}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(hstruct splice_desc *sdh](jz)}(hj}h]hstruct}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjaubj@)}(h h]h }(hjrhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjaubh)}(hhh]j)}(h splice_desch]h splice_desc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]j-c.splice_from_pipe_feedasbuh1hhjaubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjaubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubj)}(hsdh]hsd}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(hsplice_actor *actorh](h)}(hhh]j)}(h splice_actorh]h splice_actor}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]j-c.splice_from_pipe_feedasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hactorh]hactor}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubeh}(h]h ]h"]h$]h&]jkjluh1jmhjhhhjhMubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhjhhhjhMubah}(h]jah ](jojpeh"]h$]h&]jtju)jvhuh1jhjhMhjhhubjx)}(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.chMhj8 hhubah}(h]h ]h"]h$]h&]uh1jwhjhhhjhMubeh}(h]h ](j)functioneh"]h$]h&]jj)jjS jjS 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)}(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)}(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&]uh1jhjz ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjv 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&]uh1jhjv ubeh}(h]h ]h"]h$]h&]uh1jhj hMhjs 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 hMhjs 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 hMhjs ubeh}(h]h ]h"]h$]h&]uh1jhjW ubh)}(h**Description**h]j)}(hj7 h]h Description}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5 ubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjW ubj\)}(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 }(hjQ hhhNhNubj)}(h **actor**h]hactor}(hjY hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ 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 (}(hjQ hhhNhNubj)}(h**sd->total_len**h]h sd->total_len}(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ 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.}(hjQ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjM 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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjM ubeh}(h]h ]h"]h$]h&]uh1j[hj hMhjW 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](j)}(hPint splice_from_pipe_next (struct pipe_inode_info *pipe, struct splice_desc *sd)h]j )}(hOint splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)h](jt)}(hinth]hint}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj hhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj hhhj hMubjQ)}(hsplice_from_pipe_nexth]j)}(hsplice_from_pipe_nexth]hsplice_from_pipe_next}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhj hhhj hMubjn)}(h6(struct pipe_inode_info *pipe, struct splice_desc *sd)h](jt)}(hstruct pipe_inode_info *pipeh](jz)}(hj}h]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj ubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj modnameN classnameNj/j2)}j5]j8)}j+j sbc.splice_from_pipe_nextasbuh1hhj ubj@)}(h h]h }(hj4 hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubj)}(hjh]h*}(hjB hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hpipeh]hpipe}(hjO hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj ubjt)}(hstruct splice_desc *sdh](jz)}(hj}h]hstruct}(hjh hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjd ubj@)}(h h]h }(hju hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjd ubh)}(hhh]j)}(h splice_desch]h splice_desc}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj modnameN classnameNj/j2)}j5]j0 c.splice_from_pipe_nextasbuh1hhjd ubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjd ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjd ubj)}(hsdh]hsd}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjd ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj ubeh}(h]h ]h"]h$]h&]jkjluh1jmhj hhhj hMubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj hhhj hMubah}(h]j ah ](jojpeh"]h$]h&]jtju)jvhuh1jhj hMhj hhubjx)}(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&]uh1jwhj hhhj hMubeh}(h]h ](j)functioneh"]h$]h&]jj)jj 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}(hjC 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)}(hjc h]hstruct splice_desc *sd}(hje hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhj] ubj)}(hhh]h)}(h&information about the splice operationh]h&information about the splice operation}(hj| hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjx hMhjy ubah}(h]h ]h"]h$]h&]uh1jhj] ubeh}(h]h ]h"]h$]h&]uh1jhjx 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 ubj\)}(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&]uh1j[hj 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](j)}(h4void splice_from_pipe_begin (struct splice_desc *sd)h]j )}(h3void splice_from_pipe_begin(struct splice_desc *sd)h](jt)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj hhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM)ubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj hhhj hM)ubjQ)}(hsplice_from_pipe_beginh]j)}(hsplice_from_pipe_beginh]hsplice_from_pipe_begin}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhj hhhj hM)ubjn)}(h(struct splice_desc *sd)h]jt)}(hstruct splice_desc *sdh](jz)}(hj}h]hstruct}(hj* hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj& ubj@)}(h h]h }(hj7 hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj& ubh)}(hhh]j)}(h splice_desch]h splice_desc}(hjH hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjE ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjJ modnameN classnameNj/j2)}j5]j8)}j+j sbc.splice_from_pipe_beginasbuh1hhj& ubj@)}(h h]h }(hjh hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj& ubj)}(hjh]h*}(hjv hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj& ubj)}(hsdh]hsd}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj& ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj" ubah}(h]h ]h"]h$]h&]jkjluh1jmhj hhhj hM)ubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj hhhj hM)ubah}(h]j ah ](jojpeh"]h$]h&]jtju)jvhuh1jhj hM)hj hhubjx)}(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&]uh1jwhj hhhj hM)ubeh}(h]h ](j)functioneh"]h$]h&]jj)jj 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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM*hjubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhjhM*hj ubah}(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.chM,hj ubj\)}(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 }(hjChhhNhNubj)}(h**sd**h]hsd}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubh.}(hjChhhNhNubeh}(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&]uh1j[hjchM,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](j)}(hPvoid splice_from_pipe_end (struct pipe_inode_info *pipe, struct splice_desc *sd)h]j )}(hOvoid splice_from_pipe_end(struct pipe_inode_info *pipe, struct splice_desc *sd)h](jt)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjhhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM8ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhM8ubjQ)}(hsplice_from_pipe_endh]j)}(hsplice_from_pipe_endh]hsplice_from_pipe_end}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhjhhhjhM8ubjn)}(h6(struct pipe_inode_info *pipe, struct splice_desc *sd)h](jt)}(hstruct pipe_inode_info *pipeh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]j8)}j+jsbc.splice_from_pipe_endasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hpipeh]hpipe}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(hstruct splice_desc *sdh](jz)}(hj}h]hstruct}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj5ubj@)}(h h]h }(hjFhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj5ubh)}(hhh]j)}(h splice_desch]h splice_desc}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjYmodnameN classnameNj/j2)}j5]jc.splice_from_pipe_endasbuh1hhj5ubj@)}(h h]h }(hjuhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj5ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj)}(hsdh]hsd}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubeh}(h]h ]h"]h$]h&]jkjluh1jmhjhhhjhM8ubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhjhhhjhM8ubah}(h]j}ah ](jojpeh"]h$]h&]jtju)jvhuh1jhjhM8hjhhubjx)}(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.chM8hjhhubah}(h]h ]h"]h$]h&]uh1jwhjhhhjhM8ubeh}(h]h ](j)functioneh"]h$]h&]jj)jjjjjjjuh1hhhhhhNhNubj)}(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.chM9hjubj)}(hhh]h)}(hpipe to splice fromh]hpipe to splice from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM9hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM9hjubj)}(hB``struct splice_desc *sd`` information about the splice operation h](j)}(h``struct splice_desc *sd``h]j)}(hj4h]hstruct splice_desc *sd}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(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}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhM:hjJubah}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]uh1jhjIhM:hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjoh]h Description}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM<hjubj\)}(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().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chM<hjubah}(h]h ]h"]h$]h&]uh1j[hjhM<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](j)}(hfssize_t __splice_from_pipe (struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)h]j )}(hessize_t __splice_from_pipe(struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)h](h)}(hhh]j)}(hssize_th]hssize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]j8)}j+__splice_from_pipesbc.__splice_from_pipeasbuh1hhjhhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMHubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMHubjQ)}(h__splice_from_pipeh]j)}(hjh]h__splice_from_pipe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhjhhhjhMHubjn)}(hK(struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)h](jt)}(hstruct pipe_inode_info *pipeh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj0modnameN classnameNj/j2)}j5]jc.__splice_from_pipeasbuh1hhj ubj@)}(h h]h }(hjLhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubj)}(hjh]h*}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hpipeh]hpipe}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(hstruct splice_desc *sdh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj|ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj|ubh)}(hhh]j)}(h splice_desch]h splice_desc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]jc.__splice_from_pipeasbuh1hhj|ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj|ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj)}(hsdh]hsd}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(hsplice_actor *actorh](h)}(hhh]j)}(h splice_actorh]h splice_actor}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]jc.__splice_from_pipeasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hactorh]hactor}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubeh}(h]h ]h"]h$]h&]jkjluh1jmhjhhhjhMHubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhjhhhjhMHubah}(h]jah ](jojpeh"]h$]h&]jtju)jvhuh1jhjhMHhjhhubjx)}(hhh]h)}(h&splice data from a pipe to given actorh]h&splice data from a pipe to given actor}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMHhjShhubah}(h]h ]h"]h$]h&]uh1jwhjhhhjhMHubeh}(h]h ](j)functioneh"]h$]h&]jj)jjnjjnjjjuh1hhhhhhNhNubj)}(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)}(hjxh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMLhjrubj)}(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.chMIhjubj)}(hhh]h)}(hpipe to splice fromh]hpipe to splice from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMIhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMIhjubj)}(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.chMJhjubj)}(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&]uh1hhjhMJhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMJhjubj)}(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.chMKhjubj)}(hhh]h)}(hhandler that splices the datah]hhandler that splices the data}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hMKhj-ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj,hMKhjubeh}(h]h ]h"]h$]h&]uh1jhjrubh)}(h**Description**h]j)}(hjRh]h Description}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMMhjrubj\)}(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 }(hjlhhhNhNubj)}(h **actor**h]hactor}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubh 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.}(hjlhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMMhjhubah}(h]h ]h"]h$]h&]uh1j[hjhMMhjrubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hsplice_from_pipe (C function)c.splice_from_pipehNtauh1hhhhhhNhNubh)}(hhh](j)}(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]j )}(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]j)}(hssize_th]hssize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]j8)}j+splice_from_pipesbc.splice_from_pipeasbuh1hhjhhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMgubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjhhhjhMgubjQ)}(hsplice_from_pipeh]j)}(hjh]hsplice_from_pipe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhjhhhjhMgubjn)}(hs(struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags, splice_actor *actor)h](jt)}(hstruct pipe_inode_info *pipeh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj%modnameN classnameNj/j2)}j5]jc.splice_from_pipeasbuh1hhjubj@)}(h h]h }(hjAhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hjh]h*}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hpipeh]hpipe}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(hstruct file *outh](jz)}(hj}h]hstruct}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjqubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjqubh)}(hhh]j)}(hfileh]hfile}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]jc.splice_from_pipeasbuh1hhjqubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjqubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubj)}(houth]hout}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(h loff_t *pposh](h)}(hhh]j)}(hloff_th]hloff_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]jc.splice_from_pipeasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hpposh]hppos}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj?modnameN classnameNj/j2)}j5]jc.splice_from_pipeasbuh1hhj6ubj@)}(h h]h }(hj[hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj6ubj)}(hlenh]hlen}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(hunsigned int flagsh](jt)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj~ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj~ubjt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj~ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj~ubj)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubjt)}(hsplice_actor *actorh](h)}(hhh]j)}(h splice_actorh]h splice_actor}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]jc.splice_from_pipeasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hactorh]hactor}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjubeh}(h]h ]h"]h$]h&]jkjluh1jmhjhhhjhMgubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhjhhhjhMgubah}(h]jah ](jojpeh"]h$]h&]jtju)jvhuh1jhjhMghjhhubjx)}(hhh]h)}(h!splice data from a pipe to a fileh]h!splice data from a pipe to a file}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMghj6hhubah}(h]h ]h"]h$]h&]uh1jwhjhhhjhMgubeh}(h]h ](j)functioneh"]h$]h&]jj)jjQjjQjjjuh1hhhhhhNhNubj)}(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)}(hj[h]h Parameters}(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.chMkhjUubj)}(hhh](j)}(h5``struct pipe_inode_info *pipe`` pipe to splice from h](j)}(h ``struct pipe_inode_info *pipe``h]j)}(hjzh]hstruct pipe_inode_info *pipe}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhhjtubj)}(hhh]h)}(hpipe to splice fromh]hpipe to splice from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhhjubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhjhMhhjqubj)}(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.chMihjubj)}(hhh]h)}(hfile to splice toh]hfile to splice to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMihjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMihjqubj)}(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.chMjhjubj)}(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&]uh1hhjhMjhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMjhjqubj)}(h(``size_t len`` how many bytes to splice h](j)}(h``size_t len``h]j)}(hj3h]h size_t len}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMkhj-ubj)}(hhh]h)}(hhow many bytes to spliceh]hhow many bytes to splice}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhMkhjIubah}(h]h ]h"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]uh1jhjHhMkhjqubj)}(h-``unsigned int flags`` splice modifier flags h](j)}(h``unsigned int flags``h]j)}(hjlh]hunsigned int flags}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMlhjfubj)}(hhh]h)}(hsplice modifier flagsh]hsplice modifier flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMlhjubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1jhjhMlhjqubj)}(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.chMmhjubj)}(hhh]h)}(hhandler that splices the datah]hhandler that splices the data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMmhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMmhjqubeh}(h]h ]h"]h$]h&]uh1jhjUubh)}(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.chMohjUubj\)}(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.chMohjubah}(h]h ]h"]h$]h&]uh1j[hjhMohjUubeh}(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](j)}(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]j )}(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]j)}(hssize_th]hssize_t}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj4modnameN classnameNj/j2)}j5]j8)}j+iter_file_splice_writesbc.iter_file_splice_writeasbuh1hhj+hhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMubj@)}(h h]h }(hjThhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj+hhhjShMubjQ)}(hiter_file_splice_writeh]j)}(hjPh]hiter_file_splice_write}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhj+hhhjShMubjn)}(h^(struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags)h](jt)}(hstruct pipe_inode_info *pipeh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj}ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj}ubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]jNc.iter_file_splice_writeasbuh1hhj}ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj}ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj)}(hpipeh]hpipe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjyubjt)}(hstruct file *outh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]j)}(hfileh]hfile}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]jNc.iter_file_splice_writeasbuh1hhjubj@)}(h h]h }(hj-hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hjh]h*}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(houth]hout}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjyubjt)}(h loff_t *pposh](h)}(hhh]j)}(hloff_th]hloff_t}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjfmodnameN classnameNj/j2)}j5]jNc.iter_file_splice_writeasbuh1hhj]ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj]ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj)}(hpposh]hppos}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjyubjt)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]jNc.iter_file_splice_writeasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjyubjt)}(hunsigned int flagsh](jt)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj@)}(h h]h }(hj(hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hflagsh]hflags}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjyubeh}(h]h ]h"]h$]h&]jkjluh1jmhj+hhhjShMubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj'hhhjShMubah}(h]j"ah ](jojpeh"]h$]h&]jtju)jvhuh1jhjShMhj$hhubjx)}(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.chMhj]hhubah}(h]h ]h"]h$]h&]uh1jwhj$hhhjShMubeh}(h]h ](j)functioneh"]h$]h&]jj)jjxjjxjjjuh1hhhhhhNhNubj)}(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)}(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.chMhj|ubj)}(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.chMhj ubj)}(hhh]h)}(hposition in **out**h](h position in }(hj,hhhNhNubj)}(h**out**h]hout}(hj4hhhNhNubah}(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(hMhjubj)}(h)``size_t len`` number of bytes to splice h](j)}(h``size_t len``h]j)}(hjZh]h size_t len}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjTubj)}(hhh]h)}(hnumber of bytes to spliceh]hnumber of bytes to splice}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohMhjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjohMhjubj)}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjubj)}(hhh]h)}(hsplice modifier flagsh]hsplice modifier flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(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.chMhj|ubj\)}(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&]uh1j[hjhMhj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hsplice_to_socket (C function)c.splice_to_sockethNtauh1hhhhhhNhNubh)}(hhh](j)}(hwssize_t splice_to_socket (struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags)h]j )}(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]j)}(hssize_th]hssize_t}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj4modnameN classnameNj/j2)}j5]j8)}j+splice_to_socketsbc.splice_to_socketasbuh1hhj+hhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMubj@)}(h h]h }(hjThhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj+hhhjShMubjQ)}(hsplice_to_socketh]j)}(hjPh]hsplice_to_socket}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhj+hhhjShMubjn)}(h^(struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags)h](jt)}(hstruct pipe_inode_info *pipeh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj}ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj}ubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]jNc.splice_to_socketasbuh1hhj}ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj}ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj)}(hpipeh]hpipe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjyubjt)}(hstruct file *outh](jz)}(hj}h]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubh)}(hhh]j)}(hfileh]hfile}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]jNc.splice_to_socketasbuh1hhjubj@)}(h h]h }(hj-hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hjh]h*}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(houth]hout}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjyubjt)}(h loff_t *pposh](h)}(hhh]j)}(hloff_th]hloff_t}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjfmodnameN classnameNj/j2)}j5]jNc.splice_to_socketasbuh1hhj]ubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj]ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj)}(hpposh]hppos}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjyubjt)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjmodnameN classnameNj/j2)}j5]jNc.splice_to_socketasbuh1hhjubj@)}(h h]h }(hjhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hlenh]hlen}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjyubjt)}(hunsigned int flagsh](jt)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubjt)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjubj@)}(h h]h }(hj(hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjubj)}(hflagsh]hflags}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjyubeh}(h]h ]h"]h$]h&]jkjluh1jmhj+hhhjShMubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj'hhhjShMubah}(h]j"ah ](jojpeh"]h$]h&]jtju)jvhuh1jhjShMhj$hhubjx)}(hhh]h)}(h#splice data from a pipe to a socketh]h#splice data from a pipe to a socket}(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&]uh1jwhj$hhhjShMubeh}(h]h ](j)functioneh"]h$]h&]jj)jjxjjxjjjuh1hhhhhhNhNubj)}(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)}(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.chMhj|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.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.chMhj ubj)}(hhh]h)}(hposition in **out**h](h position in }(hj,hhhNhNubj)}(h**out**h]hout}(hj4hhhNhNubah}(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(hMhjubj)}(h)``size_t len`` number of bytes to splice h](j)}(h``size_t len``h]j)}(hjZh]h size_t len}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjTubj)}(hhh]h)}(hnumber of bytes to spliceh]hnumber of bytes to splice}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohMhjpubah}(h]h ]h"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]uh1jhjohMhjubj)}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjubj)}(hhh]h)}(hsplice modifier flagsh]hsplice modifier flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(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.chMhj|ubj\)}(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&]uh1j[hj hMhj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hvfs_splice_read (C function)c.vfs_splice_readhNtauh1hhhhhhNhNubh)}(hhh](j)}(hussize_t vfs_splice_read (struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)h]j )}(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]j)}(hssize_th]hssize_t}(hj2 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj4 modnameN classnameNj/j2)}j5]j8)}j+vfs_splice_readsbc.vfs_splice_readasbuh1hhj+ hhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMubj@)}(h h]h }(hjT hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj+ hhhjS hMubjQ)}(hvfs_splice_readh]j)}(hjP h]hvfs_splice_read}(hjf hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjb ubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhj+ hhhjS hMubjn)}(h](struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)h](jt)}(hstruct file *inh](jz)}(hj}h]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj} ubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj} ubh)}(hhh]j)}(hfileh]hfile}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj modnameN classnameNj/j2)}j5]jN c.vfs_splice_readasbuh1hhj} ubj@)}(h h]h }(hj hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj} ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj} ubj)}(hinh]hin}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj} ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjy ubjt)}(h loff_t *pposh](h)}(hhh]j)}(hloff_th]hloff_t}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj modnameN classnameNj/j2)}j5]jN c.vfs_splice_readasbuh1hhj ubj@)}(h h]h }(hj!hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj ubj)}(hjh]h*}(hj !hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hpposh]hppos}(hj-!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjy ubjt)}(hstruct pipe_inode_info *pipeh](jz)}(hj}h]hstruct}(hjF!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjB!ubj@)}(h h]h }(hjS!hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjB!ubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjd!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhja!ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjf!modnameN classnameNj/j2)}j5]jN c.vfs_splice_readasbuh1hhjB!ubj@)}(h h]h }(hj!hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjB!ubj)}(hjh]h*}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB!ubj)}(hpipeh]hpipe}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB!ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjy ubjt)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj!modnameN classnameNj/j2)}j5]jN c.vfs_splice_readasbuh1hhj!ubj@)}(h h]h }(hj!hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj!ubj)}(hlenh]hlen}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjy ubjt)}(hunsigned int flagsh](jt)}(hunsignedh]hunsigned}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj!ubj@)}(h h]h }(hj "hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj!ubjt)}(hinth]hint}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj!ubj@)}(h h]h }(hj("hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj!ubj)}(hflagsh]hflags}(hj6"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjy ubeh}(h]h ]h"]h$]h&]jkjluh1jmhj+ hhhjS hMubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj' hhhjS hMubah}(h]j" ah ](jojpeh"]h$]h&]jtju)jvhuh1jhjS hMhj$ hhubjx)}(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}(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&]uh1jwhj$ hhhjS hMubeh}(h]h ](j)functioneh"]h$]h&]jj)jjx"jjx"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)}(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)}(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)}(hjL#h]h size_t len}(hjN#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ#ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjF#ubj)}(hhh]h)}(hNumber of bytes to spliceh]hNumber of bytes to splice}(hje#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhja#hMhjb#ubah}(h]h ]h"]h$]h&]uh1jhjF#ubeh}(h]h ]h"]h$]h&]uh1jhja#hMhj"ubj)}(h:``unsigned int flags`` Splice modifier flags (SPLICE_F_*) 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)}(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&]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|"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.chMhj|"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.chMhj|"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](j)}(hdssize_t splice_direct_to_actor (struct file *in, struct splice_desc *sd, splice_direct_actor *actor)h]j )}(hcssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, splice_direct_actor *actor)h](h)}(hhh]j)}(hssize_th]hssize_t}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj$modnameN classnameNj/j2)}j5]j8)}j+splice_direct_to_actorsbc.splice_direct_to_actorasbuh1hhj$hhhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMubj@)}(h h]h }(hj9$hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj$hhhj8$hMubjQ)}(hsplice_direct_to_actorh]j)}(hj5$h]hsplice_direct_to_actor}(hjK$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG$ubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhj$hhhj8$hMubjn)}(hE(struct file *in, struct splice_desc *sd, splice_direct_actor *actor)h](jt)}(hstruct file *inh](jz)}(hj}h]hstruct}(hjf$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjb$ubj@)}(h h]h }(hjs$hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjb$ubh)}(hhh]j)}(hfileh]hfile}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj$modnameN classnameNj/j2)}j5]j3$c.splice_direct_to_actorasbuh1hhjb$ubj@)}(h h]h }(hj$hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjb$ubj)}(hjh]h*}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjb$ubj)}(hinh]hin}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjb$ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj^$ubjt)}(hstruct splice_desc *sdh](jz)}(hj}h]hstruct}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj$ubj@)}(h h]h }(hj$hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj$ubh)}(hhh]j)}(h splice_desch]h splice_desc}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj$modnameN classnameNj/j2)}j5]j3$c.splice_direct_to_actorasbuh1hhj$ubj@)}(h h]h }(hj%hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj$ubj)}(hjh]h*}(hj %hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj)}(hsdh]hsd}(hj-%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj^$ubjt)}(hsplice_direct_actor *actorh](h)}(hhh]j)}(hsplice_direct_actorh]hsplice_direct_actor}(hjI%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjF%ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjK%modnameN classnameNj/j2)}j5]j3$c.splice_direct_to_actorasbuh1hhjB%ubj@)}(h h]h }(hjg%hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjB%ubj)}(hjh]h*}(hju%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB%ubj)}(hactorh]hactor}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB%ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj^$ubeh}(h]h ]h"]h$]h&]jkjluh1jmhj$hhhj8$hMubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj $hhhj8$hMubah}(h]j$ah ](jojpeh"]h$]h&]jtju)jvhuh1jhj8$hMhj $hhubjx)}(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&]uh1jwhj $hhhj8$hMubeh}(h]h ](j)functioneh"]h$]h&]jj)jj%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)}(hj_&h]hsplice_direct_actor *actor}(hja&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.chMhjY&ubj)}(hhh]h)}(hhandles the data splicingh]hhandles the data splicing}(hjx&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjt&hMhju&ubah}(h]h ]h"]h$]h&]uh1jhjY&ubeh}(h]h ]h"]h$]h&]uh1jhjt&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%ubj\)}(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&]uh1j[hj&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](j)}(hxssize_t do_splice_direct (struct file *in, loff_t *ppos, struct file *out, loff_t *opos, size_t len, unsigned int flags)h]j )}(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]j)}(hssize_th]hssize_t}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj&modnameN classnameNj/j2)}j5]j8)}j+do_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 ]jLah"]h$]h&]uh1j?hj&hhhj 'hMubjQ)}(hdo_splice_directh]j)}(hj 'h]hdo_splice_direct}(hj 'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhj&hhhj 'hMubjn)}(h_(struct file *in, loff_t *ppos, struct file *out, loff_t *opos, size_t len, unsigned int flags)h](jt)}(hstruct file *inh](jz)}(hj}h]hstruct}(hj;'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj7'ubj@)}(h h]h }(hjH'hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj7'ubh)}(hhh]j)}(hfileh]hfile}(hjY'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjV'ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj['modnameN classnameNj/j2)}j5]j'c.do_splice_directasbuh1hhj7'ubj@)}(h h]h }(hjw'hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj7'ubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7'ubj)}(hinh]hin}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7'ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj3'ubjt)}(h loff_t *pposh](h)}(hhh]j)}(hloff_th]hloff_t}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj'modnameN classnameNj/j2)}j5]j'c.do_splice_directasbuh1hhj'ubj@)}(h h]h }(hj'hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj'ubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj)}(hpposh]hppos}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj3'ubjt)}(hstruct file *outh](jz)}(hj}h]hstruct}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj'ubj@)}(h h]h }(hj (hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj'ubh)}(hhh]j)}(hfileh]hfile}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj (modnameN classnameNj/j2)}j5]j'c.do_splice_directasbuh1hhj'ubj@)}(h h]h }(hj<(hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj'ubj)}(hjh]h*}(hjJ(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj)}(houth]hout}(hjW(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj3'ubjt)}(h loff_t *oposh](h)}(hhh]j)}(hloff_th]hloff_t}(hjs(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjp(ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetju(modnameN classnameNj/j2)}j5]j'c.do_splice_directasbuh1hhjl(ubj@)}(h h]h }(hj(hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjl(ubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl(ubj)}(hoposh]hopos}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl(ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj3'ubjt)}(h size_t lenh](h)}(hhh]j)}(hsize_th]hsize_t}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj(modnameN classnameNj/j2)}j5]j'c.do_splice_directasbuh1hhj(ubj@)}(h h]h }(hj(hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj(ubj)}(hlenh]hlen}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj3'ubjt)}(hunsigned int flagsh](jt)}(hunsignedh]hunsigned}(hj )hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj )ubj@)}(h h]h }(hj)hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj )ubjt)}(hinth]hint}(hj))hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj )ubj@)}(h h]h }(hj7)hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj )ubj)}(hflagsh]hflags}(hjE)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj )ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj3'ubeh}(h]h ]h"]h$]h&]jkjluh1jmhj&hhhj 'hMubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj&hhhj 'hMubah}(h]j&ah ](jojpeh"]h$]h&]jtju)jvhuh1jhj 'hMhj&hhubjx)}(hhh]h)}(h'splices data directly between two filesh]h'splices data directly between two files}(hjo)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjl)hhubah}(h]h ]h"]h$]h&]uh1jwhj&hhhj 'hMubeh}(h]h ](j)functioneh"]h$]h&]jj)jj)jj)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.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&]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&]uh1hhj7*hMhj8*ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1jhj7*hMhj)ubj)}(h$``loff_t *opos`` output file offset h](j)}(h``loff_t *opos``h]j)}(hj[*h]h loff_t *opos}(hj]*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjY*ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjU*ubj)}(hhh]h)}(houtput file offseth]houtput file offset}(hjt*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjp*hMhjq*ubah}(h]h ]h"]h$]h&]uh1jhjU*ubeh}(h]h ]h"]h$]h&]uh1jhjp*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)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&]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)ubj\)}(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&]uh1j[hj0+hMhj)ubh)}(h-ubj@)}(h h]h }(hjc-hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj>-ubj)}(hlenh]hlen}(hjq-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>-ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj+ubeh}(h]h ]h"]h$]h&]jkjluh1jmhjb+hhhj+hMubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj^+hhhj+hMubah}(h]jY+ah ](jojpeh"]h$]h&]jtju)jvhuh1jhj+hMhj[+hhubjx)}(hhh]h)}(h4splices data between two files for copy_file_range()h]h4splices data between two files for copy_file_range()}(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&]uh1jwhj[+hhhj+hMubeh}(h]h ](j)functioneh"]h$]h&]jj)jj-jj-jjjuh1hhhhhhNhNubj)}(hX**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 **Description** For use by ->copy_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)}(hjN.h]hstruct file *out}(hjP.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL.ubah}(h]h ]h"]h$]h&]uh1jhN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.chMhjH.ubj)}(hhh]h)}(hfile to splice toh]hfile to splice to}(hjg.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjc.hMhjd.ubah}(h]h ]h"]h$]h&]uh1jhjH.ubeh}(h]h ]h"]h$]h&]uh1jhjc.hMhj-ubj)}(h$``loff_t *opos`` output file offset h](j)}(h``loff_t *opos``h]j)}(hj.h]h loff_t *opos}(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)}(houtput file offseth]houtput 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)``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-ubj\)}(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&]uh1j[hj5/hMhj-ubh)}(hhjG2ubj)}(hhh](j)}(h;``head_tail`` unsigned long union of **head** and **tail** h](j)}(h ``head_tail``h]j)}(hj2h]h head_tail}(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.hhK4hj2ubj)}(hhh]h)}(h,unsigned long union of **head** and **tail**h](hunsigned long union of }(hj2hhhNhNubj)}(h**head**h]hhead}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubh and }(hj2hhhNhNubj)}(h**tail**h]htail}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1hhj2hK4hj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhj2hK4hj2ubj)}(h``{unnamed_struct}`` anonymous h](j)}(h``{unnamed_struct}``h]j)}(hj2h]h{unnamed_struct}}(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.hhKhj2ubj)}(hhh]h)}(h anonymoush]h anonymous}(hj 3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKhj3ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhj3hKhj2ubj)}(h(``head`` The point of buffer production h](j)}(h``head``h]j)}(hj*3h]hhead}(hj,3hhhNhNubah}(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.hhK2hj$3ubj)}(hhh]h)}(hThe point of buffer productionh]hThe point of buffer production}(hjC3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?3hK2hj@3ubah}(h]h ]h"]h$]h&]uh1jhj$3ubeh}(h]h ]h"]h$]h&]uh1jhj?3hK2hj2ubj)}(h(``tail`` The point of buffer consumptionh](j)}(h``tail``h]j)}(hjc3h]htail}(hje3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja3ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhK2hj]3ubj)}(hhh]h)}(hThe point of buffer consumptionh]hThe point of buffer consumption}(hj|3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhK3hjy3ubah}(h]h ]h"]h$]h&]uh1jhj]3ubeh}(h]h ]h"]h$]h&]uh1jhjx3hK2hj2ubeh}(h]h ]h"]h$]h&]uh1jhjG2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_inode_info (C struct)c.pipe_inode_infohNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(hpipe_inode_infoh]j )}(hstruct pipe_inode_infoh](jz)}(hj}h]hstruct}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj3hhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhK9ubj@)}(h h]h }(hj3hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj3hhhj3hK9ubjQ)}(hpipe_inode_infoh]j)}(hj3h]hpipe_inode_info}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhj3hhhj3hK9ubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj3hhhj3hK9ubah}(h]j3ah ](jojpeh"]h$]h&]jtju)jvhuh1jhj3hK9hj3hhubjx)}(hhh]h)}(ha linux kernel pipeh]ha linux kernel pipe}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhK>hj3hhubah}(h]h ]h"]h$]h&]uh1jwhj3hhhj3hK9ubeh}(h]h ](j)structeh"]h$]h&]jj)jj4jj4jjjuh1hhhhjZ/hNhNubj)}(hX**Definition**:: struct pipe_inode_info { struct mutex mutex; wait_queue_head_t rd_wait, wr_wait; union pipe_index; 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 ``pipe_index`` the pipe indeces ``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#4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh:}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKBhj4ubj0)}(hXstruct pipe_inode_info { struct mutex mutex; wait_queue_head_t rd_wait, wr_wait; union pipe_index; 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 pipe_index; 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; };}hj<4sbah}(h]h ]h"]h$]h&]jkjluh1j0h\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKDhj4ubh)}(h **Members**h]j)}(hjM4h]hMembers}(hjO4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjK4ubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhK^hj4ubj)}(hhh](j)}(h+``mutex`` mutex protecting the whole thing h](j)}(h ``mutex``h]j)}(hjl4h]hmutex}(hjn4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj4ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhK@hjf4ubj)}(hhh]h)}(h mutex protecting the whole thingh]h mutex protecting the whole thing}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hK@hj4ubah}(h]h ]h"]h$]h&]uh1jhjf4ubeh}(h]h ]h"]h$]h&]uh1jhj4hK@hjc4ubj)}(h4``rd_wait`` reader wait point in case of empty pipe h](j)}(h ``rd_wait``h]j)}(hj4h]hrd_wait}(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.hhKAhj4ubj)}(hhh]h)}(h'reader wait point in case of empty pipeh]h'reader wait point in case of empty pipe}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hKAhj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhj4hKAhjc4ubj)}(h3``wr_wait`` writer wait point in case of full pipe h](j)}(h ``wr_wait``h]j)}(hj4h]hwr_wait}(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.hhKBhj4ubj)}(hhh]h)}(h&writer wait point in case of full pipeh]h&writer wait point in case of full pipe}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hKBhj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhj4hKBhjc4ubj)}(h ``pipe_index`` the pipe indeces h](j)}(h``pipe_index``h]j)}(hj5h]h pipe_index}(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.hhKChj5ubj)}(hhh]h)}(hthe pipe indecesh]hthe pipe indeces}(hj05hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,5hKChj-5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj,5hKChjc4ubj)}(hG``max_usage`` The maximum number of slots that may be used in the ring h](j)}(h ``max_usage``h]j)}(hjP5h]h max_usage}(hjR5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN5ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKEhjJ5ubj)}(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}(hji5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhje5hKEhjf5ubah}(h]h ]h"]h$]h&]uh1jhjJ5ubeh}(h]h ]h"]h$]h&]uh1jhje5hKEhjc4ubj)}(h?``ring_size`` total number of buffers (should be a power of 2) h](j)}(h ``ring_size``h]j)}(hj5h]h ring_size}(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.hhKFhj5ubj)}(hhh]h)}(h0total number of buffers (should be a power of 2)h]h0total number of buffers (should be a power of 2)}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hKFhj5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj5hKFhjc4ubj)}(hF``nr_accounted`` The amount this pipe accounts for in user->pipe_bufs h](j)}(h``nr_accounted``h]j)}(hj5h]h nr_accounted}(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.hhKGhj5ubj)}(hhh]h)}(h4The amount this pipe accounts for in user->pipe_bufsh]h4The amount this pipe accounts for in user->pipe_bufs}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hKGhj5ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj5hKGhjc4ubj)}(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.hhKIhj5ubj)}(hhh]h)}(h&number of current readers of this pipeh]h&number of current readers of this pipe}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKIhj6ubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhj6hKIhjc4ubj)}(h3``writers`` number of current writers of this pipe h](j)}(h ``writers``h]j)}(hj46h]hwriters}(hj66hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj26ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKJhj.6ubj)}(hhh]h)}(h&number of current writers of this pipeh]h&number of current writers of this pipe}(hjM6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjI6hKJhjJ6ubah}(h]h ]h"]h$]h&]uh1jhj.6ubeh}(h]h ]h"]h$]h&]uh1jhjI6hKJhjc4ubj)}(hL``files`` number of struct file referring this pipe (protected by ->i_lock) h](j)}(h ``files``h]j)}(hjm6h]hfiles}(hjo6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk6ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKKhjg6ubj)}(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)}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKKhj6ubah}(h]h ]h"]h$]h&]uh1jhjg6ubeh}(h]h ]h"]h$]h&]uh1jhj6hKKhjc4ubj)}(h``r_counter`` reader counter h](j)}(h ``r_counter``h]j)}(hj6h]h r_counter}(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.hhKLhj6ubj)}(hhh]h)}(hreader counterh]hreader counter}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKLhj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhj6hKLhjc4ubj)}(h``w_counter`` writer counter h](j)}(h ``w_counter``h]j)}(hj6h]h w_counter}(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.hhKMhj6ubj)}(hhh]h)}(hwriter counterh]hwriter counter}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKMhj6ubah}(h]h ]h"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]uh1jhj6hKMhjc4ubj)}(hE``poll_usage`` is this pipe used for epoll, which has crazy wakeups? h](j)}(h``poll_usage``h]j)}(hj7h]h poll_usage}(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.hhKNhj7ubj)}(hhh]h)}(h5is this pipe used for epoll, which has crazy wakeups?h]h5is this pipe used for epoll, which has crazy wakeups?}(hj17hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-7hKNhj.7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhj-7hKNhjc4ubj)}(h@``note_loss`` The next read() should insert a data-lost message h](j)}(h ``note_loss``h]j)}(hjQ7h]h note_loss}(hjS7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjO7ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKDhjK7ubj)}(hhh]h)}(h1The next read() should insert a data-lost messageh]h1The next read() should insert a data-lost message}(hjj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjf7hKDhjg7ubah}(h]h ]h"]h$]h&]uh1jhjK7ubeh}(h]h ]h"]h$]h&]uh1jhjf7hKDhjc4ubj)}(h"``tmp_page`` cached released page h](j)}(h ``tmp_page``h]j)}(hj7h]htmp_page}(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.hhKHhj7ubj)}(hhh]h)}(hcached released pageh]hcached released page}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hKHhj7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhj7hKHhjc4ubj)}(h&``fasync_readers`` reader side fasync h](j)}(h``fasync_readers``h]j)}(hj7h]hfasync_readers}(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.hhKOhj7ubj)}(hhh]h)}(hreader side fasynch]hreader side fasync}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hKOhj7ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhj7hKOhjc4ubj)}(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.hhKPhj7ubj)}(hhh]h)}(hwriter side fasynch]hwriter side fasync}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKPhj8ubah}(h]h ]h"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]uh1jhj8hKPhjc4ubj)}(h,``bufs`` the circular array of pipe buffers h](j)}(h``bufs``h]j)}(hj58h]hbufs}(hj78hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj38ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKQhj/8ubj)}(hhh]h)}(h"the circular array of pipe buffersh]h"the circular array of pipe buffers}(hjN8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJ8hKQhjK8ubah}(h]h ]h"]h$]h&]uh1jhj/8ubeh}(h]h ]h"]h$]h&]uh1jhjJ8hKQhjc4ubj)}(h(``user`` the user who created this pipe h](j)}(h``user``h]j)}(hjn8h]huser}(hjp8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl8ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKRhjh8ubj)}(hhh]h)}(hthe user who created this pipeh]hthe user who created this pipe}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKRhj8ubah}(h]h ]h"]h$]h&]uh1jhjh8ubeh}(h]h ]h"]h$]h&]uh1jhj8hKRhjc4ubj)}(hI``watch_queue`` If this pipe is a watch_queue, this is the stuff for thath](j)}(h``watch_queue``h]j)}(hj8h]h watch_queue}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKRhj8ubj)}(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}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKShj8ubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhj8hKRhjc4ubeh}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!pipe_has_watch_queue (C function)c.pipe_has_watch_queuehNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(h>bool pipe_has_watch_queue (const struct pipe_inode_info *pipe)h]j )}(h=bool pipe_has_watch_queue(const struct pipe_inode_info *pipe)h](jt)}(hboolh]hbool}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj8hhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj@)}(h h]h }(hj9hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj8hhhj9hKubjQ)}(hpipe_has_watch_queueh]j)}(hpipe_has_watch_queueh]hpipe_has_watch_queue}(hj"9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhj8hhhj9hKubjn)}(h$(const struct pipe_inode_info *pipe)h]jt)}(h"const struct pipe_inode_info *pipeh](jz)}(hconsth]hconst}(hj>9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj:9ubj@)}(h h]h }(hjL9hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj:9ubjz)}(hj}h]hstruct}(hjZ9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj:9ubj@)}(h h]h }(hjg9hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj:9ubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjx9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhju9ubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjz9modnameN classnameNj/j2)}j5]j8)}j+j$9sbc.pipe_has_watch_queueasbuh1hhj:9ubj@)}(h h]h }(hj9hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj:9ubj)}(hjh]h*}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:9ubj)}(hpipeh]hpipe}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:9ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj69ubah}(h]h ]h"]h$]h&]jkjluh1jmhj8hhhj9hKubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj8hhhj9hKubah}(h]j8ah ](jojpeh"]h$]h&]jtju)jvhuh1jhj9hKhj8hhubjx)}(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}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj9hhubah}(h]h ]h"]h$]h&]uh1jwhj8hhhj9hKubeh}(h]h ](j)functioneh"]h$]h&]jj)jj9jj9jjjuh1hhhhjZ/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}(hj:hhhNhNubah}(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)}(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 pipe to checkh]hThe pipe to check}(hj7:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3:hKhj4:ubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhj3:hKhj:ubah}(h]h ]h"]h$]h&]uh1jhj9ubh)}(h **Return**h]j)}(hjY:h]hReturn}(hj[:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjW:ubah}(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.}(hjo:hhhNhNubah}(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&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_occupancy (C function)c.pipe_occupancyhNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(hBunsigned int pipe_occupancy (unsigned int head, unsigned int tail)h]j )}(hAunsigned int pipe_occupancy(unsigned int head, unsigned int tail)h](jt)}(hunsignedh]hunsigned}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj:hhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj@)}(h h]h }(hj:hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj:hhhj:hKubjt)}(hinth]hint}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj:hhhj:hKubj@)}(h h]h }(hj:hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj:hhhj:hKubjQ)}(hpipe_occupancyh]j)}(hpipe_occupancyh]hpipe_occupancy}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhj:hhhj:hKubjn)}(h&(unsigned int head, unsigned int tail)h](jt)}(hunsigned int headh](jt)}(hunsignedh]hunsigned}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj:ubj@)}(h h]h }(hj;hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj:ubjt)}(hinth]hint}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj:ubj@)}(h h]h }(hj!;hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj:ubj)}(hheadh]hhead}(hj/;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj:ubjt)}(hunsigned int tailh](jt)}(hunsignedh]hunsigned}(hjH;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjD;ubj@)}(h h]h }(hjV;hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjD;ubjt)}(hinth]hint}(hjd;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjD;ubj@)}(h h]h }(hjr;hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjD;ubj)}(htailh]htail}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjD;ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj:ubeh}(h]h ]h"]h$]h&]jkjluh1jmhj:hhhj:hKubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj:hhhj:hKubah}(h]j:ah ](jojpeh"]h$]h&]jtju)jvhuh1jhj:hKhj:hhubjx)}(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&]uh1jwhj:hhhj:hKubeh}(h]h ](j)functioneh"]h$]h&]jj)jj;jj;jjjuh1hhhhjZ/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&]uh1jhj9<hKhj;ubeh}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_empty (C function) c.pipe_emptyhNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(h6bool pipe_empty (unsigned int head, unsigned int tail)h]j )}(h5bool pipe_empty(unsigned int head, unsigned int tail)h](jt)}(hj9h]hbool}(hj~<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjz<hhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj@)}(h h]h }(hj<hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjz<hhhj<hKubjQ)}(h pipe_emptyh]j)}(h pipe_emptyh]h pipe_empty}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhjz<hhhj<hKubjn)}(h&(unsigned int head, unsigned int tail)h](jt)}(hunsigned int headh](jt)}(hunsignedh]hunsigned}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj<ubj@)}(h h]h }(hj<hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj<ubjt)}(hinth]hint}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj<ubj@)}(h h]h }(hj<hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj<ubj)}(hheadh]hhead}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj<ubjt)}(hunsigned int tailh](jt)}(hunsignedh]hunsigned}(hj =hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj=ubj@)}(h h]h }(hj=hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj=ubjt)}(hinth]hint}(hj'=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj=ubj@)}(h h]h }(hj5=hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj=ubj)}(htailh]htail}(hjC=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj<ubeh}(h]h ]h"]h$]h&]jkjluh1jmhjz<hhhj<hKubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhjv<hhhj<hKubah}(h]jq<ah ](jojpeh"]h$]h&]jtju)jvhuh1jhj<hKhjs<hhubjx)}(hhh]h)}(h Return true if the pipe is emptyh]h Return true if the pipe is empty}(hjm=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjj=hhubah}(h]h ]h"]h$]h&]uh1jwhjs<hhhj<hKubeh}(h]h ](j)functioneh"]h$]h&]jj)jj=jj=jjjuh1hhhhjZ/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&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_full (C function) c.pipe_fullhNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(hIbool pipe_full (unsigned int head, unsigned int tail, unsigned int limit)h]j )}(hHbool pipe_full(unsigned int head, unsigned int tail, unsigned int limit)h](jt)}(hj9h]hbool}(hjA>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj=>hhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj@)}(h h]h }(hjO>hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj=>hhhjN>hKubjQ)}(h pipe_fullh]j)}(h pipe_fullh]h pipe_full}(hja>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]>ubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhj=>hhhjN>hKubjn)}(h:(unsigned int head, unsigned int tail, unsigned int limit)h](jt)}(hunsigned int headh](jt)}(hunsignedh]hunsigned}(hj}>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjy>ubj@)}(h h]h }(hj>hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjy>ubjt)}(hinth]hint}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjy>ubj@)}(h h]h }(hj>hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjy>ubj)}(hheadh]hhead}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjy>ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshju>ubjt)}(hunsigned int tailh](jt)}(hunsignedh]hunsigned}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj>ubj@)}(h h]h }(hj>hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj>ubjt)}(hinth]hint}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj>ubj@)}(h h]h }(hj>hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj>ubj)}(htailh]htail}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshju>ubjt)}(hunsigned int limith](jt)}(hunsignedh]hunsigned}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj?ubj@)}(h h]h }(hj-?hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj?ubjt)}(hinth]hint}(hj;?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj?ubj@)}(h h]h }(hjI?hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj?ubj)}(hlimith]hlimit}(hjW?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshju>ubeh}(h]h ]h"]h$]h&]jkjluh1jmhj=>hhhjN>hKubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj9>hhhjN>hKubah}(h]j4>ah ](jojpeh"]h$]h&]jtju)jvhuh1jhjN>hKhj6>hhubjx)}(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&]uh1jwhj6>hhhjN>hKubeh}(h]h ](j)functioneh"]h$]h&]jj)jj?jj?jjjuh1hhhhjZ/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)}(hj4@h]hunsigned int limit}(hj6@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2@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)}(h&The maximum amount of slots available.h]h&The maximum amount of slots available.}(hjM@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjJ@ubah}(h]h ]h"]h$]h&]uh1jhj.@ubeh}(h]h ]h"]h$]h&]uh1jhjI@hKhj?ubeh}(h]h ]h"]h$]h&]uh1jhj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_is_full (C function)c.pipe_is_fullhNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(h6bool pipe_is_full (const struct pipe_inode_info *pipe)h]j )}(h5bool pipe_is_full(const struct pipe_inode_info *pipe)h](jt)}(hj9h]hbool}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj@hhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj@)}(h h]h }(hj@hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj@hhhj@hKubjQ)}(h pipe_is_fullh]j)}(h pipe_is_fullh]h pipe_is_full}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhj@hhhj@hKubjn)}(h$(const struct pipe_inode_info *pipe)h]jt)}(h"const struct pipe_inode_info *pipeh](jz)}(hj@9h]hconst}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj@ubj@)}(h h]h }(hj@hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj@ubjz)}(hj}h]hstruct}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj@ubj@)}(h h]h }(hj@hhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj@ubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjAmodnameN classnameNj/j2)}j5]j8)}j+j@sbc.pipe_is_fullasbuh1hhj@ubj@)}(h h]h }(hj#AhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj@ubj)}(hjh]h*}(hj1AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj)}(hpipeh]hpipe}(hj>AhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj@ubah}(h]h ]h"]h$]h&]jkjluh1jmhj@hhhj@hKubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj@hhhj@hKubah}(h]j@ah ](jojpeh"]h$]h&]jtju)jvhuh1jhj@hKhj@hhubjx)}(hhh]h)}(hReturn true if the pipe is fullh]hReturn true if the pipe is full}(hjhAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjeAhhubah}(h]h ]h"]h$]h&]uh1jwhj@hhhj@hKubeh}(h]h ](j)functioneh"]h$]h&]jj)jjAjjAjjjuh1hhhhjZ/hNhNubj)}(hA**Parameters** ``const struct pipe_inode_info *pipe`` the pipeh](h)}(h**Parameters**h]j)}(hjAh]h Parameters}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjAubj)}(hhh]j)}(h/``const struct pipe_inode_info *pipe`` the pipeh](j)}(h&``const struct pipe_inode_info *pipe``h]j)}(hjAh]h"const struct pipe_inode_info *pipe}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjAubj)}(hhh]h)}(hthe pipeh]hthe pipe}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjAubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1jhjAhKhjAubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_is_empty (C function)c.pipe_is_emptyhNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(h7bool pipe_is_empty (const struct pipe_inode_info *pipe)h]j )}(h6bool pipe_is_empty(const struct pipe_inode_info *pipe)h](jt)}(hj9h]hbool}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjAhhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj@)}(h h]h }(hjBhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjAhhhjBhKubjQ)}(h pipe_is_emptyh]j)}(h pipe_is_emptyh]h pipe_is_empty}(hj#BhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhjAhhhjBhKubjn)}(h$(const struct pipe_inode_info *pipe)h]jt)}(h"const struct pipe_inode_info *pipeh](jz)}(hj@9h]hconst}(hj?BhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj;Bubj@)}(h h]h }(hjLBhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj;Bubjz)}(hj}h]hstruct}(hjZBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj;Bubj@)}(h h]h }(hjgBhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj;Bubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjxBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuBubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjzBmodnameN classnameNj/j2)}j5]j8)}j+j%Bsbc.pipe_is_emptyasbuh1hhj;Bubj@)}(h h]h }(hjBhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj;Bubj)}(hjh]h*}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;Bubj)}(hpipeh]hpipe}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;Bubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj7Bubah}(h]h ]h"]h$]h&]jkjluh1jmhjAhhhjBhKubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhjAhhhjBhKubah}(h]jAah ](jojpeh"]h$]h&]jtju)jvhuh1jhjBhKhjAhhubjx)}(hhh]h)}(h Return true if the pipe is emptyh]h Return true if the pipe is empty}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjBhhubah}(h]h ]h"]h$]h&]uh1jwhjAhhhjBhKubeh}(h]h ](j)functioneh"]h$]h&]jj)jjBjjBjjjuh1hhhhjZ/hNhNubj)}(hA**Parameters** ``const struct pipe_inode_info *pipe`` the pipeh](h)}(h**Parameters**h]j)}(hjBh]h Parameters}(hjChhhNhNubah}(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.hBhKhjBubj)}(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}(hj ChhhNhNubah}(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}(hj7ChhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj4Cubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhj3ChKhjCubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_buf_usage (C function)c.pipe_buf_usagehNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(h@unsigned int pipe_buf_usage (const struct pipe_inode_info *pipe)h]j )}(h?unsigned int pipe_buf_usage(const struct pipe_inode_info *pipe)h](jt)}(hunsignedh]hunsigned}(hjxChhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjtChhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj@)}(h h]h }(hjChhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjtChhhjChKubjt)}(hinth]hint}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjtChhhjChKubj@)}(h h]h }(hjChhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjtChhhjChKubjQ)}(hpipe_buf_usageh]j)}(hpipe_buf_usageh]hpipe_buf_usage}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhjtChhhjChKubjn)}(h$(const struct pipe_inode_info *pipe)h]jt)}(h"const struct pipe_inode_info *pipeh](jz)}(hj@9h]hconst}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjCubj@)}(h h]h }(hjChhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjCubjz)}(hj}h]hstruct}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjCubj@)}(h h]h }(hjChhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjCubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hj DhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj DmodnameN classnameNj/j2)}j5]j8)}j+jCsbc.pipe_buf_usageasbuh1hhjCubj@)}(h h]h }(hj*DhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjCubj)}(hjh]h*}(hj8DhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubj)}(hpipeh]hpipe}(hjEDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjCubah}(h]h ]h"]h$]h&]jkjluh1jmhjtChhhjChKubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhjpChhhjChKubah}(h]jkCah ](jojpeh"]h$]h&]jtju)jvhuh1jhjChKhjmChhubjx)}(hhh]h)}(h'Return how many pipe buffers are in useh]h'Return how many pipe buffers are in use}(hjoDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjlDhhubah}(h]h ]h"]h$]h&]uh1jwhjmChhhjChKubeh}(h]h ](j)functioneh"]h$]h&]jj)jjDjjDjjjuh1hhhhjZ/hNhNubj)}(hA**Parameters** ``const struct pipe_inode_info *pipe`` the pipeh](h)}(h**Parameters**h]j)}(hjDh]h Parameters}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjDubj)}(hhh]j)}(h/``const struct pipe_inode_info *pipe`` the pipeh](j)}(h&``const struct pipe_inode_info *pipe``h]j)}(hjDh]h"const struct pipe_inode_info *pipe}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjDubj)}(hhh]h)}(hthe pipeh]hthe pipe}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjDubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ]h"]h$]h&]uh1jhjDhKhjDubah}(h]h ]h"]h$]h&]uh1jhjDubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_buf (C function) c.pipe_bufhNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(hUstruct pipe_buffer * pipe_buf (const struct pipe_inode_info *pipe, unsigned int slot)h]j )}(hSstruct pipe_buffer *pipe_buf(const struct pipe_inode_info *pipe, unsigned int slot)h](jz)}(hj}h]hstruct}(hj EhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjEhhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj@)}(h h]h }(hjEhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjEhhhjEhKubh)}(hhh]j)}(h pipe_bufferh]h pipe_buffer}(hj)EhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&Eubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj+EmodnameN classnameNj/j2)}j5]j8)}j+pipe_bufsb c.pipe_bufasbuh1hhjEhhhjEhKubj@)}(h h]h }(hjJEhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjEhhhjEhKubj)}(hjh]h*}(hjXEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEhhhjEhKubjQ)}(hpipe_bufh]j)}(hjGEh]hpipe_buf}(hjiEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeEubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhjEhhhjEhKubjn)}(h7(const struct pipe_inode_info *pipe, unsigned int slot)h](jt)}(h"const struct pipe_inode_info *pipeh](jz)}(hj@9h]hconst}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjEubj@)}(h h]h }(hjEhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjEubjz)}(hj}h]hstruct}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjEubj@)}(h h]h }(hjEhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjEubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjEmodnameN classnameNj/j2)}j5]jEE c.pipe_bufasbuh1hhjEubj@)}(h h]h }(hjEhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjEubj)}(hjh]h*}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj)}(hpipeh]hpipe}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj|Eubjt)}(hunsigned int sloth](jt)}(hunsignedh]hunsigned}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj Fubj@)}(h h]h }(hjFhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj Fubjt)}(hinth]hint}(hj+FhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj Fubj@)}(h h]h }(hj9FhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj Fubj)}(hsloth]hslot}(hjGFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj Fubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj|Eubeh}(h]h ]h"]h$]h&]jkjluh1jmhjEhhhjEhKubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhjEhhhjEhKubah}(h]jDah ](jojpeh"]h$]h&]jtju)jvhuh1jhjEhKhjDhhubjx)}(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}(hjqFhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjnFhhubah}(h]h ]h"]h$]h&]uh1jwhjDhhhjEhKubeh}(h]h ](j)functioneh"]h$]h&]jj)jjFjjFjjjuh1hhhhjZ/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)}(hjFh]h Parameters}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjFubj)}(hhh](j)}(h:``const struct pipe_inode_info *pipe`` The pipe to access h](j)}(h&``const struct pipe_inode_info *pipe``h]j)}(hjFh]h"const struct pipe_inode_info *pipe}(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 pipe to accessh]hThe pipe to access}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhKhjFubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjFhKhjFubj)}(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}(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&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjGhKhjFubeh}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_head_buf (C function)c.pipe_head_bufhNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(hGstruct pipe_buffer * pipe_head_buf (const struct pipe_inode_info *pipe)h]j )}(hEstruct pipe_buffer *pipe_head_buf(const struct pipe_inode_info *pipe)h](jz)}(hj}h]hstruct}(hjEGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjAGhhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj@)}(h h]h }(hjSGhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjAGhhhjRGhKubh)}(hhh]j)}(h pipe_bufferh]h pipe_buffer}(hjdGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaGubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjfGmodnameN classnameNj/j2)}j5]j8)}j+ pipe_head_bufsbc.pipe_head_bufasbuh1hhjAGhhhjRGhKubj@)}(h h]h }(hjGhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjAGhhhjRGhKubj)}(hjh]h*}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAGhhhjRGhKubjQ)}(h pipe_head_bufh]j)}(hjGh]h pipe_head_buf}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhjAGhhhjRGhKubjn)}(h$(const struct pipe_inode_info *pipe)h]jt)}(h"const struct pipe_inode_info *pipeh](jz)}(hj@9h]hconst}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjGubj@)}(h h]h }(hjGhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjGubjz)}(hj}h]hstruct}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjGubj@)}(h h]h }(hjGhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjGubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjGmodnameN classnameNj/j2)}j5]jGc.pipe_head_bufasbuh1hhjGubj@)}(h h]h }(hjHhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjGubj)}(hjh]h*}(hj$HhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj)}(hpipeh]hpipe}(hj1HhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjGubah}(h]h ]h"]h$]h&]jkjluh1jmhjAGhhhjRGhKubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj=GhhhjRGhKubah}(h]j8Gah ](jojpeh"]h$]h&]jtju)jvhuh1jhjRGhKhj:Ghhubjx)}(hhh]h)}(h3Return the pipe buffer at the head of the pipe ringh]h3Return the pipe buffer at the head of the pipe ring}(hj[HhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjXHhhubah}(h]h ]h"]h$]h&]uh1jwhj:GhhhjRGhKubeh}(h]h ](j)functioneh"]h$]h&]jj)jjsHjjsHjjjuh1hhhhjZ/hNhNubj)}(hK**Parameters** ``const struct pipe_inode_info *pipe`` The pipe to accessh](h)}(h**Parameters**h]j)}(hj}Hh]h Parameters}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{Hubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjwHubj)}(hhh]j)}(h9``const struct pipe_inode_info *pipe`` The pipe to accessh](j)}(h&``const struct pipe_inode_info *pipe``h]j)}(hjHh]h"const struct pipe_inode_info *pipe}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjHubj)}(hhh]h)}(hThe pipe to accessh]hThe pipe to access}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjHubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhjHhKhjHubah}(h]h ]h"]h$]h&]uh1jhjwHubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_buf_get (C function)c.pipe_buf_gethNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(hIbool pipe_buf_get (struct pipe_inode_info *pipe, struct pipe_buffer *buf)h]j )}(hHbool pipe_buf_get(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](jt)}(hj9h]hbool}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjHhhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKubj@)}(h h]h }(hjIhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjHhhhjIhKubjQ)}(h pipe_buf_geth]j)}(h pipe_buf_geth]h pipe_buf_get}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhjHhhhjIhKubjn)}(h7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](jt)}(hstruct pipe_inode_info *pipeh](jz)}(hj}h]hstruct}(hj2IhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhj.Iubj@)}(h h]h }(hj?IhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj.Iubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjPIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMIubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjRImodnameN classnameNj/j2)}j5]j8)}j+jIsbc.pipe_buf_getasbuh1hhj.Iubj@)}(h h]h }(hjpIhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj.Iubj)}(hjh]h*}(hj~IhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.Iubj)}(hpipeh]hpipe}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.Iubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj*Iubjt)}(hstruct pipe_buffer *bufh](jz)}(hj}h]hstruct}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjIubj@)}(h h]h }(hjIhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjIubh)}(hhh]j)}(h pipe_bufferh]h pipe_buffer}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjImodnameN classnameNj/j2)}j5]jlIc.pipe_buf_getasbuh1hhjIubj@)}(h h]h }(hjIhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjIubj)}(hjh]h*}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubj)}(hbufh]hbuf}(hjIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshj*Iubeh}(h]h ]h"]h$]h&]jkjluh1jmhjHhhhjIhKubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhjHhhhjIhKubah}(h]jHah ](jojpeh"]h$]h&]jtju)jvhuh1jhjIhKhjHhhubjx)}(hhh]h)}(h get a reference to a pipe_bufferh]h get a reference to a pipe_buffer}(hj%JhhhNhNubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj"Jhhubah}(h]h ]h"]h$]h&]uh1jwhjHhhhjIhKubeh}(h]h ](j)functioneh"]h$]h&]jj)jj=Jjj=Jjjjuh1hhhhjZ/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)}(hjGJh]h Parameters}(hjIJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEJubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjAJubj)}(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)}(hjfJh]hstruct pipe_inode_info *pipe}(hjhJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdJubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhj`Jubj)}(hhh]h)}(h#the pipe that the buffer belongs toh]h#the pipe that the buffer belongs to}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{JhKhj|Jubah}(h]h ]h"]h$]h&]uh1jhj`Jubeh}(h]h ]h"]h$]h&]uh1jhj{JhKhj]Jubj)}(h=``struct pipe_buffer *buf`` the buffer to get a reference to h](j)}(h``struct pipe_buffer *buf``h]j)}(hjJh]hstruct pipe_buffer *buf}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1jh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjJubj)}(hhh]h)}(h the buffer to get a reference toh]h the buffer to get a reference to}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhKhjJubah}(h]h ]h"]h$]h&]uh1jhjJubeh}(h]h ]h"]h$]h&]uh1jhjJhKhj]Jubeh}(h]h ]h"]h$]h&]uh1jhjAJubh)}(h **Return**h]j)}(hjJh]hReturn}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjAJubh)}(h4``true`` if the reference was successfully obtained.h](j)}(h``true``h]htrue}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubh, if the reference was successfully obtained.}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhKhjAJubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpipe_buf_release (C function)c.pipe_buf_releasehNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(hMvoid pipe_buf_release (struct pipe_inode_info *pipe, struct pipe_buffer *buf)h]j )}(hLvoid pipe_buf_release(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](jt)}(hvoidh]hvoid}(hj-KhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj)Khhh\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.hhMubj@)}(h h]h }(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)}(h**Parameters**h]j)}(hjRh]h Parameters}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjRubj)}(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)}(hjRh]hstruct pipe_inode_info *pipe}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1jhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjRubj)}(hhh]h)}(h#the pipe that the buffer belongs toh]h#the pipe that the buffer belongs to}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhKhjRubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjRhKhjRubj)}(h;``struct pipe_buffer *buf`` the buffer to attempt to steal h](j)}(h``struct pipe_buffer *buf``h]j)}(hjSh]hstruct pipe_buffer *buf}(hj ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1jhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjSubj)}(hhh]h)}(hthe buffer to attempt to stealh]hthe buffer to attempt to steal}(hj!ShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShKhjSubah}(h]h ]h"]h$]h&]uh1jhjSubeh}(h]h ]h"]h$]h&]uh1jhjShKhjRubeh}(h]h ]h"]h$]h&]uh1jhjRubh)}(h**Description**h]j)}(hjCSh]h Description}(hjEShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjASubah}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjRubj\)}(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)}(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 }(hj]ShhhNhNubh)}(h:c:type:`struct page `h]j)}(hjgSh]h struct page}(hjiShhhNhNubah}(h]h ](j}Rj)c-typeeh"]h$]h&]uh1jhjeSubah}(h]h ]h"]h$]h&]refdocjR refdomainj)reftypetype refexplicitrefwarnj/j2)}j5]sbjRpageuh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhj]Subh attached to }(hj]ShhhNhNubj)}(h**buf**h]hbuf}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]Subh. 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.}(hj]ShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjShKhjYSubah}(h]h ]h"]h$]h&]uh1j[hjShKhjRubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!generic_pipe_buf_get (C function)c.generic_pipe_buf_gethNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(hQbool generic_pipe_buf_get (struct pipe_inode_info *pipe, struct pipe_buffer *buf)h]j )}(hPbool generic_pipe_buf_get(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](jt)}(hj9h]hbool}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jshjShhhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKubj@)}(h h]h }(hjShhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjShhhjShKubjQ)}(hgeneric_pipe_buf_geth]j)}(hgeneric_pipe_buf_geth]hgeneric_pipe_buf_get}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhjShhhjShKubjn)}(h7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](jt)}(hstruct pipe_inode_info *pipeh](jz)}(hj}h]hstruct}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjTubj@)}(h h]h }(hjThhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjTubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hj$ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!Tubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetj&TmodnameN classnameNj/j2)}j5]j8)}j+jSsbc.generic_pipe_buf_getasbuh1hhjTubj@)}(h h]h }(hjDThhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjTubj)}(hjh]h*}(hjRThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubj)}(hpipeh]hpipe}(hj_ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjSubjt)}(hstruct pipe_buffer *bufh](jz)}(hj}h]hstruct}(hjxThhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjtTubj@)}(h h]h }(hjThhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjtTubh)}(hhh]j)}(h pipe_bufferh]h pipe_buffer}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjTmodnameN classnameNj/j2)}j5]j@Tc.generic_pipe_buf_getasbuh1hhjtTubj@)}(h h]h }(hjThhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjtTubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtTubj)}(hbufh]hbuf}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtTubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjSubeh}(h]h ]h"]h$]h&]jkjluh1jmhjShhhjShKubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhjShhhjShKubah}(h]jSah ](jojpeh"]h$]h&]jtju)jvhuh1jhjShKhjShhubjx)}(hhh]h)}(h?get a reference to a :c:type:`struct pipe_buffer `h](hget a reference to a }(hjThhhNhNubh)}(h*:c:type:`struct pipe_buffer `h]j)}(hjUh]hstruct pipe_buffer}(hjUhhhNhNubah}(h]h ](j}Rj)c-typeeh"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]refdocjR refdomainj)reftypetype refexplicitrefwarnj/j2)}j5]j@Tc.generic_pipe_buf_getasbjR pipe_bufferuh1hhjEQhKhjTubeh}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjThhubah}(h]h ]h"]h$]h&]uh1jwhjShhhjShKubeh}(h]h ](j)functioneh"]h$]h&]jj)jj5Ujj5Ujjjuh1hhhhjZ/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)}(hj?Uh]h Parameters}(hjAUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=Uubah}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhj9Uubj)}(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)}(hj^Uh]hstruct pipe_inode_info *pipe}(hj`UhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\Uubah}(h]h ]h"]h$]h&]uh1jhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjXUubj)}(hhh]h)}(h#the pipe that the buffer belongs toh]h#the pipe that the buffer belongs to}(hjwUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjsUhKhjtUubah}(h]h ]h"]h$]h&]uh1jhjXUubeh}(h]h ]h"]h$]h&]uh1jhjsUhKhjUUubj)}(h=``struct pipe_buffer *buf`` the buffer to get a reference to h](j)}(h``struct pipe_buffer *buf``h]j)}(hjUh]hstruct pipe_buffer *buf}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjUubj)}(hhh]h)}(h the buffer to get a reference toh]h the buffer to get a reference to}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhKhjUubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhjUhKhjUUubeh}(h]h ]h"]h$]h&]uh1jhj9Uubh)}(h**Description**h]j)}(hjUh]h Description}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhj9Uubj\)}(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&]uh1j[hj VhKhj9Uubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZ/hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%generic_pipe_buf_release (C function)c.generic_pipe_buf_releasehNtauh1hhjZ/hhhNhNubh)}(hhh](j)}(hUvoid generic_pipe_buf_release (struct pipe_inode_info *pipe, struct pipe_buffer *buf)h]j )}(hTvoid generic_pipe_buf_release(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](jt)}(hvoidh]hvoid}(hj3VhhhNhNubah}(h]h ]jah"]h$]h&]uh1jshj/VhhhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKubj@)}(h h]h }(hjBVhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hj/VhhhjAVhKubjQ)}(hgeneric_pipe_buf_releaseh]j)}(hgeneric_pipe_buf_releaseh]hgeneric_pipe_buf_release}(hjTVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPVubah}(h]h ](jfjgeh"]h$]h&]jkjluh1jPhj/VhhhjAVhKubjn)}(h7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)h](jt)}(hstruct pipe_inode_info *pipeh](jz)}(hj}h]hstruct}(hjpVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjlVubj@)}(h h]h }(hj}VhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjlVubh)}(hhh]j)}(hpipe_inode_infoh]hpipe_inode_info}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjVmodnameN classnameNj/j2)}j5]j8)}j+jVVsbc.generic_pipe_buf_releaseasbuh1hhjlVubj@)}(h h]h }(hjVhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjlVubj)}(hjh]h*}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlVubj)}(hpipeh]hpipe}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlVubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjhVubjt)}(hstruct pipe_buffer *bufh](jz)}(hj}h]hstruct}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jyhjVubj@)}(h h]h }(hjVhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjVubh)}(hhh]j)}(h pipe_bufferh]h pipe_buffer}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&] refdomainj)reftypej+ reftargetjWmodnameN classnameNj/j2)}j5]jVc.generic_pipe_buf_releaseasbuh1hhjVubj@)}(h h]h }(hjWhhhNhNubah}(h]h ]jLah"]h$]h&]uh1j?hjVubj)}(hjh]h*}(hj,WhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubj)}(hbufh]hbuf}(hj9WhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]noemphjkjluh1jshjhVubeh}(h]h ]h"]h$]h&]jkjluh1jmhj/VhhhjAVhKubeh}(h]h ]h"]h$]h&]jkjljiuh1jjjjkhj+VhhhjAVhKubah}(h]j&Vah ](jojpeh"]h$]h&]jtju)jvhuh1jhjAVhKhj(Vhhubjx)}(hhh]h)}(h?put a reference to a :c:type:`struct pipe_buffer `h](hput a reference to a }(hjcWhhhNhNubh)}(h*:c:type:`struct pipe_buffer `h]j)}(hjmWh]hstruct pipe_buffer}(hjoWhhhNhNubah}(h]h ](j}Rj)c-typeeh"]h$]h&]uh1jhjkWubah}(h]h ]h"]h$]h&]refdocjR refdomainj)reftypetype refexplicitrefwarnj/j2)}j5]jVc.generic_pipe_buf_releaseasbjR pipe_bufferuh1hhjEQhKhjcWubeh}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhj`Whhubah}(h]h ]h"]h$]h&]uh1jwhj(VhhhjAVhKubeh}(h]h ](j)functioneh"]h$]h&]jj)jjWjjWjjjuh1hhhhjZ/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)}(hjWh]h Parameters}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjWubj)}(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)}(hjWh]hstruct pipe_inode_info *pipe}(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 pipe that the buffer belongs toh]h#the pipe that the buffer belongs to}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWhKhjWubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhjWhKhjWubj)}(h=``struct pipe_buffer *buf`` the buffer to put a reference to h](j)}(h``struct pipe_buffer *buf``h]j)}(hjXh]hstruct pipe_buffer *buf}(hjXhhhNhNubah}(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}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhKhjXubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhjXhKhjWubeh}(h]h ]h"]h$]h&]uh1jhjWubh)}(h**Description**h]j)}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:Xubah}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjWubj\)}(h.This function releases a reference to **buf**.h]h)}(hjTXh](h&This function releases a reference to }(hjVXhhhNhNubj)}(h**buf**h]hbuf}(hj]XhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVXubh.}(hjVXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.chKhjRXubah}(h]h ]h"]h$]h&]uh1j[hjuXhKhjWubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjZ/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_handlerjXerror_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}(jXjXjW/jT/jXjXu nametypes}(jXjW/jXuh}(jXhjT/hhjjjjjj j j j j}jjjjjj"j'j"j'j" j' j$j $j&j&jY+j^+jXjZ/j/j/j1j1j3j3j8j8j:j:jq<jv<j4>j9>j@j@jAjAjkCjpCjDjEj8Gj=GjHjHj Kj%Kj$Mj)Mj(Oj-Oj+Qj0QjSjSj&Vj+Vu 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.