€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ&/translations/zh_CN/filesystems/splice”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/zh_TW/filesystems/splice”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/it_IT/filesystems/splice”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/ja_JP/filesystems/splice”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/ko_KR/filesystems/splice”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/pt_BR/filesystems/splice”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ&/translations/sp_SP/filesystems/splice”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒsplice and pipes”h]”hŒsplice and pipes”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ@/var/lib/git/docbuild/linux/Documentation/filesystems/splice.rst”h´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ splice API”h]”hŒ splice API”…”�”}”(hhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhËh²hh³hÊh´KubhŒ paragraph”“”)�”}”(hŒ�splice is a method for moving blocks of data around inside the kernel, without continually transferring them between the kernel and user space.”h]”hŒ�splice is a method for moving blocks of data around inside the kernel, without continually transferring them between the kernel and user space.”…”�”}”(hhÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhhËh²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œsplice_to_pipe (C function)”Œc.splice_to_pipe”hNt”auh1hìhhËh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒSssize_t splice_to_pipe (struct pipe_inode_info *pipe, struct splice_pipe_desc *spd)”h]”hŒdesc_signature_line”“”)�”}”(hŒRssize_t splice_to_pipe(struct pipe_inode_info *pipe, struct splice_pipe_desc *spd)”h]”(h)�”}”(hhh]”hŒ desc_sig_name”“”)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”jŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”j0Œ ASTIdentifier”“”)�”}”j+Œsplice_to_pipe”sbŒc.splice_to_pipe”†”asbuh1hhj h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´K»ubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j?hj h²hh³j>h´K»ubhŒ desc_name”“”)�”}”(hŒsplice_to_pipe”h]”j)�”}”(hj;h]”hŒsplice_to_pipe”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jPhj h²hh³j>h´K»ubhŒdesc_parameterlist”“”)�”}”(hŒ<(struct pipe_inode_info *pipe, struct splice_pipe_desc *spd)”h]”(hŒdesc_parameter”“”)�”}”(hŒstruct pipe_inode_info *pipe”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jyhjuubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjuubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j�Œmodname”NŒ classname”Nj/j2)�”}”j5]”j9Œc.splice_to_pipe”†”asbuh1hhjuubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjuubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jÇhjuubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjoubjt)�”}”(hŒstruct splice_pipe_desc *spd”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjíubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjíubh)�”}”(hhh]”j)�”}”(hŒsplice_pipe_desc”h]”hŒsplice_pipe_desc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jŒmodname”NŒ classname”Nj/j2)�”}”j5]”j9Œc.splice_to_pipe”†”asbuh1hhjíubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjíubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjíubj)�”}”(hŒspd”h]”hŒspd”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjoubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj h²hh³j>h´K»ubeh}”(h]”h ]”h"]”h$]”h&]”jkjlŒ add_permalink”ˆuh1jŒsphinx_line_type”Œ declarator”hjh²hh³j>h´K»ubah}”(h]”hûah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jh³j>h´K»hhÿh²hubhŒ desc_content”“”)�”}”(hhh]”hÝ)�”}”(hŒfill passed data into a pipe”h]”hŒfill passed data into a pipe”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´K»hjyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhhÿh²hh³j>h´K»ubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”Œdomain”j)Œobjtype”j”Œdesctype”j”Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1hýh²hhhËh³Nh´NubhŒ 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]”hŒstrong”“”)�”}”(hj¦h]”hŒ Parameters”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´K¿hj ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ.``struct pipe_inode_info *pipe`` pipe to fill ”h]”(hŒterm”“”)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”hŒliteral”“”)�”}”(hjÍh]”hŒstruct pipe_inode_info *pipe”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´K¼hjÅubhŒ definition”“”)�”}”(hhh]”hÝ)�”}”(hŒ pipe to fill”h]”hŒ pipe to fill”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jäh´K¼hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jäh´K¼hjÀubjÄ)�”}”(hŒ.``struct splice_pipe_desc *spd`` data to fill ”h]”(jÊ)�”}”(hŒ ``struct splice_pipe_desc *spd``”h]”jÐ)�”}”(hj h]”hŒstruct splice_pipe_desc *spd”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´K½hjubjæ)�”}”(hhh]”hÝ)�”}”(hŒ data to fill”h]”hŒ data to fill”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´K½hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´K½hjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj ubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hjEh]”hŒ Description”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´K¿hj ubhŒ 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]”hŒspd”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjaubhŒ¥ 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.”…”�”}”(hjah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´K¿hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³j}h´K¿hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhËh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒcopy_splice_read (C function)”Œc.copy_splice_read”hNt”auh1hìhhËh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒvssize_t copy_splice_read (struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)”h]”j )�”}”(hŒussize_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)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j©Œmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+Œcopy_splice_read”sbŒc.copy_splice_read”†”asbuh1hhj h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M+ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj h²hh³jÈh´M+ubjQ)�”}”(hŒcopy_splice_read”h]”j)�”}”(hjÅh]”hŒcopy_splice_read”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj×ubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj h²hh³jÈh´M+ubjn)�”}”(hŒ](struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)”h]”(jt)�”}”(hŒstruct file *in”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjòubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjòubh)�”}”(hhh]”j)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jŒmodname”NŒ classname”Nj/j2)�”}”j5]”jÃŒc.copy_splice_read”†”asbuh1hhjòubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjòubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjòubj)�”}”(hŒin”h]”hŒin”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjîubjt)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”j)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jkŒmodname”NŒ classname”Nj/j2)�”}”j5]”jÃŒc.copy_splice_read”†”asbuh1hhjbubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjbubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjbubj)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjîubjt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj·ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj·ubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jÛŒmodname”NŒ classname”Nj/j2)�”}”j5]”jÃŒc.copy_splice_read”†”asbuh1hhj·ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj·ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj·ubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjîubjt)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j0Œmodname”NŒ classname”Nj/j2)�”}”j5]”jÃŒc.copy_splice_read”†”asbuh1hhj'ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj'ubj)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjîubjt)�”}”(hŒunsigned int flags”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jshjoubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjoubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjoubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjoubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjîubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj h²hh³jÈh´M+ubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhjœh²hh³jÈh´M+ubah}”(h]”j—ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jÈh´M+hj™h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ5Copy data from a file and splice the copy into a pipe”h]”hŒ5Copy data from a file and splice the copy into a pipe”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M+hjÕh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj™h²hh³jÈh´M+ubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jðjšjðj›‰jœ‰j�‰uh1hýh²hhhËh³Nh´NubjŸ)�”}”(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©)�”}”(hjúh]”hŒ Parameters”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M/hjôubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct file *in`` The file to read from ”h]”(jÊ)�”}”(hŒ``struct file *in``”h]”jÐ)�”}”(hjh]”hŒstruct file *in”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M,hjubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe file to read from”h]”hŒThe file to read from”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j.h´M,hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j.h´M,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”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M-hjLubjæ)�”}”(hhh]”hÝ)�”}”(hŒ)Pointer to the file position to read from”h]”hŒ)Pointer to the file position to read from”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jgh´M-hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jgh´M-hjubjÄ)�”}”(hŒ9``struct pipe_inode_info *pipe`` The pipe to splice into ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hj‹h]”hŒstruct pipe_inode_info *pipe”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M.hj…ubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe pipe to splice into”h]”hŒThe pipe to splice into”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j h´M.hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´M.hjubjÄ)�”}”(hŒ$``size_t len`` The amount to splice ”h]”(jÊ)�”}”(hŒ``size_t len``”h]”jÐ)�”}”(hjÄh]”hŒ size_t len”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M/hj¾ubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe amount to splice”h]”hŒThe amount to splice”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÙh´M/hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÙh´M/hjubjÄ)�”}”(hŒ,``unsigned int flags`` The SPLICE_F_* flags ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hjýh]”hŒunsigned int flags”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M0hj÷ubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe SPLICE_F_* flags”h]”hŒThe SPLICE_F_* flags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´M0hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´M0hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjôubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hj8h]”hŒ Description”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M2hjôubhÝ)�”}”(hŒè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.”h]”hŒê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.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M1hjôubhÝ)�”}”(hŒ **Return**”h]”j©)�”}”(hj_h]”hŒReturn”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M6hjôubhÝ)�”}”(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 ”…”�”}”(hjuh²hh³Nh´Nubj©)�”}”(hŒ ***ppos**”h]”hŒ*ppos”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjuubhX4 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.”…”�”}”(hjuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M7hjôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhËh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ"splice_from_pipe_feed (C function)”Œc.splice_from_pipe_feed”hNt”auh1hìhhËh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒeint splice_from_pipe_feed (struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)”h]”j )�”}”(hŒdint splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)”h]”(jt)�”}”(hŒint”h]”hŒint”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj²h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M§ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj²h²hh³jÄh´M§ubjQ)�”}”(hŒsplice_from_pipe_feed”h]”j)�”}”(hŒsplice_from_pipe_feed”h]”hŒsplice_from_pipe_feed”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj²h²hh³jÄh´M§ubjn)�”}”(hŒK(struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjïubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjïubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+jÙsbŒc.splice_from_pipe_feed”†”asbuh1hhjïubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjïubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjïubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjëubjt)�”}”(hŒstruct splice_desc *sd”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjaubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjaubh)�”}”(hhh]”j)�”}”(hŒ splice_desc”h]”hŒ splice_desc”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j…Œmodname”NŒ classname”Nj/j2)�”}”j5]”j-Œc.splice_from_pipe_feed”†”asbuh1hhjaubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjaubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjaubj)�”}”(hŒsd”h]”hŒsd”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjëubjt)�”}”(hŒsplice_actor *actor”h]”(h)�”}”(hhh]”j)�”}”(hŒ splice_actor”h]”hŒ splice_actor”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jÚŒmodname”NŒ classname”Nj/j2)�”}”j5]”j-Œc.splice_from_pipe_feed”†”asbuh1hhjÑubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÑubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjÑubj)�”}”(hŒactor”h]”hŒactor”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjëubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj²h²hh³jÄh´M§ubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj®h²hh³jÄh´M§ubah}”(h]”j©ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jÄh´M§hj«h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ)feed available data from a pipe to a file”h]”hŒ)feed available data from a pipe to a file”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M§hj8 h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj«h²hh³jÄh´M§ubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jS jšjS j›‰jœ‰j�‰uh1hýh²hhhËh³Nh´NubjŸ)�”}”(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_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj[ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M«hjW ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``struct pipe_inode_info *pipe`` pipe to splice from ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hj| h]”hŒstruct pipe_inode_info *pipe”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjz ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M¨hjv ubjæ)�”}”(hhh]”hÝ)�”}”(hŒpipe to splice from”h]”hŒpipe to splice from”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‘ h´M¨hj’ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjv ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‘ h´M¨hjs ubjÄ)�”}”(hŒ4``struct splice_desc *sd`` information to **actor** ”h]”(jÊ)�”}”(hŒ``struct splice_desc *sd``”h]”jÐ)�”}”(hjµ h]”hŒstruct splice_desc *sd”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj³ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M©hj¯ ubjæ)�”}”(hhh]”hÝ)�”}”(hŒinformation to **actor**”h]”(hŒinformation to ”…”�”}”(hjÎ h²hh³Nh´Nubj©)�”}”(hŒ **actor**”h]”hŒactor”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÎ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÊ h´M©hjË ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¯ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÊ h´M©hjs ubjÄ)�”}”(hŒ6``splice_actor *actor`` handler that splices the data ”h]”(jÊ)�”}”(hŒ``splice_actor *actor``”h]”jÐ)�”}”(hjü h]”hŒsplice_actor *actor”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjú ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mªhjö ubjæ)�”}”(hhh]”hÝ)�”}”(hŒhandler that splices the data”h]”hŒhandler that splices the data”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j h´Mªhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjö ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´Mªhjs ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjW ubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hj7 h]”hŒ Description”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj5 ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M¬hjW 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Ý)�”}”(hXª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.”h]”(hŒ,This function loops over the pipe and calls ”…”�”}”(hjQ h²hh³Nh´Nubj©)�”}”(hŒ **actor**”h]”hŒactor”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjQ 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 h²hh³Nh´Nubj©)�”}”(hŒ**sd->total_len**”h]”hŒ sd->total_len”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjQ 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 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M¬hjM ubhÝ)�”}”(hŒÆ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ŒÆ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.”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M´hjM ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j[h³jƒ h´M¬hjW ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhËh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ"splice_from_pipe_next (C function)”Œc.splice_from_pipe_next”hNt”auh1hìhhËh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒPint splice_from_pipe_next (struct pipe_inode_info *pipe, struct splice_desc *sd)”h]”j )�”}”(hŒOint splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)”h]”(jt)�”}”(hŒint”h]”hŒint”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjµ h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Múubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjµ h²hh³jÇ h´MúubjQ)�”}”(hŒsplice_from_pipe_next”h]”j)�”}”(hŒsplice_from_pipe_next”h]”hŒsplice_from_pipe_next”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖ ubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhjµ h²hh³jÇ h´Múubjn)�”}”(hŒ6(struct pipe_inode_info *pipe, struct splice_desc *sd)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjò ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjò ubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j Œmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+jÜ sbŒc.splice_from_pipe_next”†”asbuh1hhjò ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjò ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjò ubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjò ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjî ubjt)�”}”(hŒstruct splice_desc *sd”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjd ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjd ubh)�”}”(hhh]”j)�”}”(hŒ splice_desc”h]”hŒ splice_desc”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jˆ Œmodname”NŒ classname”Nj/j2)�”}”j5]”j0 Œc.splice_from_pipe_next”†”asbuh1hhjd ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjd ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjd ubj)�”}”(hŒsd”h]”hŒsd”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjî ubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhjµ h²hh³jÇ h´Múubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj± h²hh³jÇ h´Múubah}”(h]”j¬ ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jÇ h´Múhj® h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ!wait for some data to splice from”h]”hŒ!wait for some data to splice from”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Múhjæ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj® h²hh³jÇ h´Múubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™j jšj j›‰jœ‰j�‰uh1hýh²hhhËh³Nh´NubjŸ)�”}”(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 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mþhj ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``struct pipe_inode_info *pipe`` pipe to splice from ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hj* h]”hŒstruct pipe_inode_info *pipe”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj( ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mûhj$ ubjæ)�”}”(hhh]”hÝ)�”}”(hŒpipe to splice from”h]”hŒpipe to splice from”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j? h´Mûhj@ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj$ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j? h´Mûhj! ubjÄ)�”}”(hŒB``struct splice_desc *sd`` information about the splice operation ”h]”(jÊ)�”}”(hŒ``struct splice_desc *sd``”h]”jÐ)�”}”(hjc h]”hŒstruct splice_desc *sd”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhja ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mühj] ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ&information about the splice operation”h]”hŒ&information about the splice operation”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jx h´Mühjy ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj] ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jx h´Mühj! ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj ubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hjž h]”hŒ Description”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjœ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mþhj ubj\)�”}”(hŒª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Œª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Œª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.”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mþhj´ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³jÆ h´Mþhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhËh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ#splice_from_pipe_begin (C function)”Œc.splice_from_pipe_begin”hNt”auh1hìhhËh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ4void splice_from_pipe_begin (struct splice_desc *sd)”h]”j )�”}”(hŒ3void splice_from_pipe_begin(struct splice_desc *sd)”h]”(jt)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjé h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M)ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjé h²hh³jû h´M)ubjQ)�”}”(hŒsplice_from_pipe_begin”h]”j)�”}”(hŒsplice_from_pipe_begin”h]”hŒsplice_from_pipe_begin”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhjé h²hh³jû h´M)ubjn)�”}”(hŒ(struct splice_desc *sd)”h]”jt)�”}”(hŒstruct splice_desc *sd”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj& ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj& ubh)�”}”(hhh]”j)�”}”(hŒ splice_desc”h]”hŒ splice_desc”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjE ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jJ Œmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+j sbŒc.splice_from_pipe_begin”†”asbuh1hhj& ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj& ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj& ubj)�”}”(hŒsd”h]”hŒsd”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj& ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj" ubah}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhjé h²hh³jû h´M)ubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhjå h²hh³jû h´M)ubah}”(h]”jà ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jû h´M)hjâ h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒstart splicing from pipe”h]”hŒstart splicing from pipe”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M)hjª h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhjâ h²hh³jû h´M)ubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jÅ jšjÅ j›‰jœ‰j�‰uh1hýh²hhhËh³Nh´NubjŸ)�”}”(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Ñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÍ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M-hjÉ ubj¿)�”}”(hhh]”jÄ)�”}”(hŒB``struct splice_desc *sd`` information about the splice operation ”h]”(jÊ)�”}”(hŒ``struct splice_desc *sd``”h]”jÐ)�”}”(hjî h]”hŒstruct splice_desc *sd”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjì ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M*hjè ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ&information about the splice operation”h]”hŒ&information about the splice operation”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´M*hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjè ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´M*hjå ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÉ ubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hj)h]”hŒ Description”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M,hjÉ ubj\)�”}”(hŒ™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Œ™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Œ’This function should be called before a loop containing splice_from_pipe_next() and splice_from_pipe_feed() to initialize the necessary fields of ”…”�”}”(hjCh²hh³Nh´Nubj©)�”}”(hŒ**sd**”h]”hŒsd”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjCubhŒ.”…”�”}”(hjCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M,hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³jch´M,hjÉ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhËh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ!splice_from_pipe_end (C function)”Œc.splice_from_pipe_end”hNt”auh1hìhhËh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒPvoid splice_from_pipe_end (struct pipe_inode_info *pipe, struct splice_desc *sd)”h]”j )�”}”(hŒOvoid splice_from_pipe_end(struct pipe_inode_info *pipe, struct splice_desc *sd)”h]”(jt)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj†h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M8ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj†h²hh³j˜h´M8ubjQ)�”}”(hŒsplice_from_pipe_end”h]”j)�”}”(hŒsplice_from_pipe_end”h]”hŒsplice_from_pipe_end”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§ubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj†h²hh³j˜h´M8ubjn)�”}”(hŒ6(struct pipe_inode_info *pipe, struct splice_desc *sd)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÃubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÃubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jçŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+j­sbŒc.splice_from_pipe_end”†”asbuh1hhjÃubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÃubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjÃubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj¿ubjt)�”}”(hŒstruct splice_desc *sd”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj5ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj5ubh)�”}”(hhh]”j)�”}”(hŒ splice_desc”h]”hŒ splice_desc”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jYŒmodname”NŒ classname”Nj/j2)�”}”j5]”jŒc.splice_from_pipe_end”†”asbuh1hhj5ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj5ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj5ubj)�”}”(hŒsd”h]”hŒsd”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj¿ubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj†h²hh³j˜h´M8ubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj‚h²hh³j˜h´M8ubah}”(h]”j}ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³j˜h´M8hjh²hubjx)�”}”(hhh]”hÝ)�”}”(hŒfinish splicing from pipe”h]”hŒfinish splicing from pipe”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M8hj·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhjh²hh³j˜h´M8ubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jÒjšjÒj›‰jœ‰j�‰uh1hýh²hhhËh³Nh´NubjŸ)�”}”(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©)�”}”(hjÜh]”hŒ Parameters”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M<hjÖubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``struct pipe_inode_info *pipe`` pipe to splice from ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hjûh]”hŒstruct pipe_inode_info *pipe”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M9hjõubjæ)�”}”(hhh]”hÝ)�”}”(hŒpipe to splice from”h]”hŒpipe to splice from”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´M9hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´M9hjòubjÄ)�”}”(hŒB``struct splice_desc *sd`` information about the splice operation ”h]”(jÊ)�”}”(hŒ``struct splice_desc *sd``”h]”jÐ)�”}”(hj4h]”hŒstruct splice_desc *sd”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M:hj.ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ&information about the splice operation”h]”hŒ&information about the splice operation”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jIh´M:hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jIh´M:hjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÖubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hjoh]”hŒ Description”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M<hjÖubj\)�”}”(hŒ—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Œ—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Œ—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().”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M<hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³j—h´M<hjÖubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhËh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ__splice_from_pipe (C function)”Œc.__splice_from_pipe”hNt”auh1hìhhËh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒfssize_t __splice_from_pipe (struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)”h]”j )�”}”(hŒessize_t __splice_from_pipe(struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)”h]”(h)�”}”(hhh]”j)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jÃŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+Œ__splice_from_pipe”sbŒc.__splice_from_pipe”†”asbuh1hhjºh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MHubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjºh²hh³jâh´MHubjQ)�”}”(hŒ__splice_from_pipe”h]”j)�”}”(hjßh]”hŒ__splice_from_pipe”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhjºh²hh³jâh´MHubjn)�”}”(hŒK(struct pipe_inode_info *pipe, struct splice_desc *sd, splice_actor *actor)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj ubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j0Œmodname”NŒ classname”Nj/j2)�”}”j5]”jÝŒc.__splice_from_pipe”†”asbuh1hhj ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj ubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjubjt)�”}”(hŒstruct splice_desc *sd”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj|ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj|ubh)�”}”(hhh]”j)�”}”(hŒ splice_desc”h]”hŒ splice_desc”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j Œmodname”NŒ classname”Nj/j2)�”}”j5]”jÝŒc.__splice_from_pipe”†”asbuh1hhj|ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj|ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj|ubj)�”}”(hŒsd”h]”hŒsd”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjubjt)�”}”(hŒsplice_actor *actor”h]”(h)�”}”(hhh]”j)�”}”(hŒ splice_actor”h]”hŒ splice_actor”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jõŒmodname”NŒ classname”Nj/j2)�”}”j5]”jÝŒc.__splice_from_pipe”†”asbuh1hhjìubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjìubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjìubj)�”}”(hŒactor”h]”hŒactor”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhjºh²hh³jâh´MHubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj¶h²hh³jâh´MHubah}”(h]”j±ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jâh´MHhj³h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ&splice data from a pipe to given actor”h]”hŒ&splice data from a pipe to given actor”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MHhjSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj³h²hh³jâh´MHubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jnjšjnj›‰jœ‰j�‰uh1hýh²hhhËh³Nh´NubjŸ)�”}”(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”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MLhjrubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``struct pipe_inode_info *pipe`` pipe to splice from ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hj—h]”hŒstruct pipe_inode_info *pipe”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MIhj‘ubjæ)�”}”(hhh]”hÝ)�”}”(hŒpipe to splice from”h]”hŒpipe to splice from”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¬h´MIhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¬h´MIhjŽubjÄ)�”}”(hŒ4``struct splice_desc *sd`` information to **actor** ”h]”(jÊ)�”}”(hŒ``struct splice_desc *sd``”h]”jÐ)�”}”(hjÐh]”hŒstruct splice_desc *sd”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MJhjÊubjæ)�”}”(hhh]”hÝ)�”}”(hŒinformation to **actor**”h]”(hŒinformation to ”…”�”}”(hjéh²hh³Nh´Nubj©)�”}”(hŒ **actor**”h]”hŒactor”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jåh´MJhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jåh´MJhjŽubjÄ)�”}”(hŒ6``splice_actor *actor`` handler that splices the data ”h]”(jÊ)�”}”(hŒ``splice_actor *actor``”h]”jÐ)�”}”(hjh]”hŒsplice_actor *actor”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MKhjubjæ)�”}”(hhh]”hÝ)�”}”(hŒhandler that splices the data”h]”hŒhandler that splices the data”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j,h´MKhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j,h´MKhjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjrubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hjRh]”hŒ Description”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MMhjrubj\)�”}”(hŒÐ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ŒÐ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Œ@This function does little more than loop over the pipe and call ”…”�”}”(hjlh²hh³Nh´Nubj©)�”}”(hŒ **actor**”h]”hŒactor”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjlubhŒ‡ 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.”…”�”}”(hjlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MMhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³jŒh´MMhjrubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhËh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒsplice_from_pipe (C function)”Œc.splice_from_pipe”hNt”auh1hìhhËh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒŒssize_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 )�”}”(hŒ‹ssize_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)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j¸Œmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+Œsplice_from_pipe”sbŒc.splice_from_pipe”†”asbuh1hhj¯h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mgubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj¯h²hh³j×h´MgubjQ)�”}”(hŒsplice_from_pipe”h]”j)�”}”(hjÔh]”hŒsplice_from_pipe”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj¯h²hh³j×h´Mgubjn)�”}”(hŒs(struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags, splice_actor *actor)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j%Œmodname”NŒ classname”Nj/j2)�”}”j5]”jÒŒc.splice_from_pipe”†”asbuh1hhjubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjýubjt)�”}”(hŒstruct file *out”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjqubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjqubh)�”}”(hhh]”j)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j•Œmodname”NŒ classname”Nj/j2)�”}”j5]”jÒŒc.splice_from_pipe”†”asbuh1hhjqubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjqubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjqubj)�”}”(hŒout”h]”hŒout”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjýubjt)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”j)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jêŒmodname”NŒ classname”Nj/j2)�”}”j5]”jÒŒc.splice_from_pipe”†”asbuh1hhjáubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjáubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjáubj)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjýubjt)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j?Œmodname”NŒ classname”Nj/j2)�”}”j5]”jÒŒc.splice_from_pipe”†”asbuh1hhj6ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj6ubj)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjýubjt)�”}”(hŒunsigned int flags”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj~ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj~ubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj~ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj~ubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjýubjt)�”}”(hŒsplice_actor *actor”h]”(h)�”}”(hhh]”j)�”}”(hŒ splice_actor”h]”hŒ splice_actor”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jØŒmodname”NŒ classname”Nj/j2)�”}”j5]”jÒŒc.splice_from_pipe”†”asbuh1hhjÏubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÏubjÈ)�”}”(hjË•h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjÏubj)�”}”(hŒactor”h]”hŒactor”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjýubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj¯h²hh³j×h´Mgubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj«h²hh³j×h´Mgubah}”(h]”j¦ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³j×h´Mghj¨h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ!splice data from a pipe to a file”h]”hŒ!splice data from a pipe to a file”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mghj6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj¨h²hh³j×h´Mgubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jQjšjQj›‰jœ‰j�‰uh1hýh²hhhËh³Nh´NubjŸ)�”}”(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]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MkhjUubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``struct pipe_inode_info *pipe`` pipe to splice from ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hjzh]”hŒstruct pipe_inode_info *pipe”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mhhjtubjæ)�”}”(hhh]”hÝ)�”}”(hŒpipe to splice from”h]”hŒpipe to splice from”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�h´Mhhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�h´MhhjqubjÄ)�”}”(hŒ'``struct file *out`` file to splice to ”h]”(jÊ)�”}”(hŒ``struct file *out``”h]”jÐ)�”}”(hj³h]”hŒstruct file *out”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mihj­ubjæ)�”}”(hhh]”hÝ)�”}”(hŒfile to splice to”h]”hŒfile to splice to”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÈh´MihjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÈh´MihjqubjÄ)�”}”(hŒ%``loff_t *ppos`` position in **out** ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjìh]”hŒ loff_t *ppos”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mjhjæubjæ)�”}”(hhh]”hÝ)�”}”(hŒposition in **out**”h]”(hŒ position in ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ**out**”h]”hŒout”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´Mjhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´MjhjqubjÄ)�”}”(hŒ(``size_t len`` how many bytes to splice ”h]”(jÊ)�”}”(hŒ``size_t len``”h]”jÐ)�”}”(hj3h]”hŒ size_t len”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mkhj-ubjæ)�”}”(hhh]”hÝ)�”}”(hŒhow many bytes to splice”h]”hŒhow many bytes to splice”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jHh´MkhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jHh´MkhjqubjÄ)�”}”(hŒ-``unsigned int flags`` splice modifier flags ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hjlh]”hŒunsigned int flags”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mlhjfubjæ)�”}”(hhh]”hÝ)�”}”(hŒsplice modifier flags”h]”hŒsplice modifier flags”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�h´Mlhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�h´MlhjqubjÄ)�”}”(hŒ6``splice_actor *actor`` handler that splices the data ”h]”(jÊ)�”}”(hŒ``splice_actor *actor``”h]”jÐ)�”}”(hj¥h]”hŒsplice_actor *actor”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MmhjŸubjæ)�”}”(hhh]”hÝ)�”}”(hŒhandler that splices the data”h]”hŒhandler that splices the data”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jºh´Mmhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jºh´Mmhjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjUubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hjàh]”hŒ Description”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MohjUubj\)�”}”(hŒmSee __splice_from_pipe. This function locks the pipe inode, otherwise it's identical to __splice_from_pipe().”h]”hÝ)�”}”(hŒmSee __splice_from_pipe. This function locks the pipe inode, otherwise it's identical to __splice_from_pipe().”h]”hŒoSee __splice_from_pipe. This function locks the pipe inode, otherwise it’s identical to __splice_from_pipe().”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mohjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³jh´MohjUubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhËh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ#iter_file_splice_write (C function)”Œc.iter_file_splice_write”hNt”auh1hìhhËh²hh³Nh´Nubhþ)�”}”(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)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j4Œmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+Œiter_file_splice_write”sbŒc.iter_file_splice_write”†”asbuh1hhj+h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mˆubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj+h²hh³jSh´MˆubjQ)�”}”(hŒiter_file_splice_write”h]”j)�”}”(hjPh]”hŒiter_file_splice_write”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj+h²hh³jSh´Mˆubjn)�”}”(hŒ^(struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj}ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj}ubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j¡Œmodname”NŒ classname”Nj/j2)�”}”j5]”jNŒc.iter_file_splice_write”†”asbuh1hhj}ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj}ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj}ubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjyubjt)�”}”(hŒstruct file *out”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjíubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjíubh)�”}”(hhh]”j)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jŒmodname”NŒ classname”Nj/j2)�”}”j5]”jNŒc.iter_file_splice_write”†”asbuh1hhjíubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjíubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjíubj)�”}”(hŒout”h]”hŒout”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjyubjt)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”j)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jfŒmodname”NŒ classname”Nj/j2)�”}”j5]”jNŒc.iter_file_splice_write”†”asbuh1hhj]ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj]ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj]ubj)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjyubjt)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j»Œmodname”NŒ classname”Nj/j2)�”}”j5]”jNŒc.iter_file_splice_write”†”asbuh1hhj²ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj²ubj)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjyubjt)�”}”(hŒunsigned int flags”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjúubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjúubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjúubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjúubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjyubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj+h²hh³jSh´Mˆubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj'h²hh³jSh´Mˆubah}”(h]”j"ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jSh´Mˆhj$h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ!splice data from a pipe to a file”h]”hŒ!splice data from a pipe to a file”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mˆhj]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj$h²hh³jSh´Mˆubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jxjšjxj›‰jœ‰j�‰uh1hýh²hhhËh³Nh´NubjŸ)�”}”(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©)�”}”(hj‚h]”hŒ Parameters”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MŒhj|ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ+``struct pipe_inode_info *pipe`` pipe info ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hj¡h]”hŒstruct pipe_inode_info *pipe”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M‰hj›ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ pipe info”h]”hŒ pipe info”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¶h´M‰hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¶h´M‰hj˜ubjÄ)�”}”(hŒ&``struct file *out`` file to write to ”h]”(jÊ)�”}”(hŒ``struct file *out``”h]”jÐ)�”}”(hjÚh]”hŒstruct file *out”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MŠhjÔubjæ)�”}”(hhh]”hÝ)�”}”(hŒfile to write to”h]”hŒfile to write to”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jïh´MŠhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jïh´MŠhj˜ubjÄ)�”}”(hŒ%``loff_t *ppos`` position in **out** ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjh]”hŒ loff_t *ppos”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M‹hj ubjæ)�”}”(hhh]”hÝ)�”}”(hŒposition in **out**”h]”(hŒ position in ”…”�”}”(hj,h²hh³Nh´Nubj©)�”}”(hŒ**out**”h]”hŒout”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j(h´M‹hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j(h´M‹hj˜ubjÄ)�”}”(hŒ)``size_t len`` number of bytes to splice ”h]”(jÊ)�”}”(hŒ``size_t len``”h]”jÐ)�”}”(hjZh]”hŒ size_t len”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MŒhjTubjæ)�”}”(hhh]”hÝ)�”}”(hŒnumber of bytes to splice”h]”hŒnumber of bytes to splice”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³joh´MŒhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³joh´MŒhj˜ubjÄ)�”}”(hŒ-``unsigned int flags`` splice modifier flags ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hj“h]”hŒunsigned int flags”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M�hj�ubjæ)�”}”(hhh]”hÝ)�”}”(hŒsplice modifier flags”h]”hŒsplice modifier flags”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¨h´M�hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¨h´M�hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj|ubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÎh]”hŒ Description”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M�hj|ubj\)�”}”(hŒ�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Œ�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Œ.Will either move or copy pages (determined by ”…”�”}”(hjèh²hh³Nh´Nubj©)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjèubhŒV options) from the given pipe inode to the given file. This one is ->write_iter-based.”…”�”}”(hjèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M�hjäubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³jh´M�hj|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhËh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒsplice_to_socket (C function)”Œc.splice_to_socket”hNt”auh1hìhhËh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒwssize_t splice_to_socket (struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags)”h]”j )�”}”(hŒvssize_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)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j4Œmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+Œsplice_to_socket”sbŒc.splice_to_socket”†”asbuh1hhj+h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj+h²hh³jSh´MubjQ)�”}”(hŒsplice_to_socket”h]”j)�”}”(hjPh]”hŒsplice_to_socket”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj+h²hh³jSh´Mubjn)�”}”(hŒ^(struct pipe_inode_info *pipe, struct file *out, loff_t *ppos, size_t len, unsigned int flags)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj}ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj}ubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j¡Œmodname”NŒ classname”Nj/j2)�”}”j5]”jNŒc.splice_to_socket”†”asbuh1hhj}ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj}ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj}ubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjyubjt)�”}”(hŒstruct file *out”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjíubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjíubh)�”}”(hhh]”j)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jŒmodname”NŒ classname”Nj/j2)�”}”j5]”jNŒc.splice_to_socket”†”asbuh1hhjíubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjíubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjíubj)�”}”(hŒout”h]”hŒout”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjyubjt)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”j)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jfŒmodname”NŒ classname”Nj/j2)�”}”j5]”jNŒc.splice_to_socket”†”asbuh1hhj]ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj]ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj]ubj)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjyubjt)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j»Œmodname”NŒ classname”Nj/j2)�”}”j5]”jNŒc.splice_to_socket”†”asbuh1hhj²ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj²ubj)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjyubjt)�”}”(hŒunsigned int flags”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjúubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjúubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjúubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjúubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjyubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj+h²hh³jSh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj'h²hh³jSh´Mubah}”(h]”j"ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jSh´Mhj$h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ#splice data from a pipe to a socket”h]”hŒ#splice data from a pipe to a socket”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mhj]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj$h²hh³jSh´Mubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jxjšjxj›‰jœ‰j�‰uh1hýh²hhhËh³Nh´NubjŸ)�”}”(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©)�”}”(hj‚h]”hŒ Parameters”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mhj|ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``struct pipe_inode_info *pipe`` pipe to splice from ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hj¡h]”hŒstruct pipe_inode_info *pipe”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mhj›ubjæ)�”}”(hhh]”hÝ)�”}”(hŒpipe to splice from”h]”hŒpipe to splice from”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¶h´Mhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¶h´Mhj˜ubjÄ)�”}”(hŒ(``struct file *out`` socket to write to ”h]”(jÊ)�”}”(hŒ``struct file *out``”h]”jÐ)�”}”(hjÚh]”hŒstruct file *out”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MhjÔubjæ)�”}”(hhh]”hÝ)�”}”(hŒsocket to write to”h]”hŒsocket to write to”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jïh´Mhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jïh´Mhj˜ubjÄ)�”}”(hŒ%``loff_t *ppos`` position in **out** ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjh]”hŒ loff_t *ppos”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mhj ubjæ)�”}”(hhh]”hÝ)�”}”(hŒposition in **out**”h]”(hŒ position in ”…”�”}”(hj,h²hh³Nh´Nubj©)�”}”(hŒ**out**”h]”hŒout”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j(h´Mhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j(h´Mhj˜ubjÄ)�”}”(hŒ)``size_t len`` number of bytes to splice ”h]”(jÊ)�”}”(hŒ``size_t len``”h]”jÐ)�”}”(hjZh]”hŒ size_t len”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MhjTubjæ)�”}”(hhh]”hÝ)�”}”(hŒnumber of bytes to splice”h]”hŒnumber of bytes to splice”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³joh´Mhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³joh´Mhj˜ubjÄ)�”}”(hŒ-``unsigned int flags`` splice modifier flags ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hj“h]”hŒunsigned int flags”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mhj�ubjæ)�”}”(hhh]”hÝ)�”}”(hŒsplice modifier flags”h]”hŒsplice modifier flags”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¨h´Mhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¨h´Mhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj|ubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÎh]”hŒ Description”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mhj|ubj\)�”}”(hŒWWill send **len** bytes from the pipe to a network socket. No data copying is involved.”h]”hÝ)�”}”(hŒWWill send **len** bytes from the pipe to a network socket. No data copying is involved.”h]”(hŒ Will send ”…”�”}”(hjèh²hh³Nh´Nubj©)�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjèubhŒF bytes from the pipe to a network socket. No data copying is involved.”…”�”}”(hjèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³j h´Mhj|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhËh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒvfs_splice_read (C function)”Œc.vfs_splice_read”hNt”auh1hìhhËh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒussize_t vfs_splice_read (struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)”h]”j )�”}”(hŒtssize_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)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j4 Œmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+Œvfs_splice_read”sbŒc.vfs_splice_read”†”asbuh1hhj+ h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MØubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj+ h²hh³jS h´MØubjQ)�”}”(hŒvfs_splice_read”h]”j)�”}”(hjP h]”hŒvfs_splice_read”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjb ubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj+ h²hh³jS h´MØubjn)�”}”(hŒ](struct file *in, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags)”h]”(jt)�”}”(hŒstruct file *in”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj} ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj} ubh)�”}”(hhh]”j)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j¡ Œmodname”NŒ classname”Nj/j2)�”}”j5]”jN Œc.vfs_splice_read”†”asbuh1hhj} ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj} ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj} ubj)�”}”(hŒin”h]”hŒin”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj} ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjy ubjt)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”j)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jö Œmodname”NŒ classname”Nj/j2)�”}”j5]”jN Œc.vfs_splice_read”†”asbuh1hhjí ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjí ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjí ubj)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj-!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjí ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjy ubjt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjF!h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjB!ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS!h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjB!ubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjd!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhja!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jf!Œmodname”NŒ classname”Nj/j2)�”}”j5]”jN Œc.vfs_splice_read”†”asbuh1hhjB!ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚!h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjB!ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj�!h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjB!ubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj�!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjy ubjt)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¹!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j»!Œmodname”NŒ classname”Nj/j2)�”}”j5]”jN Œc.vfs_splice_read”†”asbuh1hhj²!ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×!h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj²!ubj)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjå!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjy ubjt)�”}”(hŒunsigned int flags”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjþ!h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjú!ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjú!ubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjú!ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj("h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjú!ubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj6"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjú!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjy ubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj+ h²hh³jS h´MØubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj' h²hh³jS h´MØubah}”(h]”j" ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jS h´MØhj$ h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ/Read data from a file and splice it into a pipe”h]”hŒ/Read data from a file and splice it into a pipe”…”�”}”(hj`"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MØhj]"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj$ h²hh³jS h´MØubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jx"jšjx"j›‰jœ‰j�‰uh1hýh²hhhËh³Nh´NubjŸ)�”}”(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„"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj€"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÜhj|"ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ(``struct file *in`` File to splice from ”h]”(jÊ)�”}”(hŒ``struct file *in``”h]”jÐ)�”}”(hj¡"h]”hŒstruct file *in”…”�”}”(hj£"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŸ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÙhj›"ubjæ)�”}”(hhh]”hÝ)�”}”(hŒFile to splice from”h]”hŒFile to splice from”…”�”}”(hjº"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¶"h´MÙhj·"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj›"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¶"h´MÙhj˜"ubjÄ)�”}”(hŒ#``loff_t *ppos`` Input file offset ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjÚ"h]”hŒ loff_t *ppos”…”�”}”(hjÜ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjØ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÚhjÔ"ubjæ)�”}”(hhh]”hÝ)�”}”(hŒInput file offset”h]”hŒInput file offset”…”�”}”(hjó"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jï"h´MÚhjð"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÔ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jï"h´MÚhj˜"ubjÄ)�”}”(hŒ3``struct pipe_inode_info *pipe`` Pipe to splice to ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hj#h]”hŒstruct pipe_inode_info *pipe”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÛhj #ubjæ)�”}”(hhh]”hÝ)�”}”(hŒPipe to splice to”h]”hŒPipe to splice to”…”�”}”(hj,#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j(#h´MÛhj)#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj #ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j(#h´MÛhj˜"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#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjJ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÜhjF#ubjæ)�”}”(hhh]”hÝ)�”}”(hŒNumber of bytes to splice”h]”hŒNumber of bytes to splice”…”�”}”(hje#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ja#h´MÜhjb#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjF#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³ja#h´MÜhj˜"ubjÄ)�”}”(hŒ:``unsigned int flags`` Splice modifier flags (SPLICE_F_*) ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hj…#h]”hŒunsigned int flags”…”�”}”(hj‡#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjƒ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÝhj#ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ"Splice modifier flags (SPLICE_F_*)”h]”hŒ"Splice modifier flags (SPLICE_F_*)”…”�”}”(hjž#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jš#h´MÝhj›#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jš#h´MÝhj˜"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj|"ubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÀ#h]”hŒ Description”…”�”}”(hjÂ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¾#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mßhj|"ubhÝ)�”}”(hŒœ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.”h]”hŒœ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.”…”�”}”(hjÖ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÞhj|"ubhÝ)�”}”(hŒxIf 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ŒxIf successful, it returns the amount of data spliced, 0 if it hit the EOF or a hole and a negative error code otherwise.”…”�”}”(hjå#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mâhj|"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhËh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ#splice_direct_to_actor (C function)”Œc.splice_direct_to_actor”hNt”auh1hìhhËh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒdssize_t splice_direct_to_actor (struct file *in, struct splice_desc *sd, splice_direct_actor *actor)”h]”j )�”}”(hŒcssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, splice_direct_actor *actor)”h]”(h)�”}”(hhh]”j)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j$Œmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+Œsplice_direct_to_actor”sbŒc.splice_direct_to_actor”†”asbuh1hhj$h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mõubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9$h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj$h²hh³j8$h´MõubjQ)�”}”(hŒsplice_direct_to_actor”h]”j)�”}”(hj5$h]”hŒsplice_direct_to_actor”…”�”}”(hjK$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjG$ubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj$h²hh³j8$h´Mõubjn)�”}”(hŒE(struct file *in, struct splice_desc *sd, splice_direct_actor *actor)”h]”(jt)�”}”(hŒstruct file *in”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjf$h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjb$ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs$h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjb$ubh)�”}”(hhh]”j)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj„$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j†$Œmodname”NŒ classname”Nj/j2)�”}”j5]”j3$Œc.splice_direct_to_actor”†”asbuh1hhjb$ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢$h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjb$ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj°$h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjb$ubj)�”}”(hŒin”h]”hŒin”…”�”}”(hj½$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjb$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj^$ubjt)�”}”(hŒstruct splice_desc *sd”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjÖ$h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÒ$ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã$h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÒ$ubh)�”}”(hhh]”j)�”}”(hŒ splice_desc”h]”hŒ splice_desc”…”�”}”(hjô$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñ$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jö$Œmodname”NŒ classname”Nj/j2)�”}”j5]”j3$Œc.splice_direct_to_actor”†”asbuh1hhjÒ$ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÒ$ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjÒ$ubj)�”}”(hŒsd”h]”hŒsd”…”�”}”(hj-%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒ$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj^$ubjt)�”}”(hŒsplice_direct_actor *actor”h]”(h)�”}”(hhh]”j)�”}”(hŒsplice_direct_actor”h]”hŒsplice_direct_actor”…”�”}”(hjI%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjF%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jK%Œmodname”NŒ classname”Nj/j2)�”}”j5]”j3$Œc.splice_direct_to_actor”†”asbuh1hhjB%ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg%h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjB%ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hju%h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjB%ubj)�”}”(hŒactor”h]”hŒactor”…”�”}”(hj‚%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj^$ubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj$h²hh³j8$h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj $h²hh³j8$h´Mõubah}”(h]”j$ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³j8$h´Mõhj $h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ+splices data directly between two non-pipes”h]”hŒ+splices data directly between two non-pipes”…”�”}”(hj¬%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mõhj©%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj $h²hh³j8$h´Mõubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jÄ%jšjÄ%j›‰jœ‰j�‰uh1hýh²hhhËh³Nh´NubjŸ)�”}”(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Ð%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÌ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MùhjÈ%ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ(``struct file *in`` file to splice from ”h]”(jÊ)�”}”(hŒ``struct file *in``”h]”jÐ)�”}”(hjí%h]”hŒstruct file *in”…”�”}”(hjï%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjë%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Möhjç%ubjæ)�”}”(hhh]”hÝ)�”}”(hŒfile to splice from”h]”hŒfile to splice from”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j&h´Möhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjç%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j&h´Möhjä%ubjÄ)�”}”(hŒC``struct splice_desc *sd`` actor information on where to splice to ”h]”(jÊ)�”}”(hŒ``struct splice_desc *sd``”h]”jÐ)�”}”(hj&&h]”hŒstruct splice_desc *sd”…”�”}”(hj(&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj$&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M÷hj &ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ'actor information on where to splice to”h]”hŒ'actor information on where to splice to”…”�”}”(hj?&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j;&h´M÷hj<&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj &ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j;&h´M÷hjä%ubjÄ)�”}”(hŒ9``splice_direct_actor *actor`` handles the data splicing ”h]”(jÊ)�”}”(hŒ``splice_direct_actor *actor``”h]”jÐ)�”}”(hj_&h]”hŒsplice_direct_actor *actor”…”�”}”(hja&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj]&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MøhjY&ubjæ)�”}”(hhh]”hÝ)�”}”(hŒhandles the data splicing”h]”hŒhandles the data splicing”…”�”}”(hjx&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jt&h´Møhju&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjY&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jt&h´Møhjä%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÈ%ubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hjš&h]”hŒ Description”…”�”}”(hjœ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj˜&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MúhjÈ%ubj\)�”}”(hŒÏ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ŒÏ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ŒÏ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.”…”�”}”(hj´&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Múhj°&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³jÂ&h´MúhjÈ%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhhËh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒdo_splice_direct (C function)”Œc.do_splice_direct”hNt”auh1hìhhËh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒxssize_t do_splice_direct (struct file *in, loff_t *ppos, struct file *out, loff_t *opos, size_t len, unsigned int flags)”h]”j )�”}”(hŒwssize_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)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjì&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjé&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jî&Œmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+Œdo_splice_direct”sbŒc.do_splice_direct”†”asbuh1hhjå&h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M¹ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjå&h²hh³j 'h´M¹ubjQ)�”}”(hŒdo_splice_direct”h]”j)�”}”(hj 'h]”hŒdo_splice_direct”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'ubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhjå&h²hh³j 'h´M¹ubjn)�”}”(hŒ_(struct file *in, loff_t *ppos, struct file *out, loff_t *opos, size_t len, unsigned int flags)”h]”(jt)�”}”(hŒstruct file *in”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hj;'h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj7'ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH'h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj7'ubh)�”}”(hhh]”j)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjY'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjV'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j['Œmodname”NŒ classname”Nj/j2)�”}”j5]”j'Œc.do_splice_direct”†”asbuh1hhj7'ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw'h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj7'ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj…'h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj7'ubj)�”}”(hŒin”h]”hŒin”…”�”}”(hj’'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj3'ubjt)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”j)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj®'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j°'Œmodname”NŒ classname”Nj/j2)�”}”j5]”j'Œc.do_splice_direct”†”asbuh1hhj§'ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ'h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj§'ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjÚ'h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj§'ubj)�”}”(hŒppos”h]”hŒppos”…”�”}”(hjç'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj3'ubjt)�”}”(hŒstruct file *out”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjü'ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjü'ubh)�”}”(hhh]”j)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j (Œmodname”NŒ classname”Nj/j2)�”}”j5]”j'Œc.do_splice_direct”†”asbuh1hhjü'ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<(h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjü'ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjJ(h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjü'ubj)�”}”(hŒout”h]”hŒout”…”�”}”(hjW(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj3'ubjt)�”}”(hŒ loff_t *opos”h]”(h)�”}”(hhh]”j)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjs(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjp(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”ju(Œmodname”NŒ classname”Nj/j2)�”}”j5]”j'Œc.do_splice_direct”†”asbuh1hhjl(ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘(h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjl(ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjŸ(h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjl(ubj)�”}”(hŒopos”h]”hŒopos”…”�”}”(hj¬(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjl(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj3'ubjt)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÈ(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅ(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jÊ(Œmodname”NŒ classname”Nj/j2)�”}”j5]”j'Œc.do_splice_direct”†”asbuh1hhjÁ(ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ(h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÁ(ubj)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjô(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁ(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj3'ubjt)�”}”(hŒunsigned int flags”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj )ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj )ubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hj))h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj )ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7)h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj )ubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjE)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj )ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj3'ubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhjå&h²hh³j 'h´M¹ubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhjá&h²hh³j 'h´M¹ubah}”(h]”jÜ&ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³j 'h´M¹hjÞ&h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ'splices data directly between two files”h]”hŒ'splices data directly between two files”…”�”}”(hjo)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M¹hjl)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhjÞ&h²hh³j 'h´M¹ubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™j‡)jšj‡)j›‰jœ‰j�‰uh1hýh²hhhËh³Nh´NubjŸ)�”}”(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“)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M½hj‹)ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ(``struct file *in`` file to splice from ”h]”(jÊ)�”}”(hŒ``struct file *in``”h]”jÐ)�”}”(hj°)h]”hŒstruct file *in”…”�”}”(hj²)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj®)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´Mºhjª)ubjæ)�”}”(hhh]”hÝ)�”}”(hŒfile to splice from”h]”hŒfile to splice from”…”�”}”(hjÉ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÅ)h´MºhjÆ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjª)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÅ)h´Mºhj§)ubjÄ)�”}”(hŒ#``loff_t *ppos`` input file offset ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjé)h]”hŒ loff_t *ppos”…”�”}”(hjë)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjç)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M»hjã)ubjæ)�”}”(hhh]”hÝ)�”}”(hŒinput file offset”h]”hŒinput file offset”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jþ)h´M»hjÿ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjã)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jþ)h´M»hj§)ubjÄ)�”}”(hŒ'``struct file *out`` file to splice to ”h]”(jÊ)�”}”(hŒ``struct file *out``”h]”jÐ)�”}”(hj"*h]”hŒstruct file *out”…”�”}”(hj$*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj *ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M¼hj*ubjæ)�”}”(hhh]”hÝ)�”}”(hŒfile to splice to”h]”hŒfile to splice to”…”�”}”(hj;*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j7*h´M¼hj8*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j7*h´M¼hj§)ubjÄ)�”}”(hŒ$``loff_t *opos`` output file offset ”h]”(jÊ)�”}”(hŒ``loff_t *opos``”h]”jÐ)�”}”(hj[*h]”hŒ loff_t *opos”…”�”}”(hj]*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjY*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M½hjU*ubjæ)�”}”(hhh]”hÝ)�”}”(hŒoutput file offset”h]”hŒoutput file offset”…”�”}”(hjt*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jp*h´M½hjq*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjU*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jp*h´M½hj§)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–*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj’*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M¾hjŽ*ubjæ)�”}”(hhh]”hÝ)�”}”(hŒnumber of bytes to splice”h]”hŒnumber of bytes to splice”…”�”}”(hj­*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j©*h´M¾hjª*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŽ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j©*h´M¾hj§)ubjÄ)�”}”(hŒ-``unsigned int flags`` splice modifier flags ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hjÍ*h]”hŒunsigned int flags”…”�”}”(hjÏ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjË*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M¿hjÇ*ubjæ)�”}”(hhh]”hÝ)�”}”(hŒsplice modifier flags”h]”hŒsplice modifier flags”…”�”}”(hjæ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jâ*h´M¿hjã*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÇ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jâ*h´M¿hj§)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj‹)ubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hj+h]”hŒ Description”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÁhj‹)ubj\)�”}”(hŒü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. ”h]”hÝ)�”}”(hŒû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.”h]”hŒû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.”…”�”}”(hj"+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÁhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³j0+h´MÁhj‹)ubhÝ)�”}”(hŒ-ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc-h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj>-ubj)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjq-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj°+ubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhjb+h²hh³jŠ+h´MÒubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj^+h²hh³jŠ+h´MÒubah}”(h]”jY+ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jŠ+h´MÒhj[+h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ4splices data between two files for copy_file_range()”h]”hŒ4splices data between two files for copy_file_range()”…”�”• }”(hj›-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÒhj˜-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj[+h²hh³jŠ+h´MÒubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™j³-jšj³-j›‰jœ‰j�‰uh1hýh²hhhËh³Nh´NubjŸ)�”}”(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¿-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj»-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÖhj·-ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ(``struct file *in`` file to splice from ”h]”(jÊ)�”}”(hŒ``struct file *in``”h]”jÐ)�”}”(hjÜ-h]”hŒstruct file *in”…”�”}”(hjÞ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÚ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÓhjÖ-ubjæ)�”}”(hhh]”hÝ)�”}”(hŒfile to splice from”h]”hŒfile to splice from”…”�”}”(hjõ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jñ-h´MÓhjò-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÖ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jñ-h´MÓhjÓ-ubjÄ)�”}”(hŒ#``loff_t *ppos`` input file offset ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hj.h]”hŒ loff_t *ppos”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÔhj.ubjæ)�”}”(hhh]”hÝ)�”}”(hŒinput file offset”h]”hŒinput file offset”…”�”}”(hj..h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j*.h´MÔhj+.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j*.h´MÔhjÓ-ubjÄ)�”}”(hŒ'``struct file *out`` file to splice to ”h]”(jÊ)�”}”(hŒ``struct file *out``”h]”jÐ)�”}”(hjN.h]”hŒstruct file *out”…”�”}”(hjP.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjL.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÕhjH.ubjæ)�”}”(hhh]”hÝ)�”}”(hŒfile to splice to”h]”hŒfile to splice to”…”�”}”(hjg.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jc.h´MÕhjd.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjH.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jc.h´MÕhjÓ-ubjÄ)�”}”(hŒ$``loff_t *opos`` output file offset ”h]”(jÊ)�”}”(hŒ``loff_t *opos``”h]”jÐ)�”}”(hj‡.h]”hŒ loff_t *opos”…”�”}”(hj‰.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj….ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÖhj�.ubjæ)�”}”(hhh]”hÝ)�”}”(hŒoutput file offset”h]”hŒoutput file offset”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jœ.h´MÖhj�.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jœ.h´MÖhjÓ-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Â.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¾.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´M×hjº.ubjæ)�”}”(hhh]”hÝ)�”}”(hŒnumber of bytes to splice”h]”hŒnumber of bytes to splice”…”�”}”(hjÙ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÕ.h´M×hjÖ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjº.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÕ.h´M×hjÓ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj·-ubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hjû.h]”hŒ Description”…”�”}”(hjý.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjù.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÙhj·-ubj\)�”}”(hŒ�For 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Ý)�”}”(hŒŒFor 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ŒFor use by ->copy_file_range() methods. Like do_splice_direct(), but vfs_copy_file_range() already holds start_file_write() on ”…”�”}”(hj/h²hh³Nh´Nubj©)�”}”(hŒ**out**”h]”hŒout”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj/ubhŒ file.”…”�”}”(hj/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/splice:11: ./fs/splice.c”h´MÙhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³j5/h´MÙhj·-ubhÝ)�”}”(hŒ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 ``pseudo_edgetrigger`` has an EPOLLET consumer, enable per-write wakeups ``note_loss`` The next read() should insert a data-lost message ``prealloc`` per-pipe page preallocation pool ``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 that”h]”(hÝ)�”}”(hŒ**Definition**::”h]”(j©)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjŒ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjˆ5ubhŒ:”…”�”}”(hjˆ5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KThj„5ubj0)�”}”(hX 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 pseudo_edgetrigger; #ifdef CONFIG_WATCH_QUEUE; bool note_loss; #endif; struct anon_pipe_prealloc prealloc; 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]”hX 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 pseudo_edgetrigger; #ifdef CONFIG_WATCH_QUEUE; bool note_loss; #endif; struct anon_pipe_prealloc prealloc; 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¥5sbah}”(h]”h ]”h"]”h$]”h&]”jkjluh1j0h³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KVhj„5ubhÝ)�”}”(hŒ **Members**”h]”j©)�”}”(hj¶5h]”hŒMembers”…”�”}”(hj¸5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj´5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Kphj„5ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ+``mutex`` mutex protecting the whole thing ”h]”(jÊ)�”}”(hŒ ``mutex``”h]”jÐ)�”}”(hjÕ5h]”hŒmutex”…”�”}”(hj×5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÓ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KRhjÏ5ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ mutex protecting the whole thing”h]”hŒ mutex protecting the whole thing”…”�”}”(hjî5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jê5h´KRhjë5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÏ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jê5h´KRhjÌ5ubjÄ)�”}”(hŒ4``rd_wait`` reader wait point in case of empty pipe ”h]”(jÊ)�”}”(hŒ ``rd_wait``”h]”jÐ)�”}”(hj6h]”hŒrd_wait”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj 6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KShj6ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ'reader wait point in case of empty pipe”h]”hŒ'reader wait point in case of empty pipe”…”�”}”(hj'6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j#6h´KShj$6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j#6h´KShjÌ5ubjÄ)�”}”(hŒ3``wr_wait`` writer wait point in case of full pipe ”h]”(jÊ)�”}”(hŒ ``wr_wait``”h]”jÐ)�”}”(hjG6h]”hŒwr_wait”…”�”}”(hjI6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjE6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KThjA6ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ&writer wait point in case of full pipe”h]”hŒ&writer wait point in case of full pipe”…”�”}”(hj`6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j\6h´KThj]6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjA6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j\6h´KThjÌ5ubjÄ)�”}”(hŒ ``pipe_index`` the pipe indeces ”h]”(jÊ)�”}”(hŒ``pipe_index``”h]”jÐ)�”}”(hj€6h]”hŒ pipe_index”…”�”}”(hj‚6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj~6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KUhjz6ubjæ)�”}”(hhh]”hÝ)�”}”(hŒthe pipe indeces”h]”hŒthe pipe indeces”…”�”}”(hj™6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j•6h´KUhj–6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjz6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j•6h´KUhjÌ5ubjÄ)�”}”(hŒG``max_usage`` The maximum number of slots that may be used in the ring ”h]”(jÊ)�”}”(hŒ ``max_usage``”h]”jÐ)�”}”(hj¹6h]”hŒ max_usage”…”�”}”(hj»6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj·6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KWhj³6ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ8The maximum number of slots that may be used in the ring”h]”hŒ8The maximum number of slots that may be used in the ring”…”�”}”(hjÒ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÎ6h´KWhjÏ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj³6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÎ6h´KWhjÌ5ubjÄ)�”}”(hŒ?``ring_size`` total number of buffers (should be a power of 2) ”h]”(jÊ)�”}”(hŒ ``ring_size``”h]”jÐ)�”}”(hjò6h]”hŒ ring_size”…”�”}”(hjô6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjð6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KXhjì6ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ0total number of buffers (should be a power of 2)”h]”hŒ0total number of buffers (should be a power of 2)”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j7h´KXhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjì6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j7h´KXhjÌ5ubjÄ)�”}”(hŒF``nr_accounted`` The amount this pipe accounts for in user->pipe_bufs ”h]”(jÊ)�”}”(hŒ``nr_accounted``”h]”jÐ)�”}”(hj+7h]”hŒ nr_accounted”…”�”}”(hj-7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj)7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KYhj%7ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ4The amount this pipe accounts for in user->pipe_bufs”h]”hŒ4The amount this pipe accounts for in user->pipe_bufs”…”�”}”(hjD7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j@7h´KYhjA7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj%7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j@7h´KYhjÌ5ubjÄ)�”}”(hŒ3``readers`` number of current readers of this pipe ”h]”(jÊ)�”}”(hŒ ``readers``”h]”jÐ)�”}”(hjd7h]”hŒreaders”…”�”}”(hjf7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjb7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K[hj^7ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ&number of current readers of this pipe”h]”hŒ&number of current readers of this pipe”…”�”}”(hj}7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jy7h´K[hjz7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj^7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jy7h´K[hjÌ5ubjÄ)�”}”(hŒ3``writers`` number of current writers of this pipe ”h]”(jÊ)�”}”(hŒ ``writers``”h]”jÐ)�”}”(hj�7h]”hŒwriters”…”�”}”(hjŸ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj›7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K\hj—7ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ&number of current writers of this pipe”h]”hŒ&number of current writers of this pipe”…”�”}”(hj¶7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j²7h´K\hj³7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj—7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j²7h´K\hjÌ5ubjÄ)�”}”(hŒL``files`` number of struct file referring this pipe (protected by ->i_lock) ”h]”(jÊ)�”}”(hŒ ``files``”h]”jÐ)�”}”(hjÖ7h]”hŒfiles”…”�”}”(hjØ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÔ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K]hjÐ7ubjæ)�”}”(hhh]”hÝ)�”}”(hŒAnumber of struct file referring this pipe (protected by ->i_lock)”h]”hŒAnumber of struct file referring this pipe (protected by ->i_lock)”…”�”}”(hjï7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jë7h´K]hjì7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÐ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jë7h´K]hjÌ5ubjÄ)�”}”(hŒ``r_counter`` reader counter ”h]”(jÊ)�”}”(hŒ ``r_counter``”h]”jÐ)�”}”(hj8h]”hŒ r_counter”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj 8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K^hj 8ubjæ)�”}”(hhh]”hÝ)�”}”(hŒreader counter”h]”hŒreader counter”…”�”}”(hj(8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j$8h´K^hj%8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj 8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j$8h´K^hjÌ5ubjÄ)�”}”(hŒ``w_counter`` writer counter ”h]”(jÊ)�”}”(hŒ ``w_counter``”h]”jÐ)�”}”(hjH8h]”hŒ w_counter”…”�”}”(hjJ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjF8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K_hjB8ubjæ)�”}”(hhh]”hÝ)�”}”(hŒwriter counter”h]”hŒwriter counter”…”�”}”(hja8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j]8h´K_hj^8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjB8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j]8h´K_hjÌ5ubjÄ)�”}”(hŒI``pseudo_edgetrigger`` has an EPOLLET consumer, enable per-write wakeups ”h]”(jÊ)�”}”(hŒ``pseudo_edgetrigger``”h]”jÐ)�”}”(hj�8h]”hŒpseudo_edgetrigger”…”�”}”(hjƒ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K`hj{8ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ1has an EPOLLET consumer, enable per-write wakeups”h]”hŒ1has an EPOLLET consumer, enable per-write wakeups”…”�”}”(hjš8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j–8h´K`hj—8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj{8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j–8h´K`hjÌ5ubjÄ)�”}”(hŒ@``note_loss`` The next read() should insert a data-lost message ”h]”(jÊ)�”}”(hŒ ``note_loss``”h]”jÐ)�”}”(hjº8h]”hŒ note_loss”…”�”}”(hj¼8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¸8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KVhj´8ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ1The next read() should insert a data-lost message”h]”hŒ1The next read() should insert a data-lost message”…”�”}”(hjÓ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÏ8h´KVhjÐ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj´8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÏ8h´KVhjÌ5ubjÄ)�”}”(hŒ.``prealloc`` per-pipe page preallocation pool ”h]”(jÊ)�”}”(hŒ ``prealloc``”h]”jÐ)�”}”(hjó8h]”hŒprealloc”…”�”}”(hjõ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjñ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KZhjí8ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ per-pipe page preallocation pool”h]”hŒ per-pipe page preallocation pool”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j9h´KZhj 9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjí8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j9h´KZhjÌ5ubjÄ)�”}”(hŒ&``fasync_readers`` reader side fasync ”h]”(jÊ)�”}”(hŒ``fasync_readers``”h]”jÐ)�”}”(hj,9h]”hŒfasync_readers”…”�”}”(hj.9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj*9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Kahj&9ubjæ)�”}”(hhh]”hÝ)�”}”(hŒreader side fasync”h]”hŒreader side fasync”…”�”}”(hjE9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jA9h´KahjB9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj&9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jA9h´KahjÌ5ubjÄ)�”}”(hŒ&``fasync_writers`` writer side fasync ”h]”(jÊ)�”}”(hŒ``fasync_writers``”h]”jÐ)�”}”(hje9h]”hŒfasync_writers”…”�”}”(hjg9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjc9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Kbhj_9ubjæ)�”}”(hhh]”hÝ)�”}”(hŒwriter side fasync”h]”hŒwriter side fasync”…”�”}”(hj~9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jz9h´Kbhj{9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj_9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jz9h´KbhjÌ5ubjÄ)�”}”(hŒ,``bufs`` the circular array of pipe buffers ”h]”(jÊ)�”}”(hŒ``bufs``”h]”jÐ)�”}”(hjž9h]”hŒbufs”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjœ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Kchj˜9ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ"the circular array of pipe buffers”h]”hŒ"the circular array of pipe buffers”…”�”}”(hj·9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j³9h´Kchj´9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj˜9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j³9h´KchjÌ5ubjÄ)�”}”(hŒ(``user`` the user who created this pipe ”h]”(jÊ)�”}”(hŒ``user``”h]”jÐ)�”}”(hj×9h]”hŒuser”…”�”}”(hjÙ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÕ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KdhjÑ9ubjæ)�”}”(hhh]”hÝ)�”}”(hŒthe user who created this pipe”h]”hŒthe user who created this pipe”…”�”}”(hjð9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jì9h´Kdhjí9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÑ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jì9h´KdhjÌ5ubjÄ)�”}”(hŒI``watch_queue`` If this pipe is a watch_queue, this is the stuff for that”h]”(jÊ)�”}”(hŒ``watch_queue``”h]”jÐ)�”}”(hj:h]”hŒ watch_queue”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Kdhj :ubjæ)�”}”(hhh]”hÝ)�”}”(hŒ9If this pipe is a watch_queue, this is the stuff for that”h]”hŒ9If this pipe is a watch_queue, this is the stuff for that”…”�”}”(hj):h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Kehj&:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj :ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j%:h´KdhjÌ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj„5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ!pipe_has_watch_queue (C function)”Œc.pipe_has_watch_queue”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(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)�”}”(hŒbool”h]”hŒbool”…”�”}”(hjj:h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjf:h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K­ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy:h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjf:h²hh³jx:h´K­ubjQ)�”}”(hŒpipe_has_watch_queue”h]”j)�”}”(hŒpipe_has_watch_queue”h]”hŒpipe_has_watch_queue”…”�”}”(hj‹:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡:ubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhjf:h²hh³jx:h´K­ubjn)�”}”(hŒ$(const struct pipe_inode_info *pipe)”h]”jt)�”}”(hŒ"const struct pipe_inode_info *pipe”h]”(jz)�”}”(hŒconst”h]”hŒconst”…”�”}”(hj§:h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj£:ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ:h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj£:ubjz)�”}”(hj}h]”hŒstruct”…”�”}”(hjÃ:h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj£:ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ:h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj£:ubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjá:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞ:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jã:Œmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+j�:sbŒc.pipe_has_watch_queue”†”asbuh1hhj£:ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj£:ubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj£:ubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjŸ:ubah}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhjf:h²hh³jx:h´K­ubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhjb:h²hh³jx:h´K­ubah}”(h]”j]:ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jx:h´K­hj_:h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒUCheck whether the pipe is a watch_queue, i.e. it was created with O_NOTIFICATION_PIPE”h]”hŒUCheck whether the pipe is a watch_queue, i.e. it was created with O_NOTIFICATION_PIPE”…”�”}”(hjF;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K­hjC;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj_:h²hh³jx:h´K­ubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™j^;jšj^;j›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(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©)�”}”(hjh;h]”hŒ Parameters”…”�”}”(hjj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjf;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K±hjb;ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ9``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‰;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj…;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K¯hj�;ubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe pipe to check”h]”hŒThe pipe to check”…”�”}”(hj ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jœ;h´K¯hj�;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jœ;h´K¯hj~;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjb;ubhÝ)�”}”(hŒ **Return**”h]”j©)�”}”(hjÂ;h]”hŒReturn”…”�”}”(hjÄ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÀ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K±hjb;ubhÝ)�”}”(hŒ/true if pipe is a watch queue, false otherwise.”h]”hŒ/true if pipe is a watch queue, false otherwise.”…”�”}”(hjØ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K±hjb;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒpipe_occupancy (C function)”Œc.pipe_occupancy”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒBunsigned int pipe_occupancy (unsigned int head, unsigned int tail)”h]”j )�”}”(hŒAunsigned int pipe_occupancy(unsigned int head, unsigned int tail)”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj<h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K½ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj<h²hh³j<h´K½ubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hj$<h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj<h²hh³j<h´K½ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2<h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj<h²hh³j<h´K½ubjQ)�”}”(hŒpipe_occupancy”h]”j)�”}”(hŒpipe_occupancy”h]”hŒpipe_occupancy”…”�”}”(hjD<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@<ubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj<h²hh³j<h´K½ubjn)�”}”(hŒ&(unsigned int head, unsigned int tail)”h]”(jt)�”}”(hŒunsigned int head”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj`<h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj\<ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn<h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj\<ubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hj|<h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj\<ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ<h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj\<ubj)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj˜<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjX<ubjt)�”}”(hŒunsigned int tail”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj±<h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj­<ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿<h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj­<ubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hjÍ<h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj­<ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ<h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj­<ubj)�”}”(hŒtail”h]”hŒtail”…”�”}”(hjé<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjX<ubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj<h²hh³j<h´K½ubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhjÿ;h²hh³j<h´K½ubah}”(h]”jú;ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³j<h´K½hjü;h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ'Return number of slots used in the pipe”h]”hŒ'Return number of slots used in the pipe”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K½hj=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhjü;h²hh³j<h´K½ubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™j+=jšj+=j›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(hŒv**Parameters** ``unsigned int head`` The pipe ring head pointer ``unsigned int tail`` The pipe ring tail pointer”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hj5=h]”hŒ Parameters”…”�”}”(hj7=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj3=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÁhj/=ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ1``unsigned int head`` The pipe ring head pointer ”h]”(jÊ)�”}”(hŒ``unsigned int head``”h]”jÐ)�”}”(hjT=h]”hŒunsigned int head”…”�”}”(hjV=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjR=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K¾hjN=ubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe pipe ring head pointer”h]”hŒThe pipe ring head pointer”…”�”}”(hjm=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ji=h´K¾hjj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjN=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³ji=h´K¾hjK=ubjÄ)�”}”(hŒ0``unsigned int tail`` The pipe ring tail pointer”h]”(jÊ)�”}”(hŒ``unsigned int tail``”h]”jÐ)�”}”(hj�=h]”hŒunsigned int tail”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‹=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÀhj‡=ubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe pipe ring tail pointer”h]”hŒThe pipe ring tail pointer”…”�”}”(hj¦=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´K¿hj£=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‡=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¢=h´KÀhjK=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj/=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒpipe_empty (C function)”Œ c.pipe_empty”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ6bool pipe_empty (unsigned int head, unsigned int tail)”h]”j )�”}”(hŒ5bool pipe_empty(unsigned int head, unsigned int tail)”h]”(jt)�”}”(hjl:h]”hŒbool”…”�”}”(hjç=h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjã=h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÇubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ=h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjã=h²hh³jô=h´KÇubjQ)�”}”(hŒ pipe_empty”h]”j)�”}”(hŒ pipe_empty”h]”hŒ pipe_empty”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhjã=h²hh³jô=h´KÇubjn)�”}”(hŒ&(unsigned int head, unsigned int tail)”h]”(jt)�”}”(hŒunsigned int head”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj#>h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj>ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1>h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj>ubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hj?>h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj>ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM>h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj>ubj)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj[>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj>ubjt)�”}”(hŒunsigned int tail”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjt>h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjp>ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚>h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjp>ubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hj�>h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjp>ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž>h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjp>ubj)�”}”(hŒtail”h]”hŒtail”…”�”}”(hj¬>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjp>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj>ubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhjã=h²hh³jô=h´KÇubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhjß=h²hh³jô=h´KÇubah}”(h]”jÚ=ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jô=h´KÇhjÜ=h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ Return true if the pipe is empty”h]”hŒ Return true if the pipe is empty”…”�”}”(hjÖ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÇhjÓ>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhjÜ=h²hh³jô=h´KÇubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jî>jšjî>j›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(hŒv**Parameters** ``unsigned int head`` The pipe ring head pointer ``unsigned int tail`` The pipe ring tail pointer”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjø>h]”hŒ Parameters”…”�”}”(hjú>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjö>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KËhjò>ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ1``unsigned int head`` The pipe ring head pointer ”h]”(jÊ)�”}”(hŒ``unsigned int head``”h]”jÐ)�”}”(hj?h]”hŒunsigned int head”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÈhj?ubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe pipe ring head pointer”h]”hŒThe pipe ring head pointer”…”�”}”(hj0?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j,?h´KÈhj-?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j,?h´KÈhj?ubjÄ)�”}”(hŒ0``unsigned int tail`` The pipe ring tail pointer”h]”(jÊ)�”}”(hŒ``unsigned int tail``”h]”jÐ)�”}”(hjP?h]”hŒunsigned int tail”…”�”}”(hjR?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjN?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÊhjJ?ubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe pipe ring tail pointer”h]”hŒThe pipe ring tail pointer”…”�”}”(hji?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÉhjf?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjJ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³je?h´KÊhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjò>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒpipe_full (C function)”Œ c.pipe_full”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒIbool pipe_full (unsigned int head, unsigned int tail, unsigned int limit)”h]”j )�”}”(hŒHbool pipe_full(unsigned int head, unsigned int tail, unsigned int limit)”h]”(jt)�”}”(hjl:h]”hŒbool”…”�”}”(hjª?h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj¦?h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÑubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸?h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj¦?h²hh³j·?h´KÑubjQ)�”}”(hŒ pipe_full”h]”j)�”}”(hŒ pipe_full”h]”hŒ pipe_full”…”�”}”(hjÊ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆ?ubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj¦?h²hh³j·?h´KÑubjn)�”}”(hŒ:(unsigned int head, unsigned int tail, unsigned int limit)”h]”(jt)�”}”(hŒunsigned int head”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjæ?h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjâ?ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô?h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjâ?ubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjâ?ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjâ?ubj)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjÞ?ubjt)�”}”(hŒunsigned int tail”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj7@h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj3@ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE@h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj3@ubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hjS@h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj3@ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja@h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj3@ubj)�”}”(hŒtail”h]”hŒtail”…”�”}”(hjo@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjÞ?ubjt)�”}”(hŒunsigned int limit”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjˆ@h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj„@ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–@h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj„@ubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hj¤@h²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj„@ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²@h²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj„@ubj)�”}”(hŒlimit”h]”hŒlimit”…”�”}”(hjÀ@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjÞ?ubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj¦?h²hh³j·?h´KÑubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj¢?h²hh³j·?h´KÑubah}”(h]”j�?ah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³j·?h´KÑhjŸ?h²hubjx)�”}”(hhh]”hÝ)�”}”(hŒReturn true if the pipe is full”h]”hŒReturn true if the pipe is full”…”�”}”(hjê@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÑhjç@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhjŸ?h²hh³j·?h´KÑubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jAjšjAj›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(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 Ah]”hŒ Parameters”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÕhjAubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ1``unsigned int head`` The pipe ring head pointer ”h]”(jÊ)�”}”(hŒ``unsigned int head``”h]”jÐ)�”}”(hj+Ah]”hŒunsigned int head”…”�”}”(hj-Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj)Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÒhj%Aubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe pipe ring head pointer”h]”hŒThe pipe ring head pointer”…”�”}”(hjDAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j@Ah´KÒhjAAubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj%Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j@Ah´KÒhj"AubjÄ)�”}”(hŒ1``unsigned int tail`` The pipe ring tail pointer ”h]”(jÊ)�”}”(hŒ``unsigned int tail``”h]”jÐ)�”}”(hjdAh]”hŒunsigned int tail”…”�”}”(hjfAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjbAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÓhj^Aubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe pipe ring tail pointer”h]”hŒThe pipe ring tail pointer”…”�”}”(hj}Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jyAh´KÓhjzAubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj^Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jyAh´KÓhj"AubjÄ)�”}”(hŒ=``unsigned int limit`` The maximum amount of slots available.”h]”(jÊ)�”}”(hŒ``unsigned int limit``”h]”jÐ)�”}”(hj�Ah]”hŒunsigned int limit”…”�”}”(hjŸAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj›Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÕhj—Aubjæ)�”}”(hhh]”hÝ)�”}”(hŒ&The maximum amount of slots available.”h]”hŒ&The maximum amount of slots available.”…”�”}”(hj¶Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÔhj³Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj—Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j²Ah´KÕhj"Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjAubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒpipe_is_full (C function)”Œc.pipe_is_full”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ6bool pipe_is_full (const struct pipe_inode_info *pipe)”h]”j )�”}”(hŒ5bool pipe_is_full(const struct pipe_inode_info *pipe)”h]”(jt)�”}”(hjl:h]”hŒbool”…”�”}”(hj÷Ah²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjóAh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÝubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjóAh²hh³jBh´KÝubjQ)�”}”(hŒ pipe_is_full”h]”j)�”}”(hŒ pipe_is_full”h]”hŒ pipe_is_full”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhjóAh²hh³jBh´KÝubjn)�”}”(hŒ$(const struct pipe_inode_info *pipe)”h]”jt)�”}”(hŒ"const struct pipe_inode_info *pipe”h]”(jz)�”}”(hj©:h]”hŒconst”…”�”}”(hj3Bh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj/Bubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Bh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj/Bubjz)�”}”(hj}h]”hŒstruct”…”�”}”(hjNBh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj/Bubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Bh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj/Bubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjlBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jnBŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+jBsbŒc.pipe_is_full”†”asbuh1hhj/Bubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒBh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj/BubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjšBh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj/Bubj)�”}”(hŒpipe”h]”hŒpipe”…”�”•}”(hj§Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj+Bubah}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhjóAh²hh³jBh´KÝubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhjïAh²hh³jBh´KÝubah}”(h]”jêAah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jBh´KÝhjìAh²hubjx)�”}”(hhh]”hÝ)�”}”(hŒReturn true if the pipe is full”h]”hŒReturn true if the pipe is full”…”�”}”(hjÑBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÝhjÎBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhjìAh²hh³jBh´KÝubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jéBjšjéBj›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(hŒA**Parameters** ``const struct pipe_inode_info *pipe`` the pipe”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjóBh]”hŒ Parameters”…”�”}”(hjõBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjñBubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KáhjíBubj¿)�”}”(hhh]”jÄ)�”}”(hŒ/``const struct pipe_inode_info *pipe`` the pipe”h]”(jÊ)�”}”(hŒ&``const struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hjCh]”hŒ"const struct pipe_inode_info *pipe”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Kãhj Cubjæ)�”}”(hhh]”hÝ)�”}”(hŒthe pipe”h]”hŒthe pipe”…”�”}”(hj+Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KÞhj(Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j'Ch´Kãhj Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjíBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒpipe_is_empty (C function)”Œc.pipe_is_empty”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ7bool pipe_is_empty (const struct pipe_inode_info *pipe)”h]”j )�”}”(hŒ6bool pipe_is_empty(const struct pipe_inode_info *pipe)”h]”(jt)�”}”(hjl:h]”hŒbool”…”�”}”(hjlCh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjhCh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Kæubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzCh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjhCh²hh³jyCh´KæubjQ)�”}”(hŒ pipe_is_empty”h]”j)�”}”(hŒ pipe_is_empty”h]”hŒ pipe_is_empty”…”�”}”(hjŒCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆCubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhjhCh²hh³jyCh´Kæubjn)�”}”(hŒ$(const struct pipe_inode_info *pipe)”h]”jt)�”}”(hŒ"const struct pipe_inode_info *pipe”h]”(jz)�”}”(hj©:h]”hŒconst”…”�”}”(hj¨Ch²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj¤Cubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµCh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj¤Cubjz)�”}”(hj}h]”hŒstruct”…”�”}”(hjÃCh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj¤Cubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐCh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj¤Cubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjáCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jãCŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+jŽCsbŒc.pipe_is_empty”†”asbuh1hhj¤Cubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj¤CubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj¤Cubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj Cubah}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhjhCh²hh³jyCh´Kæubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhjdCh²hh³jyCh´Kæubah}”(h]”j_Cah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jyCh´KæhjaCh²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ Return true if the pipe is empty”h]”hŒ Return true if the pipe is empty”…”�”}”(hjFDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KæhjCDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhjaCh²hh³jyCh´Kæubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™j^Djšj^Dj›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(hŒA**Parameters** ``const struct pipe_inode_info *pipe`` the pipe”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjhDh]”hŒ Parameters”…”�”}”(hjjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjfDubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KêhjbDubj¿)�”}”(hhh]”jÄ)�”}”(hŒ/``const struct pipe_inode_info *pipe`` the pipe”h]”(jÊ)�”}”(hŒ&``const struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hj‡Dh]”hŒ"const struct pipe_inode_info *pipe”…”�”}”(hj‰Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj…Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Kìhj�Dubjæ)�”}”(hhh]”hÝ)�”}”(hŒthe pipe”h]”hŒthe pipe”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Kçhj�Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jœDh´Kìhj~Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjbDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒpipe_buf_usage (C function)”Œc.pipe_buf_usage”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(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)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjáDh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjÝDh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Kïubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðDh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÝDh²hh³jïDh´Kïubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hjþDh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjÝDh²hh³jïDh´Kïubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÝDh²hh³jïDh´KïubjQ)�”}”(hŒpipe_buf_usage”h]”j)�”}”(hŒpipe_buf_usage”h]”hŒpipe_buf_usage”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhjÝDh²hh³jïDh´Kïubjn)�”}”(hŒ$(const struct pipe_inode_info *pipe)”h]”jt)�”}”(hŒ"const struct pipe_inode_info *pipe”h]”(jz)�”}”(hj©:h]”hŒconst”…”�”}”(hj:Eh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj6Eubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGEh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj6Eubjz)�”}”(hj}h]”hŒstruct”…”�”}”(hjUEh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj6Eubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbEh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj6Eubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjsEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjpEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”juEŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+j EsbŒc.pipe_buf_usage”†”asbuh1hhj6Eubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Eh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj6EubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj¡Eh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj6Eubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj®Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj2Eubah}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhjÝDh²hh³jïDh´Kïubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhjÙDh²hh³jïDh´Kïubah}”(h]”jÔDah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jïDh´KïhjÖDh²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ'Return how many pipe buffers are in use”h]”hŒ'Return how many pipe buffers are in use”…”�”}”(hjØEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KïhjÕEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhjÖDh²hh³jïDh´Kïubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jðEjšjðEj›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(hŒA**Parameters** ``const struct pipe_inode_info *pipe`` the pipe”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjúEh]”hŒ Parameters”…”�”}”(hjüEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjøEubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KóhjôEubj¿)�”}”(hhh]”jÄ)�”}”(hŒ/``const struct pipe_inode_info *pipe`` the pipe”h]”(jÊ)�”}”(hŒ&``const struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hjFh]”hŒ"const struct pipe_inode_info *pipe”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KõhjFubjæ)�”}”(hhh]”hÝ)�”}”(hŒthe pipe”h]”hŒthe pipe”…”�”}”(hj2Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Kðhj/Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j.Fh´KõhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjôEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒpipe_buf (C function)”Œ c.pipe_buf”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒUstruct pipe_buffer * pipe_buf (const struct pipe_inode_info *pipe, unsigned int slot)”h]”j )�”}”(hŒSstruct pipe_buffer *pipe_buf(const struct pipe_inode_info *pipe, unsigned int slot)”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjsFh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjoFh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Køubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Fh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjoFh²hh³j€Fh´Køubh)�”}”(hhh]”j)�”}”(hŒ pipe_buffer”h]”hŒ pipe_buffer”…”�”}”(hj’Fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j”FŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+Œpipe_buf”sbŒ c.pipe_buf”†”asbuh1hhjoFh²hh³j€Fh´Køubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Fh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjoFh²hh³j€Fh´KøubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjÁFh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjoFh²hh³j€Fh´KøubjQ)�”}”(hŒpipe_buf”h]”j)�”}”(hj°Fh]”hŒpipe_buf”…”�”}”(hjÒFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎFubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhjoFh²hh³j€Fh´Køubjn)�”}”(hŒ7(const struct pipe_inode_info *pipe, unsigned int slot)”h]”(jt)�”}”(hŒ"const struct pipe_inode_info *pipe”h]”(jz)�”}”(hj©:h]”hŒconst”…”�”}”(hjíFh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjéFubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúFh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjéFubjz)�”}”(hj}h]”hŒstruct”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjéFubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjéFubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hj&Gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#Gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j(GŒmodname”NŒ classname”Nj/j2)�”}”j5]”j®FŒ c.pipe_buf”†”asbuh1hhjéFubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDGh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjéFubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjRGh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjéFubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj_Gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjåFubjt)�”}”(hŒunsigned int slot”h]”(jt)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjxGh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjtGubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†Gh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjtGubjt)�”}”(hŒint”h]”hŒint”…”�”}”(hj”Gh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjtGubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢Gh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjtGubj)�”}”(hŒslot”h]”hŒslot”…”�”}”(hj°Gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjåFubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhjoFh²hh³j€Fh´Køubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhjkFh²hh³j€Fh´Køubah}”(h]”jfFah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³j€Fh´KøhjhFh²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ>Return the pipe buffer for the specified slot in the pipe ring”h]”hŒ>Return the pipe buffer for the specified slot in the pipe ring”…”�”}”(hjÚGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Køhj×Gh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhjhFh²hh³j€Fh´Køubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jòGjšjòGj›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(hŒy**Parameters** ``const struct pipe_inode_info *pipe`` The pipe to access ``unsigned int slot`` The slot of interest”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjüGh]”hŒ Parameters”…”�”}”(hjþGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjúGubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KühjöGubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ:``const struct pipe_inode_info *pipe`` The pipe to access ”h]”(jÊ)�”}”(hŒ&``const struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hjHh]”hŒ"const struct pipe_inode_info *pipe”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KùhjHubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe pipe to access”h]”hŒThe pipe to access”…”�”}”(hj4Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j0Hh´Kùhj1Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j0Hh´KùhjHubjÄ)�”}”(hŒ*``unsigned int slot`` The slot of interest”h]”(jÊ)�”}”(hŒ``unsigned int slot``”h]”jÐ)�”}”(hjTHh]”hŒunsigned int slot”…”�”}”(hjVHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjRHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KûhjNHubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe slot of interest”h]”hŒThe slot of interest”…”�”}”(hjmHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´KúhjjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjNHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jiHh´KûhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjöGubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒpipe_head_buf (C function)”Œc.pipe_head_buf”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒGstruct pipe_buffer * pipe_head_buf (const struct pipe_inode_info *pipe)”h]”j )�”}”(hŒEstruct pipe_buffer *pipe_head_buf(const struct pipe_inode_info *pipe)”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hj®Hh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjªHh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Mubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼Hh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjªHh²hh³j»Hh´Mubh)�”}”(hhh]”j)�”}”(hŒ pipe_buffer”h]”hŒ pipe_buffer”…”�”}”(hjÍHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jÏHŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+Œ pipe_head_buf”sbŒc.pipe_head_buf”†”asbuh1hhjªHh²hh³j»Hh´Mubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîHh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjªHh²hh³j»Hh´MubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjüHh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjªHh²hh³j»Hh´MubjQ)�”}”(hŒ pipe_head_buf”h]”j)�”}”(hjëHh]”hŒ pipe_head_buf”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Iubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhjªHh²hh³j»Hh´Mubjn)�”}”(hŒ$(const struct pipe_inode_info *pipe)”h]”jt)�”}”(hŒ"const struct pipe_inode_info *pipe”h]”(jz)�”}”(hj©:h]”hŒconst”…”�”}”(hj(Ih²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj$Iubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Ih²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj$Iubjz)�”}”(hj}h]”hŒstruct”…”�”}”(hjCIh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj$Iubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPIh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj$Iubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjaIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^Iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jcIŒmodname”NŒ classname”Nj/j2)�”}”j5]”jéHŒc.pipe_head_buf”†”asbuh1hhj$Iubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj$IubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj�Ih²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj$Iubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjšIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj Iubah}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhjªHh²hh³j»Hh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj¦Hh²hh³j»Hh´Mubah}”(h]”j¡Hah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³j»Hh´Mhj£Hh²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ3Return the pipe buffer at the head of the pipe ring”h]”hŒ3Return the pipe buffer at the head of the pipe ring”…”�”}”(hjÄIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´MhjÁIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj£Hh²hh³j»Hh´Mubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jÜIjšjÜIj›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(hŒK**Parameters** ``const struct pipe_inode_info *pipe`` The pipe to access”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjæIh]”hŒ Parameters”…”�”}”(hjèIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjäIubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´MhjàIubj¿)�”}”(hhh]”jÄ)�”}”(hŒ9``const struct pipe_inode_info *pipe`` The pipe to access”h]”(jÊ)�”}”(hŒ&``const struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hjJh]”hŒ"const struct pipe_inode_info *pipe”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M hjÿIubjæ)�”}”(hhh]”hÝ)�”}”(hŒThe pipe to access”h]”hŒThe pipe to access”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´MhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÿIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jJh´M hjüIubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjàIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒpipe_buf_get (C function)”Œc.pipe_buf_get”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒIbool pipe_buf_get (struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”j )�”}”(hŒHbool pipe_buf_get(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hjl:h]”hŒbool”…”�”}”(hj_Jh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj[Jh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmJh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj[Jh²hh³jlJh´M ubjQ)�”}”(hŒ pipe_buf_get”h]”j)�”}”(hŒ pipe_buf_get”h]”hŒ pipe_buf_get”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{Jubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj[Jh²hh³jlJh´M ubjn)�”}”(hŒ7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hj›Jh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj—Jubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨Jh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj—Jubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hj¹Jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶Jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j»JŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+j�JsbŒc.pipe_buf_get”†”asbuh1hhj—Jubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙJh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj—JubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjçJh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj—Jubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjôJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj“Jubjt)�”}”(hŒstruct pipe_buffer *buf”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj Kubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj Kubh)�”}”(hhh]”j)�”}”(hŒ pipe_buffer”h]”hŒ pipe_buffer”…”�”}”(hj+Kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(Kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j-KŒmodname”NŒ classname”Nj/j2)�”}”j5]”jÕJŒc.pipe_buf_get”†”asbuh1hhj Kubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIKh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj KubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjWKh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhj Kubj)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjdKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshj“Jubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj[Jh²hh³jlJh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhjWJh²hh³jlJh´M ubah}”(h]”jRJah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jlJh´M hjTJh²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ get a reference to a pipe_buffer”h]”hŒ get a reference to a pipe_buffer”…”�”}”(hjŽKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M hj‹Kh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhjTJh²hh³jlJh´M ubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™j¦Kjšj¦Kj›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(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©)�”}”(hj°Kh]”hŒ Parameters”…”�”}”(hj²Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj®Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´MhjªKubj¿)�”}”(hhh]”(jÄ)�”}”(hŒE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hjÏKh]”hŒstruct pipe_inode_info *pipe”…”�”}”(hjÑKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÍKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M hjÉKubjæ)�”}”(hhh]”hÝ)�”}”(hŒ#the pipe that the buffer belongs to”h]”hŒ#the pipe that the buffer belongs to”…”�”}”(hjèKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jäKh´M hjåKubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÉKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jäKh´M hjÆKubjÄ)�”}”(hŒ=``struct pipe_buffer *buf`` the buffer to get a reference to ”h]”(jÊ)�”}”(hŒ``struct pipe_buffer *buf``”h]”jÐ)�”}”(hjLh]”hŒstruct pipe_buffer *buf”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´MhjLubjæ)�”}”(hhh]”hÝ)�”}”(hŒ the buffer to get a reference to”h]”hŒ the buffer to get a reference to”…”�”}”(hj!Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jLh´MhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jLh´MhjÆKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjªKubhÝ)�”}”(hŒ **Return**”h]”j©)�”}”(hjCLh]”hŒReturn”…”�”}”(hjELh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjALubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´MhjªKubhÝ)�”}”(hŒ4``true`` if the reference was successfully obtained.”h]”(jÐ)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj]Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjYLubhŒ, if the reference was successfully obtained.”…”�”}”(hjYLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´MhjªKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒpipe_buf_release (C function)”Œc.pipe_buf_release”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒMvoid pipe_buf_release (struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”j )�”}”(hŒLvoid pipe_buf_release(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj–Lh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj’Lh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Mubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Lh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj’Lh²hh³j¤Lh´MubjQ)�”}”(hŒpipe_buf_release”h]”j)�”}”(hŒpipe_buf_release”h]”hŒpipe_buf_release”…”�”}”(hj·Lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³Lubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj’Lh²hh³j¤Lh´Mubjn)�”}”(hŒ7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjÓLh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÏLubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàLh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÏLubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjñLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jóLŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+j¹LsbŒc.pipe_buf_release”†”asbuh1hhjÏLubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÏLubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjÏLubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj,Mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjËLubjt)�”}”(hŒstruct pipe_buffer *buf”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjEMh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjAMubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRMh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjAMubh)�”}”(hhh]”j)�”}”(hŒ pipe_buffer”h]”hŒ pipe_buffer”…”�”}”(hjcMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jeMŒmodname”NŒ classname”Nj/j2)�”}”j5]”j MŒc.pipe_buf_release”†”asbuh1hhjAMubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjAMubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjAMubj)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjœMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjAMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjËLubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj’Lh²hh³j¤Lh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhjŽLh²hh³j¤Lh´Mubah}”(h]”j‰Lah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³j¤Lh´Mhj‹Lh²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ put a reference to a pipe_buffer”h]”hŒ put a reference to a pipe_buffer”…”�”}”(hjÆMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´MhjÃMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj‹Lh²hh³j¤Lh´Mubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jÞMjšjÞMj›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(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”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjèMh]”hŒ Parameters”…”�”}”(hjêMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjæMubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´MhjâMubj¿)�”}”(hhh]”(jÄ)�”}”(hŒE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hjNh]”hŒstruct pipe_inode_info *pipe”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´MhjNubjæ)�”}”(hhh]”hÝ)�”}”(hŒ#the pipe that the buffer belongs to”h]”hŒ#the pipe that the buffer belongs to”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jNh´MhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jNh´MhjþMubjÄ)�”}”(hŒ<``struct pipe_buffer *buf`` the buffer to put a reference to”h]”(jÊ)�”}”(hŒ``struct pipe_buffer *buf``”h]”jÐ)�”}”(hj@Nh]”hŒstruct pipe_buffer *buf”…”�”}”(hjBNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj>Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´Mhj:Nubjæ)�”}”(hhh]”hÝ)�”}”(hŒ the buffer to put a reference to”h]”hŒ the buffer to put a reference to”…”�”}”(hjYNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´MhjVNubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj:Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jUNh´MhjþMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjâMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒpipe_buf_confirm (C function)”Œc.pipe_buf_confirm”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒLint pipe_buf_confirm (struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”j )�”}”(hŒKint pipe_buf_confirm(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hŒint”h]”hŒint”…”�”}”(hjšNh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj–Nh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M'ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©Nh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj–Nh²hh³j¨Nh´M'ubjQ)�”}”(hŒpipe_buf_confirm”h]”j)�”}”(hŒpipe_buf_confirm”h]”hŒpipe_buf_confirm”…”�”}”(hj»Nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·Nubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj–Nh²hh³j¨Nh´M'ubjn)�”}”(hŒ7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hj×Nh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÓNubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäNh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÓNubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjõNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j÷NŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+j½NsbŒc.pipe_buf_confirm”†”asbuh1hhjÓNubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÓNubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj#Oh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjÓNubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj0Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjÏNubjt)�”}”(hŒstruct pipe_buffer *buf”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjIOh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjEOubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVOh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjEOubh)�”}”(hhh]”j)�”}”(hŒ pipe_buffer”h]”hŒ pipe_buffer”…”�”}”(hjgOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jiOŒmodname”NŒ classname”Nj/j2)�”}”j5]”jOŒc.pipe_buf_confirm”†”asbuh1hhjEOubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Oh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjEOubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj“Oh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjEOubj)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjÏNubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj–Nh²hh³j¨Nh´M'ubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj’Nh²hh³j¨Nh´M'ubah}”(h]”j�Nah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³j¨Nh´M'hj�Nh²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ"verify contents of the pipe buffer”h]”hŒ"verify contents of the pipe buffer”…”�”}”(hjÊOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M'hjÇOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj�Nh²hh³j¨Nh´M'ubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jâOjšjâOj›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(hŒ‹**Parameters** ``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ``struct pipe_buffer *buf`` the buffer to confirm”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjìOh]”hŒ Parameters”…”�”}”(hjîOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjêOubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M+hjæOubj¿)�”}”(hhh]”(jÄ)�”}”(hŒE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hj Ph]”hŒstruct pipe_inode_info *pipe”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M(hjPubjæ)�”}”(hhh]”hÝ)�”}”(hŒ#the pipe that the buffer belongs to”h]”hŒ#the pipe that the buffer belongs to”…”�”}”(hj$Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j Ph´M(hj!Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j Ph´M(hjPubjÄ)�”}”(hŒ1``struct pipe_buffer *buf`` the buffer to confirm”h]”(jÊ)�”}”(hŒ``struct pipe_buffer *buf``”h]”jÐ)�”}”(hjDPh]”hŒstruct pipe_buffer *buf”…”�”}”(hjFPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjBPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M*hj>Pubjæ)�”}”(hhh]”hÝ)�”}”(hŒthe buffer to confirm”h]”hŒthe buffer to confirm”…”�”}”(hj]Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M)hjZPubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj>Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jYPh´M*hjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjæOubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒpipe_buf_try_steal (C function)”Œc.pipe_buf_try_steal”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒObool pipe_buf_try_steal (struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”j )�”}”(hŒNbool pipe_buf_try_steal(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hjl:h]”hŒbool”…”�”}”(hjžPh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshjšPh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M4ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Ph²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjšPh²hh³j«Ph´M4ubjQ)�”}”(hŒpipe_buf_try_steal”h]”j)�”}”(hŒpipe_buf_try_steal”h]”hŒpipe_buf_try_steal”…”�”}”(hj¾Ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºPubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhjšPh²hh³j«Ph´M4ubjn)�”}”(hŒ7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjÚPh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÖPubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçPh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÖPubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjøPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”júPŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+jÀPsbŒc.pipe_buf_try_steal”†”asbuh1hhjÖPubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÖPubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj&Qh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjÖPubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj3Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjÒPubjt)�”}”(hŒstruct pipe_buffer *buf”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjLQh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjHQubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYQh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjHQubh)�”}”(hhh]”j)�”}”(hŒ pipe_buffer”h]”hŒ pipe_buffer”…”�”}”(hjjQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jlQŒmodname”NŒ classname”Nj/j2)�”}”j5]”jQŒc.pipe_buf_try_steal”†”asbuh1hhjHQubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆQh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjHQubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj–Qh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjHQubj)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj£Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjÒPubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhjšPh²hh³j«Ph´M4ubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj–Ph²hh³j«Ph´M4ubah}”(h]”j‘Pah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³j«Ph´M4hj“Ph²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ*attempt to take ownership of a pipe_buffer”h]”hŒ*attempt to take ownership of a pipe_buffer”…”�”}”(hjÍQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M4hjÊQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj“Ph²hh³j«Ph´M4ubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jåQjšjåQj›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(hŒ”**Parameters** ``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ``struct pipe_buffer *buf`` the buffer to attempt to steal”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjïQh]”hŒ Parameters”…”�”}”(hjñQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjíQubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M8hjéQubj¿)�”}”(hhh]”(jÄ)�”}”(hŒE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hjRh]”hŒstruct pipe_inode_info *pipe”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M5hjRubjæ)�”}”(hhh]”hÝ)�”}”(hŒ#the pipe that the buffer belongs to”h]”hŒ#the pipe that the buffer belongs to”…”�”}”(hj'Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j#Rh´M5hj$Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j#Rh´M5hjRubjÄ)�”}”(hŒ:``struct pipe_buffer *buf`` the buffer to attempt to steal”h]”(jÊ)�”}”(hŒ``struct pipe_buffer *buf``”h]”jÐ)�”}”(hjGRh]”hŒstruct pipe_buffer *buf”…”�”}”(hjIRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjERubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M7hjARubjæ)�”}”(hhh]”hÝ)�”}”(hŒthe buffer to attempt to steal”h]”hŒthe buffer to attempt to steal”…”�”}”(hj`Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ\/var/lib/git/docbuild/linux/Documentation/filesystems/splice:19: ./include/linux/pipe_fs_i.h”h´M6hj]Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjARubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j\Rh´M7hjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjéQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ'generic_pipe_buf_try_steal (C function)”Œc.generic_pipe_buf_try_steal”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒWbool generic_pipe_buf_try_steal (struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”j )�”}”(hŒVbool generic_pipe_buf_try_steal(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hjl:h]”hŒbool”…”�”}”(hj¡Rh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj�Rh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´Kîubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯Rh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj�Rh²hh³j®Rh´KîubjQ)�”}”(hŒgeneric_pipe_buf_try_steal”h]”j)�”}”(hŒgeneric_pipe_buf_try_steal”h]”hŒgeneric_pipe_buf_try_steal”…”�”}”(hjÁRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½Rubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj�Rh²hh³j®Rh´Kîubjn)�”}”(hŒ7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjÝRh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÙRubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêRh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÙRubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hjûRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jýRŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+jÃRsbŒc.generic_pipe_buf_try_steal”†”asbuh1hhjÙRubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÙRubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj)Sh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjÙRubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj6Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjÕRubjt)�”}”(hŒstruct pipe_buffer *buf”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjOSh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjKSubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Sh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjKSubh)�”}”(hhh]”j)�”}”(hŒ pipe_buffer”h]”hŒ pipe_buffer”…”�”}”(hjmSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjjSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”joSŒmodname”NŒ classname”Nj/j2)�”}”j5]”jSŒc.generic_pipe_buf_try_steal”†”asbuh1hhjKSubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Sh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjKSubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj™Sh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjKSubj)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj¦Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjÕRubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj�Rh²hh³j®Rh´Kîubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj™Rh²hh³j®Rh´Kîubah}”(h]”j”Rah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³j®Rh´Kîhj–Rh²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ4attempt to take ownership of a :c:type:`pipe_buffer`”h]”(hŒattempt to take ownership of a ”…”�”}”(hjÐSh²hh³Nh´Nubh)�”}”(hŒ:c:type:`pipe_buffer`”h]”jÐ)�”}”(hjÚSh]”hŒ pipe_buffer”…”�”}”(hjÜSh²hh³Nh´Nubah}”(h]”h ]”(Œxref”j)Œc-type”eh"]”h$]”h&]”uh1jÏhjØSubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œfilesystems/splice”Œ refdomain”j)Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j/j2)�”}”j5]”jSŒc.generic_pipe_buf_try_steal”†”asbŒ reftarget”Œ pipe_buffer”uh1hh³j®Rh´KîhjÐSubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´KîhjÍSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj–Rh²hh³j®Rh´Kîubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jTjšjTj›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(hXØ**Parameters** ``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ``struct pipe_buffer *buf`` the buffer to attempt to steal **Description** This function attempts to steal the :c:type:`struct page ` attached to **buf**. If successful, this function returns 0 and returns with the page locked. The caller may then reuse the page for whatever he wishes; the typical use is insertion into a different file page cache.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjTh]”hŒ Parameters”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´KòhjTubj¿)�”}”(hhh]”(jÄ)�”}”(hŒE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hj8Th]”hŒstruct pipe_inode_info *pipe”…”�”}”(hj:Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj6Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´Kïhj2Tubjæ)�”}”(hhh]”hÝ)�”}”(hŒ#the pipe that the buffer belongs to”h]”hŒ#the pipe that the buffer belongs to”…”�”}”(hjQTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jMTh´KïhjNTubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj2Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jMTh´Kïhj/TubjÄ)�”}”(hŒ;``struct pipe_buffer *buf`` the buffer to attempt to steal ”h]”(jÊ)�”}”(hŒ``struct pipe_buffer *buf``”h]”jÐ)�”}”(hjqTh]”hŒstruct pipe_buffer *buf”…”�”}”(hjsTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjoTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´KðhjkTubjæ)�”}”(hhh]”hÝ)�”}”(hŒthe buffer to attempt to steal”h]”hŒthe buffer to attempt to steal”…”�”}”(hjŠTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j†Th´Kðhj‡Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjkTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j†Th´Kðhj/Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjTubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¬Th]”hŒ Description”…”�”}”(hj®Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjªTubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´KòhjTubj\)�”}”(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ÆTh²hh³Nh´Nubh)�”}”(hŒ:c:type:`struct page `”h]”jÐ)�”}”(hjÐTh]”hŒ struct page”…”�”}”(hjÒTh²hh³Nh´Nubah}”(h]”h ]”(jæSj)Œc-type”eh"]”h$]”h&]”uh1jÏhjÎTubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jòSŒ refdomain”j)Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j/j2)�”}”j5]”sbjýSŒpage”uh1hh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´KòhjÆTubhŒ attached to ”…”�”}”(hjÆTh²hh³Nh´Nubj©)�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hjõTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÆTubhŒÄ. 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ÆTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jðTh´KòhjÂTubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³jðTh´KòhjTubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ!generic_pipe_buf_get (C function)”Œc.generic_pipe_buf_get”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒQbool generic_pipe_buf_get (struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”j )�”}”(hŒPbool generic_pipe_buf_get(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hjl:h]”hŒbool”…”�”}”(hj3Uh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj/Uh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´M ubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAUh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj/Uh²hh³j@Uh´M ubjQ)�”}”(hŒgeneric_pipe_buf_get”h]”j)�”}”(hŒgeneric_pipe_buf_get”h]”hŒgeneric_pipe_buf_get”…”�”}”(hjSUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOUubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj/Uh²hh³j@Uh´M ubjn)�”}”(hŒ7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjoUh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjkUubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Uh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjkUubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hj�Uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”j�UŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+jUUsbŒc.generic_pipe_buf_get”†”asbuh1hhjkUubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Uh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjkUubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj»Uh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjkUubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjÈUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjgUubjt)�”}”(hŒstruct pipe_buffer *buf”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjáUh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÝUubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîUh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÝUubh)�”}”(hhh]”j)�”}”(hŒ pipe_buffer”h]”hŒ pipe_buffer”…”�”}”(hjÿUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjüUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jVŒmodname”NŒ classname”Nj/j2)�”}”j5]”j©UŒc.generic_pipe_buf_get”†”asbuh1hhjÝUubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÝUubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj+Vh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjÝUubj)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj8Vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjgUubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj/Uh²hh³j@Uh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj+Uh²hh³j@Uh´M ubah}”(h]”j&Uah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³j@Uh´M hj(Uh²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ?get a reference to a :c:type:`struct pipe_buffer `”h]”(hŒget a reference to a ”…”�”}”(hjbVh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct pipe_buffer `”h]”jÐ)�”}”(hjlVh]”hŒstruct pipe_buffer”…”�”}”(hjnVh²hh³Nh´Nubah}”(h]”h ]”(jæSj)Œc-type”eh"]”h$]”h&]”uh1jÏhjjVubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jòSŒ refdomain”j)Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j/j2)�”}”j5]”j©UŒc.generic_pipe_buf_get”†”asbjýSŒ pipe_buffer”uh1hh³j®Rh´KîhjbVubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´M hj_Vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj(Uh²hh³j@Uh´M ubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jžVjšjžVj›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(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¨Vh]”hŒ Parameters”…”�”}”(hjªVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¦Vubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´Mhj¢Vubj¿)�”}”(hhh]”(jÄ)�”}”(hŒE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hjÇVh]”hŒstruct pipe_inode_info *pipe”…”�”}”(hjÉVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÅVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´M hjÁVubjæ)�”}”(hhh]”hÝ)�”}”(hŒ#the pipe that the buffer belongs to”h]”hŒ#the pipe that the buffer belongs to”…”�”}”(hjàVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÜVh´M hjÝVubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÁVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÜVh´M hj¾VubjÄ)�”}”(hŒ=``struct pipe_buffer *buf`` the buffer to get a reference to ”h]”(jÊ)�”}”(hŒ``struct pipe_buffer *buf``”h]”jÐ)�”}”(hjWh]”hŒstruct pipe_buffer *buf”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjþVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´MhjúVubjæ)�”}”(hhh]”hÝ)�”}”(hŒ the buffer to get a reference to”h]”hŒ the buffer to get a reference to”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jWh´MhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjúVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jWh´Mhj¾Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¢VubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(hj;Wh]”hŒ Description”…”�”}”(hj=Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj9Wubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´Mhj¢Vubj\)�”}”(hŒŽ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ŒŽ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Œ*This function grabs an extra reference to ”…”�”}”(hjUWh²hh³Nh´Nubj©)�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hj]Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjUWubhŒ_. It’s used in the tee() system call, when we duplicate the buffers in one pipe into another.”…”�”}”(hjUWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´MhjQWubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³juWh´Mhj¢Vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ%generic_pipe_buf_release (C function)”Œc.generic_pipe_buf_release”hNt”auh1hìhjZ/h²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒUvoid generic_pipe_buf_release (struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”j )�”}”(hŒTvoid generic_pipe_buf_release(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjœWh²hh³Nh´Nubah}”(h]”h ]”j€ah"]”h$]”h&]”uh1jshj˜Wh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´Mubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Wh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hj˜Wh²hh³jªWh´MubjQ)�”}”(hŒgeneric_pipe_buf_release”h]”j)�”}”(hŒgeneric_pipe_buf_release”h]”hŒgeneric_pipe_buf_release”…”�”}”(hj½Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹Wubah}”(h]”h ]”(jfjgeh"]”h$]”h&]”jkjluh1jPhj˜Wh²hh³jªWh´Mubjn)�”}”(hŒ7(struct pipe_inode_info *pipe, struct pipe_buffer *buf)”h]”(jt)�”}”(hŒstruct pipe_inode_info *pipe”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjÙWh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÕWubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæWh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÕWubh)�”}”(hhh]”j)�”}”(hŒpipe_inode_info”h]”hŒpipe_inode_info”…”�”}”(hj÷Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jùWŒmodname”NŒ classname”Nj/j2)�”}”j5]”j8)�”}”j+j¿WsbŒc.generic_pipe_buf_release”†”asbuh1hhjÕWubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjÕWubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj%Xh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjÕWubj)�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj2Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjÑWubjt)�”}”(hŒstruct pipe_buffer *buf”h]”(jz)�”}”(hj}h]”hŒstruct”…”�”}”(hjKXh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjGXubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXXh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjGXubh)�”}”(hhh]”j)�”}”(hŒ pipe_buffer”h]”hŒ pipe_buffer”…”�”}”(hjiXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j)Œreftype”j+Œ reftarget”jkXŒmodname”NŒ classname”Nj/j2)�”}”j5]”jXŒc.generic_pipe_buf_release”†”asbuh1hhjGXubj@)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Xh²hh³Nh´Nubah}”(h]”h ]”jLah"]”h$]”h&]”uh1j?hjGXubjÈ)�”}”(hjËh]”hŒ*”…”�”}”(hj•Xh²hh³Nh´Nubah}”(h]”h ]”jÔah"]”h$]”h&]”uh1jÇhjGXubj)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj¢Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjkjluh1jshjÑWubeh}”(h]”h ]”h"]”h$]”h&]”jkjluh1jmhj˜Wh²hh³jªWh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jkjljiˆuh1jjjjkhj”Wh²hh³jªWh´Mubah}”(h]”j�Wah ]”(jojpeh"]”h$]”h&]”jtˆju)jvhuh1jh³jªWh´Mhj‘Wh²hubjx)�”}”(hhh]”hÝ)�”}”(hŒ?put a reference to a :c:type:`struct pipe_buffer `”h]”(hŒput a reference to a ”…”�”}”(hjÌXh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct pipe_buffer `”h]”jÐ)�”}”(hjÖXh]”hŒstruct pipe_buffer”…”�”}”(hjØXh²hh³Nh´Nubah}”(h]”h ]”(jæSj)Œc-type”eh"]”h$]”h&]”uh1jÏhjÔXubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jòSŒ refdomain”j)Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j/j2)�”}”j5]”jXŒc.generic_pipe_buf_release”†”asbjýSŒ pipe_buffer”uh1hh³j®Rh´KîhjÌXubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´MhjÉXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jwhj‘Wh²hh³jªWh´Mubeh}”(h]”h ]”(j)Œfunction”eh"]”h$]”h&]”j˜j)j™jYjšjYj›‰jœ‰j�‰uh1hýh²hhjZ/h³Nh´NubjŸ)�”}”(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©)�”}”(hjYh]”hŒ Parameters”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´M hj Yubj¿)�”}”(hhh]”(jÄ)�”}”(hŒE``struct pipe_inode_info *pipe`` the pipe that the buffer belongs to ”h]”(jÊ)�”}”(hŒ ``struct pipe_inode_info *pipe``”h]”jÐ)�”}”(hj1Yh]”hŒstruct pipe_inode_info *pipe”…”�”}”(hj3Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj/Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´Mhj+Yubjæ)�”}”(hhh]”hÝ)�”}”(hŒ#the pipe that the buffer belongs to”h]”hŒ#the pipe that the buffer belongs to”…”�”}”(hjJYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jFYh´MhjGYubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj+Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jFYh´Mhj(YubjÄ)�”}”(hŒ=``struct pipe_buffer *buf`` the buffer to put a reference to ”h]”(jÊ)�”}”(hŒ``struct pipe_buffer *buf``”h]”jÐ)�”}”(hjjYh]”hŒstruct pipe_buffer *buf”…”�”}”(hjlYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjhYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´MhjdYubjæ)�”}”(hhh]”hÝ)�”}”(hŒ the buffer to put a reference to”h]”hŒ the buffer to put a reference to”…”�”}”(hjƒYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jYh´Mhj€Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjdYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jYh´Mhj(Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj YubhÝ)�”}”(hŒ**Description**”h]”j©)�”}”(•× hj¥Yh]”hŒ Description”…”�”}”(hj§Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj£Yubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´M hj Yubj\)�”}”(hŒ.This function releases a reference to **buf**.”h]”hÝ)�”}”(hj½Yh]”(hŒ&This function releases a reference to ”…”�”}”(hj¿Yh²hh³Nh´Nubj©)�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hjÆYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¿YubhŒ.”…”�”}”(hj¿Yh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒL/var/lib/git/docbuild/linux/Documentation/filesystems/splice:22: ./fs/pipe.c”h´M hj»Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j[h³jÞYh´M hj Yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjZ/h²hh³Nh´Nubeh}”(h]”Œ pipes-api”ah ]”h"]”Œ pipes api”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubeh}”(h]”Œsplice-and-pipes”ah ]”h"]”Œsplice and pipes”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jZŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jùYjöYjW/jT/jñYjîYuŒ nametypes”}”(jùY‰jW/‰jñY‰uh}”(jöYh·jT/hËhûjj—jœj©j®j¬ j± jà jå j}j‚j±j¶j¦j«j"j'j"j'j" j' j$j $jÜ&já&jY+j^+jîYjZ/j…/jŠ/jÛ1jà1j°3jµ3j5j5j]:jb:jú;jÿ;jÚ=jß=j�?j¢?jêAjïAj_CjdCjÔDjÙDjfFjkFj¡Hj¦HjRJjWJj‰LjŽLj�Nj’Nj‘Pj–Pj”Rj™Rj&Uj+Uj�Wj”WuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.