€•Œ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/userspace-api/ebpf/syscall”Œ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/userspace-api/ebpf/syscall”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/it_IT/userspace-api/ebpf/syscall”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ja_JP/userspace-api/ebpf/syscall”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ko_KR/userspace-api/ebpf/syscall”Œ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/userspace-api/ebpf/syscall”Œ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/userspace-api/ebpf/syscall”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒH/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ eBPF Syscall”h]”hŒ eBPF Syscall”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ field_list”“”)�”}”(hhh]”hŒfield”“”)�”}”(hhh]”(hŒ field_name”“”)�”}”(hŒAuthors”h]”hŒAuthors”…”�”}”(hhéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäh³hÇh´KubhŒ field_body”“”)�”}”(hŒr- Alexei Starovoitov - Joe Stringer - Michael Kerrisk ”h]”hŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ#Alexei Starovoitov ”h]”hŒ paragraph”“”)�”}”(hjh]”(hŒAlexei Starovoitov <”…”�”}”(hj h²hh³Nh´NubhŒ reference”“”)�”}”(hŒast@kernel.org”h]”hŒast@kernel.org”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:ast@kernel.org”uh1jhj ubhŒ>”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÿubj)�”}”(hŒJoe Stringer ”h]”j )�”}”(hj5h]”(hŒJoe Stringer <”…”�”}”(hj7h²hh³Nh´Nubj)�”}”(hŒjoe@wand.net.nz”h]”hŒjoe@wand.net.nz”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:joe@wand.net.nz”uh1jhj7ubhŒ>”…”�”}”(hj7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Khj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÿubj)�”}”(hŒ)Michael Kerrisk ”h]”j )�”}”(hŒ(Michael Kerrisk ”h]”(hŒMichael Kerrisk <”…”�”}”(hjbh²hh³Nh´Nubj)�”}”(hŒmtk.manpages@gmail.com”h]”hŒmtk.manpages@gmail.com”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:mtk.manpages@gmail.com”uh1jhjbubhŒ>”…”�”}”(hjbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Khj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhÿubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1hýh³hÇh´Khhùubah}”(h]”h ]”h"]”h$]”h&]”uh1h÷hhäubeh}”(h]”h ]”h"]”h$]”h&]”uh1hâh³hÇh´Khhßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhhÊh²hh³hÇh´Kubj )�”}”(hŒTThe primary info for the bpf syscall is available in the `man-pages`_ for `bpf(2)`_.”h]”(hŒ9The primary info for the bpf syscall is available in the ”…”�”}”(hj¤h²hh³Nh´Nubj)�”}”(hŒ `man-pages`_”h]”hŒ man-pages”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ man-pages”Œrefuri”Œ%https://www.kernel.org/doc/man-pages/”uh1jhj¤Œresolved”KubhŒ for ”…”�”}”(hj¤h²hh³Nh´Nubj)�”}”(hŒ `bpf(2)`_”h]”hŒbpf(2)”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œbpf(2)”j¼Œ0https://man7.org/linux/man-pages/man2/bpf.2.html”uh1jhj¤j¾KubhŒ.”…”�”}”(hj¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K hhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒbpf() subcommand reference”h]”hŒbpf() subcommand reference”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÞh²hh³hÇh´Kubj )�”}”(hX$The operation to be performed by the **bpf**\ () system call is determined by the *cmd* argument. Each operation takes an accompanying argument, provided via *attr*, which is a pointer to a union of type *bpf_attr* (see below). The size argument is the size of the union pointed to by *attr*.”h]”(hŒ%The operation to be performed by the ”…”�”}”(hjïh²hh³Nh´NubhŒstrong”“”)�”}”(hŒ**bpf**”h]”hŒbpf”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjïubhŒ& () system call is determined by the ”…”�”}”(hjïh²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*cmd*”h]”hŒcmd”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjïubhŒG argument. Each operation takes an accompanying argument, provided via ”…”�”}”(hjïh²hh³Nh´Nubj )�”}”(hŒ*attr*”h]”hŒattr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjïubhŒ(, which is a pointer to a union of type ”…”�”}”(hjïh²hh³Nh´Nubj )�”}”(hŒ *bpf_attr*”h]”hŒbpf_attr”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjïubhŒG (see below). The size argument is the size of the union pointed to by ”…”�”}”(hjïh²hh³Nh´Nubj )�”}”(hŒ*attr*”h]”hŒattr”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjïubhŒ.”…”�”}”(hjïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:16: ./include/uapi/linux/bpf.h”h´K�hjÞh²hubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hXüBPF_MAP_CREATE Description Create a map and return a file descriptor that refers to the map. The close-on-exec file descriptor flag (see **fcntl**\ (2)) is automatically enabled for the new file descriptor. Applying **close**\ (2) to the file descriptor returned by **BPF_MAP_CREATE** will delete the map (but see NOTES). Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(hŒterm”“”)�”}”(hŒBPF_MAP_CREATE”h]”hŒBPF_MAP_CREATE”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´K°hjcubhŒ definition”“”)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hX4Description Create a map and return a file descriptor that refers to the map. The close-on-exec file descriptor flag (see **fcntl**\ (2)) is automatically enabled for the new file descriptor. Applying **close**\ (2) to the file descriptor returned by **BPF_MAP_CREATE** will delete the map (but see NOTES). ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´K¬hj€ubjy)�”}”(hhh]”(j )�”}”(hŒ³Create a map and return a file descriptor that refers to the map. The close-on-exec file descriptor flag (see **fcntl**\ (2)) is automatically enabled for the new file descriptor.”h]”(hŒnCreate a map and return a file descriptor that refers to the map. The close-on-exec file descriptor flag (see ”…”�”}”(hj–h²hh³Nh´Nubjø)�”}”(hŒ **fcntl**”h]”hŒfcntl”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj–ubhŒ< (2)) is automatically enabled for the new file descriptor.”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´K§hj“ubj )�”}”(hŒrApplying **close**\ (2) to the file descriptor returned by **BPF_MAP_CREATE** will delete the map (but see NOTES).”h]”(hŒ Applying ”…”�”}”(hj·h²hh³Nh´Nubjø)�”}”(hŒ **close**”h]”hŒclose”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj·ubhŒ) (2) to the file descriptor returned by ”…”�”}”(hj·h²hh³Nh´Nubjø)�”}”(hŒ**BPF_MAP_CREATE**”h]”hŒBPF_MAP_CREATE”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj·ubhŒ% will delete the map (but see NOTES).”…”�”}”(hj·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´K«hj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j’h´K¬hj}ubjb)�”}”(hŒ€Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jwh´K°hjöubjy)�”}”(hhh]”j )�”}”(hŒxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, ”…”�”}”(hj h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ is set appropriately).”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´K¯hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jwh´K°hj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jwh´K°hj^ubjb)�”}”(hXBPF_MAP_LOOKUP_ELEM Description Look up an element with a given *key* in the map referred to by the file descriptor *map_fd*. The *flags* argument may be specified as one of the following: **BPF_F_LOCK** Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_MAP_LOOKUP_ELEM”h]”hŒBPF_MAP_LOOKUP_ELEM”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KÁhjJubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXPDescription Look up an element with a given *key* in the map referred to by the file descriptor *map_fd*. The *flags* argument may be specified as one of the following: **BPF_F_LOCK** Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´K½hjcubjy)�”}”(hhh]”(j )�”}”(hŒ]Look up an element with a given *key* in the map referred to by the file descriptor *map_fd*.”h]”(hŒ Look up an element with a given ”…”�”}”(hjyh²hh³Nh´Nubj )�”}”(hŒ*key*”h]”hŒkey”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjyubhŒ/ in the map referred to by the file descriptor ”…”�”}”(hjyh²hh³Nh´Nubj )�”}”(hŒ*map_fd*”h]”hŒmap_fd”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjyubhŒ.”…”�”}”(hjyh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´K´hjvubj )�”}”(hŒ>The *flags* argument may be specified as one of the following:”h]”(hŒThe ”…”�”}”(hj¬h²hh³Nh´Nubj )�”}”(hŒ*flags*”h]”hŒflags”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¬ubhŒ3 argument may be specified as one of the following:”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´K·hjvubj])�”}”(hhh]”jb)�”}”(hŒ�**BPF_F_LOCK** Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock. ”h]”(jh)�”}”(hŒ**BPF_F_LOCK**”h]”jø)�”}”(hjÖh]”hŒ BPF_F_LOCK”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³juh´K½hjÐubjy)�”}”(hhh]”j )�”}”(hŒ}Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock.”h]”hŒ}Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock.”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´K»hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³juh´K½hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³juh´K½hj`ubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j\h´KÁhjubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hj0h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj0ubhŒ is set appropriately.”…”�”}”(hj0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KÀhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j\h´KÁhj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j\h´KÁhj^ubjb)�”}”(hX€BPF_MAP_UPDATE_ELEM Description Create or update an element (key/value pair) in a specified map. The *flags* argument should be specified as one of the following: **BPF_ANY** Create a new element or update an existing element. **BPF_NOEXIST** Create a new element only if it did not exist. **BPF_EXIST** Update an existing element. **BPF_F_LOCK** Update a spin_lock-ed map element. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. May set *errno* to **EINVAL**, **EPERM**, **ENOMEM**, **E2BIG**, **EEXIST**, or **ENOENT**. **E2BIG** The number of elements in the map reached the *max_entries* limit specified at map creation time. **EEXIST** If *flags* specifies **BPF_NOEXIST** and the element with *key* already exists in the map. **ENOENT** If *flags* specifies **BPF_EXIST** and the element with *key* does not exist in the map. ”h]”(jh)�”}”(hŒBPF_MAP_UPDATE_ELEM”h]”hŒBPF_MAP_UPDATE_ELEM”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Kâhjoubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXŒDescription Create or update an element (key/value pair) in a specified map. The *flags* argument should be specified as one of the following: **BPF_ANY** Create a new element or update an existing element. **BPF_NOEXIST** Create a new element only if it did not exist. **BPF_EXIST** Update an existing element. **BPF_F_LOCK** Update a spin_lock-ed map element. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KÑhjˆubjy)�”}”(hhh]”(j )�”}”(hŒ@Create or update an element (key/value pair) in a specified map.”h]”hŒ@Create or update an element (key/value pair) in a specified map.”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KÅhj›ubj )�”}”(hŒAThe *flags* argument should be specified as one of the following:”h]”(hŒThe ”…”�”}”(hj­h²hh³Nh´Nubj )�”}”(hŒ*flags*”h]”hŒflags”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj­ubhŒ6 argument should be specified as one of the following:”…”�”}”(hj­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KÇhj›ubj])�”}”(hhh]”(jb)�”}”(hŒ?**BPF_ANY** Create a new element or update an existing element.”h]”(jh)�”}”(hŒ **BPF_ANY**”h]”jø)�”}”(hj×h]”hŒBPF_ANY”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KÊhjÑubjy)�”}”(hhh]”j )�”}”(hŒ3Create a new element or update an existing element.”h]”hŒ3Create a new element or update an existing element.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KËhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jìh´KÊhjÎubjb)�”}”(hŒ>**BPF_NOEXIST** Create a new element only if it did not exist.”h]”(jh)�”}”(hŒ**BPF_NOEXIST**”h]”jø)�”}”(hjh]”hŒ BPF_NOEXIST”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KÌhj ubjy)�”}”(hhh]”j )�”}”(hŒ.Create a new element only if it did not exist.”h]”hŒ.Create a new element only if it did not exist.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KÍhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j&h´KÌhjÎubjb)�”}”(hŒ)**BPF_EXIST** Update an existing element.”h]”(jh)�”}”(hŒ **BPF_EXIST**”h]”jø)�”}”(hjKh]”hŒ BPF_EXIST”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KÎhjEubjy)�”}”(hhh]”j )�”}”(hŒUpdate an existing element.”h]”hŒUpdate an existing element.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KÏhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j`h´KÎhjÎubjb)�”}”(hŒ2**BPF_F_LOCK** Update a spin_lock-ed map element. ”h]”(jh)�”}”(hŒ**BPF_F_LOCK**”h]”jø)�”}”(hj…h]”hŒ BPF_F_LOCK”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jšh´KÑhjubjy)�”}”(hhh]”j )�”}”(hŒ"Update a spin_lock-ed map element.”h]”hŒ"Update a spin_lock-ed map element.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jšh´KÑhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jšh´KÑhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jšh´KÑhj…ubjb)�”}”(hXReturn Returns zero on success. On error, -1 is returned and *errno* is set appropriately. May set *errno* to **EINVAL**, **EPERM**, **ENOMEM**, **E2BIG**, **EEXIST**, or **ENOENT**. **E2BIG** The number of elements in the map reached the *max_entries* limit specified at map creation time. **EEXIST** If *flags* specifies **BPF_NOEXIST** and the element with *key* already exists in the map. **ENOENT** If *flags* specifies **BPF_EXIST** and the element with *key* does not exist in the map. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j�h´KâhjÉubjy)�”}”(hhh]”(j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hjÞh²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÞubhŒ is set appropriately.”…”�”}”(hjÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KÔhjÛubj )�”}”(hŒ[May set *errno* to **EINVAL**, **EPERM**, **ENOMEM**, **E2BIG**, **EEXIST**, or **ENOENT**.”h]”(hŒMay set ”…”�”}”(hjÿh²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿubhŒ to ”…”�”}”(hjÿh²hh³Nh´Nubjø)�”}”(hŒ **EINVAL**”h]”hŒEINVAL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÿubhŒ, ”…”�”}”(hjÿh²hh³Nh´Nubjø)�”}”(hŒ **EPERM**”h]”hŒEPERM”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÿubhŒ, ”…”�”}”hjÿsbjø)�”}”(hŒ **ENOMEM**”h]”hŒENOMEM”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÿubhŒ, ”…”�”}”(hjÿh²hh³Nh´Nubjø)�”}”(hŒ **E2BIG**”h]”hŒE2BIG”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÿubhŒ, ”…”�”}”hjÿsbjø)�”}”(hŒ **EEXIST**”h]”hŒEEXIST”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÿubhŒ, or ”…”�”}”(hjÿh²hh³Nh´Nubjø)�”}”(hŒ **ENOENT**”h]”hŒENOENT”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÿubhŒ.”…”�”}”(hjÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´K×hjÛubj])�”}”(hhh]”(jb)�”}”(hŒk**E2BIG** The number of elements in the map reached the *max_entries* limit specified at map creation time.”h]”(jh)�”}”(hŒ **E2BIG**”h]”jø)�”}”(hj•h]”hŒE2BIG”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KÛhj�ubjy)�”}”(hhh]”j )�”}”(hŒaThe number of elements in the map reached the *max_entries* limit specified at map creation time.”h]”(hŒ.The number of elements in the map reached the ”…”�”}”(hj®h²hh³Nh´Nubj )�”}”(hŒ *max_entries*”h]”hŒ max_entries”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj®ubhŒ& limit specified at map creation time.”…”�”}”(hj®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jªh´KÛhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jªh´KÛhjŒubjb)�”}”(hŒe**EEXIST** If *flags* specifies **BPF_NOEXIST** and the element with *key* already exists in the map.”h]”(jh)�”}”(hŒ **EEXIST**”h]”jø)�”}”(hjàh]”hŒEEXIST”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KÞhjÚubjy)�”}”(hhh]”j )�”}”(hŒZIf *flags* specifies **BPF_NOEXIST** and the element with *key* already exists in the map.”h]”(hŒIf ”…”�”}”(hjùh²hh³Nh´Nubj )�”}”(hŒ*flags*”h]”hŒflags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjùubhŒ specifies ”…”�”}”(hjùh²hh³Nh´Nubjø)�”}”(hŒ**BPF_NOEXIST**”h]”hŒ BPF_NOEXIST”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjùubhŒ and the element with ”…”�”}”(hjùh²hh³Nh´Nubj )�”}”(hŒ*key*”h]”hŒkey”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjùubhŒ already exists in the map.”…”�”}”(hjùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jõh´KÞhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jõh´KÞhjŒubjb)�”}”(hŒd**ENOENT** If *flags* specifies **BPF_EXIST** and the element with *key* does not exist in the map. ”h]”(jh)�”}”(hŒ **ENOENT**”h]”jø)�”}”(hjOh]”hŒENOENT”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j�h´KâhjIubjy)�”}”(hhh]”j )�”}”(hŒXIf *flags* specifies **BPF_EXIST** and the element with *key* does not exist in the map.”h]”(hŒIf ”…”�”}”(hjgh²hh³Nh´Nubj )�”}”(hŒ*flags*”h]”hŒflags”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjgubhŒ specifies ”…”�”}”(hjgh²hh³Nh´Nubjø)�”}”(hŒ **BPF_EXIST**”h]”hŒ BPF_EXIST”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjgubhŒ and the element with ”…”�”}”(hjgh²hh³Nh´Nubj )�”}”(hŒ*key*”h]”hŒkey”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjgubhŒ does not exist in the map.”…”�”}”(hjgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Káhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j�h´KâhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j�h´Kâhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j�h´Kâhj^ubjb)�”}”(hŒÍBPF_MAP_DELETE_ELEM Description Look up and delete an element by key in a specified map. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_MAP_DELETE_ELEM”h]”hŒBPF_MAP_DELETE_ELEM”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KêhjÜubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hŒEDescription Look up and delete an element by key in a specified map. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Kæhjõubjy)�”}”(hhh]”j )�”}”(hŒ8Look up and delete an element by key in a specified map.”h]”hŒ8Look up and delete an element by key in a specified map.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´Kæhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jh´Kæhjòubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jîh´Kêhj%ubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hj:h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj:ubhŒ is set appropriately.”…”�”}”(hj:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Kéhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jîh´Kêhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jîh´Kêhj^ubjb)�”}”(hXQBPF_MAP_GET_NEXT_KEY Description Look up an element by key in a specified map and return the key of the next element. Can be used to iterate over all elements in the map. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. The following cases can be used to iterate over all elements of the map: * If *key* is not found, the operation returns zero and sets the *next_key* pointer to the key of the first element. * If *key* is found, the operation returns zero and sets the *next_key* pointer to the key of the next element. * If *key* is the last element, returns -1 and *errno* is set to **ENOENT**. May set *errno* to **ENOMEM**, **EFAULT**, **EPERM**, or **EINVAL** on error. ”h]”(jh)�”}”(hŒBPF_MAP_GET_NEXT_KEY”h]”hŒBPF_MAP_GET_NEXT_KEY”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhjyubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hŒ–Description Look up an element by key in a specified map and return the key of the next element. Can be used to iterate over all elements in the map. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Kðhj’ubjy)�”}”(hhh]”j )�”}”(hŒ‰Look up an element by key in a specified map and return the key of the next element. Can be used to iterate over all elements in the map.”h]”hŒ‰Look up an element by key in a specified map and return the key of the next element. Can be used to iterate over all elements in the map.”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Kîhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j¤h´Kðhj�ubjb)�”}”(hX-Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. The following cases can be used to iterate over all elements of the map: * If *key* is not found, the operation returns zero and sets the *next_key* pointer to the key of the first element. * If *key* is found, the operation returns zero and sets the *next_key* pointer to the key of the next element. * If *key* is the last element, returns -1 and *errno* is set to **ENOENT**. May set *errno* to **ENOMEM**, **EFAULT**, **EPERM**, or **EINVAL** on error. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j‹h´MhjÃubjy)�”}”(hhh]”(j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hjØh²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjØubhŒ is set appropriately.”…”�”}”(hjØh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KóhjÕubj )�”}”(hŒHThe following cases can be used to iterate over all elements of the map:”h]”hŒHThe following cases can be used to iterate over all elements of the map:”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KöhjÕubhþ)�”}”(hhh]”(j)�”}”(hŒrIf *key* is not found, the operation returns zero and sets the *next_key* pointer to the key of the first element.”h]”j )�”}”(hŒrIf *key* is not found, the operation returns zero and sets the *next_key* pointer to the key of the first element.”h]”(hŒIf ”…”�”}”(hj h²hh³Nh´Nubj )�”}”(hŒ*key*”h]”hŒkey”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ7 is not found, the operation returns zero and sets the ”…”�”}”(hj h²hh³Nh´Nubj )�”}”(hŒ *next_key*”h]”hŒnext_key”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ) pointer to the key of the first element.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Kùhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubj)�”}”(hŒmIf *key* is found, the operation returns zero and sets the *next_key* pointer to the key of the next element.”h]”j )�”}”(hŒmIf *key* is found, the operation returns zero and sets the *next_key* pointer to the key of the next element.”h]”(hŒIf ”…”�”}”(hjL h²hh³Nh´Nubj )�”}”(hŒ*key*”h]”hŒkey”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjL ubhŒ3 is found, the operation returns zero and sets the ”…”�”}”(hjL h²hh³Nh´Nubj )�”}”(hŒ *next_key*”h]”hŒnext_key”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjL ubhŒ( pointer to the key of the next element.”…”�”}”(hjL h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´KûhjH ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubj)�”}”(hŒKIf *key* is the last element, returns -1 and *errno* is set to **ENOENT**. ”h]”j )�”}”(hŒJIf *key* is the last element, returns -1 and *errno* is set to **ENOENT**.”h]”(hŒIf ”…”�”}”(hj‰ h²hh³Nh´Nubj )�”}”(hŒ*key*”h]”hŒkey”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‰ ubhŒ% is the last element, returns -1 and ”…”�”}”(hj‰ h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‰ ubhŒ is set to ”…”�”}”(hj‰ h²hh³Nh´Nubjø)�”}”(hŒ **ENOENT**”h]”hŒENOENT”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj‰ ubhŒ.”…”�”}”(hj‰ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Kýhj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”j�Œ*”uh1hýh³jA h´KùhjÕubj )�”}”(hŒMMay set *errno* to **ENOMEM**, **EFAULT**, **EPERM**, or **EINVAL** on error.”h]”(hŒMay set ”…”�”}”(hjÛ h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÛ ubhŒ to ”…”�”}”(hjÛ h²hh³Nh´Nubjø)�”}”(hŒ **ENOMEM**”h]”hŒENOMEM”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÛ ubhŒ, ”…”�”}”(hjÛ h²hh³Nh´Nubjø)�”}”(hŒ **EFAULT**”h]”hŒEFAULT”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÛ ubhŒ, ”…”�”}”hjÛ sbjø)�”}”(hŒ **EPERM**”h]”hŒEPERM”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÛ ubhŒ, or ”…”�”}”(hjÛ h²hh³Nh´Nubjø)�”}”(hŒ **EINVAL**”h]”hŒEINVAL”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÛ ubhŒ on error.”…”�”}”(hjÛ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MhjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j‹h´Mhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j‹h´Mhj^ubjb)�”}”(hX(BPF_PROG_LOAD Description Verify and load an eBPF program, returning a new file descriptor associated with the program. Applying **close**\ (2) to the file descriptor returned by **BPF_PROG_LOAD** will unload the eBPF program (but see NOTES). The close-on-exec file descriptor flag (see **fcntl**\ (2)) is automatically enabled for the new file descriptor. Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒ BPF_PROG_LOAD”h]”hŒ BPF_PROG_LOAD”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhjb ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXYDescription Verify and load an eBPF program, returning a new file descriptor associated with the program. Applying **close**\ (2) to the file descriptor returned by **BPF_PROG_LOAD** will unload the eBPF program (but see NOTES). The close-on-exec file descriptor flag (see **fcntl**\ (2)) is automatically enabled for the new file descriptor. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M hj{ ubjy)�”}”(hhh]”(j )�”}”(hŒ]Verify and load an eBPF program, returning a new file descriptor associated with the program.”h]”hŒ]Verify and load an eBPF program, returning a new file descriptor associated with the program.”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MhjŽ ubj )�”}”(hŒzApplying **close**\ (2) to the file descriptor returned by **BPF_PROG_LOAD** will unload the eBPF program (but see NOTES).”h]”(hŒ Applying ”…”�”}”(hj  h²hh³Nh´Nubjø)�”}”(hŒ **close**”h]”hŒclose”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj  ubhŒ) (2) to the file descriptor returned by ”…”�”}”(hj  h²hh³Nh´Nubjø)�”}”(hŒ**BPF_PROG_LOAD**”h]”hŒ BPF_PROG_LOAD”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj  ubhŒ. will unload the eBPF program (but see NOTES).”…”�”}”(hj  h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MhjŽ ubj )�”}”(hŒqThe close-on-exec file descriptor flag (see **fcntl**\ (2)) is automatically enabled for the new file descriptor.”h]”(hŒ,The close-on-exec file descriptor flag (see ”…”�”}”(hjÓ h²hh³Nh´Nubjø)�”}”(hŒ **fcntl**”h]”hŒfcntl”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÓ ubhŒ< (2)) is automatically enabled for the new file descriptor.”…”�”}”(hjÓ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M hjŽ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj{ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j� h´M hjx ubjb)�”}”(hŒ€Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jt h´Mhj ubjy)�”}”(hhh]”j )�”}”(hŒxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, ”…”�”}”(hj h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ is set appropriately).”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jt h´Mhjx ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hju ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjb ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jt h´Mhj^ubjb)�”}”(hX×BPF_OBJ_PIN Description Pin an eBPF program or map referred by the specified *bpf_fd* to the provided *pathname* on the filesystem. The *pathname* argument must not contain a dot ("."). On success, *pathname* retains a reference to the eBPF object, preventing deallocation of the object when the original *bpf_fd* is closed. This allow the eBPF object to live beyond **close**\ (\ *bpf_fd*\ ), and hence the lifetime of the parent process. Applying **unlink**\ (2) or similar calls to the *pathname* unpins the object from the filesystem, removing the reference. If no other file descriptors or filesystem nodes refer to the same object, it will be deallocated (see NOTES). The filesystem type for the parent directory of *pathname* must be **BPF_FS_MAGIC**. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒ BPF_OBJ_PIN”h]”hŒ BPF_OBJ_PIN”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M)hjT ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXïDescription Pin an eBPF program or map referred by the specified *bpf_fd* to the provided *pathname* on the filesystem. The *pathname* argument must not contain a dot ("."). On success, *pathname* retains a reference to the eBPF object, preventing deallocation of the object when the original *bpf_fd* is closed. This allow the eBPF object to live beyond **close**\ (\ *bpf_fd*\ ), and hence the lifetime of the parent process. Applying **unlink**\ (2) or similar calls to the *pathname* unpins the object from the filesystem, removing the reference. If no other file descriptors or filesystem nodes refer to the same object, it will be deallocated (see NOTES). The filesystem type for the parent directory of *pathname* must be **BPF_FS_MAGIC**. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M%hjm ubjy)�”}”(hhh]”(j )�”}”(hŒkPin an eBPF program or map referred by the specified *bpf_fd* to the provided *pathname* on the filesystem.”h]”(hŒ5Pin an eBPF program or map referred by the specified ”…”�”}”(hjƒ h²hh³Nh´Nubj )�”}”(hŒ*bpf_fd*”h]”hŒbpf_fd”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ ubhŒ to the provided ”…”�”}”(hjƒ h²hh³Nh´Nubj )�”}”(hŒ *pathname*”h]”hŒpathname”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ ubhŒ on the filesystem.”…”�”}”(hjƒ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhj€ ubj )�”}”(hŒ5The *pathname* argument must not contain a dot (".").”h]”(hŒThe ”…”�”}”(hj¶ h²hh³Nh´Nubj )�”}”(hŒ *pathname*”h]”hŒpathname”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¶ ubhŒ+ argument must not contain a dot (“.â€�).”…”�”}”(hj¶ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhj€ ubj )�”}”(hŒýOn success, *pathname* retains a reference to the eBPF object, preventing deallocation of the object when the original *bpf_fd* is closed. This allow the eBPF object to live beyond **close**\ (\ *bpf_fd*\ ), and hence the lifetime of the parent process.”h]”(hŒ On success, ”…”�”}”(hj× h²hh³Nh´Nubj )�”}”(hŒ *pathname*”h]”hŒpathname”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj× ubhŒa retains a reference to the eBPF object, preventing deallocation of the object when the original ”…”�”}”(hj× h²hh³Nh´Nubj )�”}”(hŒ*bpf_fd*”h]”hŒbpf_fd”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj× ubhŒ6 is closed. This allow the eBPF object to live beyond ”…”�”}”(hj× h²hh³Nh´Nubjø)�”}”(hŒ **close**”h]”hŒclose”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj× ubhŒ ( ”…”�”}”(hj× h²hh³Nh´Nubj )�”}”(hŒ*bpf_fd*”h]”hŒbpf_fd”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj× ubhŒ2 ), and hence the lifetime of the parent process.”…”�”}”(hj× h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhj€ ubj )�”}”(hŒéApplying **unlink**\ (2) or similar calls to the *pathname* unpins the object from the filesystem, removing the reference. If no other file descriptors or filesystem nodes refer to the same object, it will be deallocated (see NOTES).”h]”(hŒ Applying ”…”�”}”(hj. h²hh³Nh´Nubjø)�”}”(hŒ **unlink**”h]”hŒunlink”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj. ubhŒ (2) or similar calls to the ”…”�”}”(hj. h²hh³Nh´Nubj )�”}”(hŒ *pathname*”h]”hŒpathname”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj. ubhŒ® unpins the object from the filesystem, removing the reference. If no other file descriptors or filesystem nodes refer to the same object, it will be deallocated (see NOTES).”…”�”}”(hj. h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhj€ ubj )�”}”(hŒTThe filesystem type for the parent directory of *pathname* must be **BPF_FS_MAGIC**.”h]”(hŒ0The filesystem type for the parent directory of ”…”�”}”(hja h²hh³Nh´Nubj )�”}”(hŒ *pathname*”h]”hŒpathname”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hja ubhŒ must be ”…”�”}”(hja h²hh³Nh´Nubjø)�”}”(hŒ**BPF_FS_MAGIC**”h]”hŒ BPF_FS_MAGIC”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hja ubhŒ.”…”�”}”(hja h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M$hj€ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjm ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j h´M%hjj ubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jf h´M)hj  ubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hjµ h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµ ubhŒ is set appropriately.”…”�”}”(hjµ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M(hj² ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj  ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jf h´M)hjj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjg ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjT ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jf h´M)hj^ubjb)�”}”(hXBPF_OBJ_GET Description Open a file descriptor for the eBPF object pinned to the specified *pathname*. Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒ BPF_OBJ_GET”h]”hŒ BPF_OBJ_GET”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M2hjô ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hŒ[Description Open a file descriptor for the eBPF object pinned to the specified *pathname*. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M.hj ubjy)�”}”(hhh]”j )�”}”(hŒNOpen a file descriptor for the eBPF object pinned to the specified *pathname*.”h]”(hŒCOpen a file descriptor for the eBPF object pinned to the specified ”…”�”}”(hj# h²hh³Nh´Nubj )�”}”(hŒ *pathname*”h]”hŒpathname”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj# ubhŒ.”…”�”}”(hj# h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M-hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j h´M.hj ubjb)�”}”(hŒ€Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j h´M2hjP ubjy)�”}”(hhh]”j )�”}”(hŒxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, ”…”�”}”(hje h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hje ubhŒ is set appropriately).”…”�”}”(hje h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M1hjb ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjP ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j h´M2hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjô ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j h´M2hj^ubjb)�”}”(hX?BPF_PROG_ATTACH Description Attach an eBPF program to a *target_fd* at the specified *attach_type* hook. The *attach_type* specifies the eBPF attachment point to attach the program to, and must be one of *bpf_attach_type* (see below). The *attach_bpf_fd* must be a valid file descriptor for a loaded eBPF program of a cgroup, flow dissector, LIRC, sockmap or sock_ops type corresponding to the specified *attach_type*. The *target_fd* must be a valid file descriptor for a kernel object which depends on the attach type of *attach_bpf_fd*: **BPF_PROG_TYPE_CGROUP_DEVICE**, **BPF_PROG_TYPE_CGROUP_SKB**, **BPF_PROG_TYPE_CGROUP_SOCK**, **BPF_PROG_TYPE_CGROUP_SOCK_ADDR**, **BPF_PROG_TYPE_CGROUP_SOCKOPT**, **BPF_PROG_TYPE_CGROUP_SYSCTL**, **BPF_PROG_TYPE_SOCK_OPS** Control Group v2 hierarchy with the eBPF controller enabled. Requires the kernel to be compiled with **CONFIG_CGROUP_BPF**. **BPF_PROG_TYPE_FLOW_DISSECTOR** Network namespace (eg /proc/self/ns/net). **BPF_PROG_TYPE_LIRC_MODE2** LIRC device path (eg /dev/lircN). Requires the kernel to be compiled with **CONFIG_BPF_LIRC_MODE2**. **BPF_PROG_TYPE_SK_SKB**, **BPF_PROG_TYPE_SK_MSG** eBPF map of socket type (eg **BPF_MAP_TYPE_SOCKHASH**). Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_PROG_ATTACH”h]”hŒBPF_PROG_ATTACH”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M`hj¤ ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXãDescription Attach an eBPF program to a *target_fd* at the specified *attach_type* hook. The *attach_type* specifies the eBPF attachment point to attach the program to, and must be one of *bpf_attach_type* (see below). The *attach_bpf_fd* must be a valid file descriptor for a loaded eBPF program of a cgroup, flow dissector, LIRC, sockmap or sock_ops type corresponding to the specified *attach_type*. The *target_fd* must be a valid file descriptor for a kernel object which depends on the attach type of *attach_bpf_fd*: **BPF_PROG_TYPE_CGROUP_DEVICE**, **BPF_PROG_TYPE_CGROUP_SKB**, **BPF_PROG_TYPE_CGROUP_SOCK**, **BPF_PROG_TYPE_CGROUP_SOCK_ADDR**, **BPF_PROG_TYPE_CGROUP_SOCKOPT**, **BPF_PROG_TYPE_CGROUP_SYSCTL**, **BPF_PROG_TYPE_SOCK_OPS** Control Group v2 hierarchy with the eBPF controller enabled. Requires the kernel to be compiled with **CONFIG_CGROUP_BPF**. **BPF_PROG_TYPE_FLOW_DISSECTOR** Network namespace (eg /proc/self/ns/net). **BPF_PROG_TYPE_LIRC_MODE2** LIRC device path (eg /dev/lircN). Requires the kernel to be compiled with **CONFIG_BPF_LIRC_MODE2**. **BPF_PROG_TYPE_SK_SKB**, **BPF_PROG_TYPE_SK_MSG** eBPF map of socket type (eg **BPF_MAP_TYPE_SOCKHASH**). ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M\hj½ ubjy)�”}”(hhh]”(j )�”}”(hŒLAttach an eBPF program to a *target_fd* at the specified *attach_type* hook.”h]”(hŒAttach an eBPF program to a ”…”�”}”(hjÓ h²hh³Nh´Nubj )�”}”(hŒ *target_fd*”h]”hŒ target_fd”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓ ubhŒ at the specified ”…”�”}”(hjÓ h²hh³Nh´Nubj )�”}”(hŒ *attach_type*”h]”hŒ attach_type”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓ ubhŒ hook.”…”�”}”(hjÓ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M6hjÐ ubj )�”}”(hŒ�The *attach_type* specifies the eBPF attachment point to attach the program to, and must be one of *bpf_attach_type* (see below).”h]”(hŒThe ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ *attach_type*”h]”hŒ attach_type”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒR specifies the eBPF attachment point to attach the program to, and must be one of ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ*bpf_attach_type*”h]”hŒbpf_attach_type”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ (see below).”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M9hjÐ ubj )�”}”(hŒ·The *attach_bpf_fd* must be a valid file descriptor for a loaded eBPF program of a cgroup, flow dissector, LIRC, sockmap or sock_ops type corresponding to the specified *attach_type*.”h]”(hŒThe ”…”�”}”(hj9h²hh³Nh´Nubj )�”}”(hŒ*attach_bpf_fd*”h]”hŒ attach_bpf_fd”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubhŒ– must be a valid file descriptor for a loaded eBPF program of a cgroup, flow dissector, LIRC, sockmap or sock_ops type corresponding to the specified ”…”�”}”(hj9h²hh³Nh´Nubj )�”}”(hŒ *attach_type*”h]”hŒ attach_type”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubhŒ.”…”�”}”(hj9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M=hjÐ ubj )�”}”(hŒxThe *target_fd* must be a valid file descriptor for a kernel object which depends on the attach type of *attach_bpf_fd*:”h]”(hŒThe ”…”�”}”(hjlh²hh³Nh´Nubj )�”}”(hŒ *target_fd*”h]”hŒ target_fd”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjlubhŒY must be a valid file descriptor for a kernel object which depends on the attach type of ”…”�”}”(hjlh²hh³Nh´Nubj )�”}”(hŒ*attach_bpf_fd*”h]”hŒ attach_bpf_fd”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjlubhŒ:”…”�”}”(hjlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MAhjÐ ubj )�”}”(hŒß**BPF_PROG_TYPE_CGROUP_DEVICE**, **BPF_PROG_TYPE_CGROUP_SKB**, **BPF_PROG_TYPE_CGROUP_SOCK**, **BPF_PROG_TYPE_CGROUP_SOCK_ADDR**, **BPF_PROG_TYPE_CGROUP_SOCKOPT**, **BPF_PROG_TYPE_CGROUP_SYSCTL**, **BPF_PROG_TYPE_SOCK_OPS**”h]”(jø)�”}”(hŒ**BPF_PROG_TYPE_CGROUP_DEVICE**”h]”hŒBPF_PROG_TYPE_CGROUP_DEVICE”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŸubhŒ, ”…”�”}”(hjŸh²hh³Nh´Nubjø)�”}”(hŒ**BPF_PROG_TYPE_CGROUP_SKB**”h]”hŒBPF_PROG_TYPE_CGROUP_SKB”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŸubhŒ, ”…”�”}”hjŸsbjø)�”}”(hŒ**BPF_PROG_TYPE_CGROUP_SOCK**”h]”hŒBPF_PROG_TYPE_CGROUP_SOCK”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŸubhŒ, ”…”�”}”hjŸsbjø)�”}”(hŒ"**BPF_PROG_TYPE_CGROUP_SOCK_ADDR**”h]”hŒBPF_PROG_TYPE_CGROUP_SOCK_ADDR”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŸubhŒ, ”…”�”}”hjŸsbjø)�”}”(hŒ **BPF_PROG_TYPE_CGROUP_SOCKOPT**”h]”hŒBPF_PROG_TYPE_CGROUP_SOCKOPT”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŸubhŒ, ”…”�”}”hjŸsbjø)�”}”(hŒ**BPF_PROG_TYPE_CGROUP_SYSCTL**”h]”hŒBPF_PROG_TYPE_CGROUP_SYSCTL”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŸubhŒ, ”…”�”}”hjŸsbjø)�”}”(hŒ**BPF_PROG_TYPE_SOCK_OPS**”h]”hŒBPF_PROG_TYPE_SOCK_OPS”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MDhjÐ ubhŒ block_quote”“”)�”}”(hŒ|Control Group v2 hierarchy with the eBPF controller enabled. Requires the kernel to be compiled with **CONFIG_CGROUP_BPF**. ”h]”j )�”}”(hŒ{Control Group v2 hierarchy with the eBPF controller enabled. Requires the kernel to be compiled with **CONFIG_CGROUP_BPF**.”h]”(hŒeControl Group v2 hierarchy with the eBPF controller enabled. Requires the kernel to be compiled with ”…”�”}”(hj*h²hh³Nh´Nubjø)�”}”(hŒ**CONFIG_CGROUP_BPF**”h]”hŒCONFIG_CGROUP_BPF”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj*ubhŒ.”…”�”}”(hj*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MLhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j$h³jJh´MLhjÐ ubj )�”}”(hŒ **BPF_PROG_TYPE_FLOW_DISSECTOR**”h]”jø)�”}”(hjSh]”hŒBPF_PROG_TYPE_FLOW_DISSECTOR”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MPhjÐ ubj%)�”}”(hŒ*Network namespace (eg /proc/self/ns/net). ”h]”j )�”}”(hŒ)Network namespace (eg /proc/self/ns/net).”h]”hŒ)Network namespace (eg /proc/self/ns/net).”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MRhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j$h³j{h´MRhjÐ ubj )�”}”(hŒ**BPF_PROG_TYPE_LIRC_MODE2**”h]”jø)�”}”(hj„h]”hŒBPF_PROG_TYPE_LIRC_MODE2”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MThjÐ ubj%)�”}”(hŒeLIRC device path (eg /dev/lircN). Requires the kernel to be compiled with **CONFIG_BPF_LIRC_MODE2**. ”h]”j )�”}”(hŒdLIRC device path (eg /dev/lircN). Requires the kernel to be compiled with **CONFIG_BPF_LIRC_MODE2**.”h]”(hŒJLIRC device path (eg /dev/lircN). Requires the kernel to be compiled with ”…”�”}”(hjžh²hh³Nh´Nubjø)�”}”(hŒ**CONFIG_BPF_LIRC_MODE2**”h]”hŒCONFIG_BPF_LIRC_MODE2”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjžubhŒ.”…”�”}”(hjžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MVhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j$h³j¾h´MVhjÐ ubj )�”}”(hŒ2**BPF_PROG_TYPE_SK_SKB**, **BPF_PROG_TYPE_SK_MSG**”h]”(jø)�”}”(hŒ**BPF_PROG_TYPE_SK_SKB**”h]”hŒBPF_PROG_TYPE_SK_SKB”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÅubhŒ, ”…”�”}”(hjÅh²hh³Nh´Nubjø)�”}”(hŒ**BPF_PROG_TYPE_SK_MSG**”h]”hŒBPF_PROG_TYPE_SK_MSG”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MYhjÐ ubj%)�”}”(hŒ8eBPF map of socket type (eg **BPF_MAP_TYPE_SOCKHASH**). ”h]”j )�”}”(hŒ7eBPF map of socket type (eg **BPF_MAP_TYPE_SOCKHASH**).”h]”(hŒeBPF map of socket type (eg ”…”�”}”(hjôh²hh³Nh´Nubjø)�”}”(hŒ**BPF_MAP_TYPE_SOCKHASH**”h]”hŒBPF_MAP_TYPE_SOCKHASH”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjôubhŒ).”…”�”}”(hjôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÏ h´M\hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1j$h³jÏ h´M\hjÐ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj½ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jÏ h´M\hjº ubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j¶ h´M`hj&ubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hj;h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;ubhŒ is set appropriately.”…”�”}”(hj;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M_hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j¶ h´M`hjº ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj· ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj¤ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j¶ h´M`hj^ubjb)�”}”(hXJBPF_PROG_DETACH Description Detach the eBPF program associated with the *target_fd* at the hook specified by *attach_type*. The program must have been previously attached using **BPF_PROG_ATTACH**. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_PROG_DETACH”h]”hŒBPF_PROG_DETACH”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mjhjzubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hŒ¶Description Detach the eBPF program associated with the *target_fd* at the hook specified by *attach_type*. The program must have been previously attached using **BPF_PROG_ATTACH**. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mfhj“ubjy)�”}”(hhh]”j )�”}”(hŒ©Detach the eBPF program associated with the *target_fd* at the hook specified by *attach_type*. The program must have been previously attached using **BPF_PROG_ATTACH**.”h]”(hŒ,Detach the eBPF program associated with the ”…”�”}”(hj©h²hh³Nh´Nubj )�”}”(hŒ *target_fd*”h]”hŒ target_fd”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj©ubhŒ at the hook specified by ”…”�”}”(hj©h²hh³Nh´Nubj )�”}”(hŒ *attach_type*”h]”hŒ attach_type”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj©ubhŒ7. The program must have been previously attached using ”…”�”}”(hj©h²hh³Nh´Nubjø)�”}”(hŒ**BPF_PROG_ATTACH**”h]”hŒBPF_PROG_ATTACH”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷h•j©ubhŒ.”…”�”}”(hj©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mdhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j¥h´Mfhj�ubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jŒh´Mjhjúubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ is set appropriately.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mihj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jŒh´Mjhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jŒh´Mjhj^ubjb)�”}”(hXÞBPF_PROG_TEST_RUN Description Run the eBPF program associated with the *prog_fd* a *repeat* number of times against a provided program context *ctx_in* and data *data_in*, and return the modified program context *ctx_out*, *data_out* (for example, packet data), result of the execution *retval*, and *duration* of the test run. The sizes of the buffers provided as input and output parameters *ctx_in*, *ctx_out*, *data_in*, and *data_out* must be provided in the corresponding variables *ctx_size_in*, *ctx_size_out*, *data_size_in*, and/or *data_size_out*. If any of these parameters are not provided (ie set to NULL), the corresponding size field must be zero. Some program types have particular requirements: **BPF_PROG_TYPE_SK_LOOKUP** *data_in* and *data_out* must be NULL. **BPF_PROG_TYPE_RAW_TRACEPOINT**, **BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE** *ctx_out*, *data_in* and *data_out* must be NULL. *repeat* must be zero. BPF_PROG_RUN is an alias for BPF_PROG_TEST_RUN. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. **ENOSPC** Either *data_size_out* or *ctx_size_out* is too small. **ENOTSUPP** This command is not supported by the program type of the program referred to by *prog_fd*. ”h]”(jh)�”}”(hŒBPF_PROG_TEST_RUN”h]”hŒBPF_PROG_TEST_RUN”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M�hjNubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXÝDescription Run the eBPF program associated with the *prog_fd* a *repeat* number of times against a provided program context *ctx_in* and data *data_in*, and return the modified program context *ctx_out*, *data_out* (for example, packet data), result of the execution *retval*, and *duration* of the test run. The sizes of the buffers provided as input and output parameters *ctx_in*, *ctx_out*, *data_in*, and *data_out* must be provided in the corresponding variables *ctx_size_in*, *ctx_size_out*, *data_size_in*, and/or *data_size_out*. If any of these parameters are not provided (ie set to NULL), the corresponding size field must be zero. Some program types have particular requirements: **BPF_PROG_TYPE_SK_LOOKUP** *data_in* and *data_out* must be NULL. **BPF_PROG_TYPE_RAW_TRACEPOINT**, **BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE** *ctx_out*, *data_in* and *data_out* must be NULL. *repeat* must be zero. BPF_PROG_RUN is an alias for BPF_PROG_TEST_RUN. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M†hjgubjy)�”}”(hhh]”(j )�”}”(hX)Run the eBPF program associated with the *prog_fd* a *repeat* number of times against a provided program context *ctx_in* and data *data_in*, and return the modified program context *ctx_out*, *data_out* (for example, packet data), result of the execution *retval*, and *duration* of the test run.”h]”(hŒ)Run the eBPF program associated with the ”…”�”}”(hj}h²hh³Nh´Nubj )�”}”(hŒ *prog_fd*”h]”hŒprog_fd”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}ubhŒ a ”…”�”}”(hj}h²hh³Nh´Nubj )�”}”(hŒ*repeat*”h]”hŒrepeat”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}ubhŒ4 number of times against a provided program context ”…”�”}”(hj}h²hh³Nh´Nubj )�”}”(hŒ*ctx_in*”h]”hŒctx_in”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}ubhŒ and data ”…”�”}”(hj}h²hh³Nh´Nubj )�”}”(hŒ *data_in*”h]”hŒdata_in”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}ubhŒ*, and return the modified program context ”…”�”}”(hj}h²hh³Nh´Nubj )�”}”(hŒ *ctx_out*”h]”hŒctx_out”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}ubhŒ, ”…”�”}”(hj}h²hh³Nh´Nubj )�”}”(hŒ *data_out*”h]”hŒdata_out”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}ubhŒ5 (for example, packet data), result of the execution ”…”�”}”(hj}h²hh³Nh´Nubj )�”}”(hŒ*retval*”h]”hŒretval”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}ubhŒ, and ”…”�”}”(hj}h²hh³Nh´Nubj )�”}”(hŒ *duration*”h]”hŒduration”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}ubhŒ of the test run.”…”�”}”(hj}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mnhjzubj )�”}”(hXOThe sizes of the buffers provided as input and output parameters *ctx_in*, *ctx_out*, *data_in*, and *data_out* must be provided in the corresponding variables *ctx_size_in*, *ctx_size_out*, *data_size_in*, and/or *data_size_out*. If any of these parameters are not provided (ie set to NULL), the corresponding size field must be zero.”h]”(hŒAThe sizes of the buffers provided as input and output parameters ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ*ctx_in*”h]”hŒctx_in”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ, ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ *ctx_out*”h]”hŒctx_out”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ, ”…”�”}”hjsbj )�”}”(hŒ *data_in*”h]”hŒdata_in”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ, and ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ *data_out*”h]”hŒdata_out”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ1 must be provided in the corresponding variables ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ *ctx_size_in*”h]”hŒ ctx_size_in”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ, ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ*ctx_size_out*”h]”hŒ ctx_size_out”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ, ”…”�”}”hjsbj )�”}”(hŒ*data_size_in*”h]”hŒ data_size_in”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ , and/or ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ*data_size_out*”h]”hŒ data_size_out”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒj. If any of these parameters are not provided (ie set to NULL), the corresponding size field must be zero.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mthjzubj )�”}”(hŒ0Some program types have particular requirements:”h]”hŒ0Some program types have particular requirements:”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M{hjzubj])�”}”(hhh]”jb)�”}”(hŒC**BPF_PROG_TYPE_SK_LOOKUP** *data_in* and *data_out* must be NULL. ”h]”(jh)�”}”(hŒ**BPF_PROG_TYPE_SK_LOOKUP**”h]”jø)�”}”(hjÓh]”hŒBPF_PROG_TYPE_SK_LOOKUP”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M~hjÍubjy)�”}”(hhh]”j )�”}”(hŒ&*data_in* and *data_out* must be NULL.”h]”(j )�”}”(hŒ *data_in*”h]”hŒdata_in”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjìubhŒ and ”…”�”}”(hjìh²hh³Nh´Nubj )�”}”(hŒ *data_out*”h]”hŒdata_out”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjìubhŒ must be NULL.”…”�”}”(hjìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jèh´M~hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jèh´M~hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjzubj )�”}”(hŒK**BPF_PROG_TYPE_RAW_TRACEPOINT**, **BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE**”h]”(jø)�”}”(hŒ **BPF_PROG_TYPE_RAW_TRACEPOINT**”h]”hŒBPF_PROG_TYPE_RAW_TRACEPOINT”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj,ubhŒ, ”…”�”}”(hj,h²hh³Nh´Nubjø)�”}”(hŒ)**BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE**”h]”hŒ%BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M€hjzubj%)�”}”(hŒI*ctx_out*, *data_in* and *data_out* must be NULL. *repeat* must be zero. ”h]”j )�”}”(hŒH*ctx_out*, *data_in* and *data_out* must be NULL. *repeat* must be zero.”h]”(j )�”}”(hŒ *ctx_out*”h]”hŒctx_out”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj[ubhŒ, ”…”�”}”(hj[h²hh³Nh´Nubj )�”}”(hŒ *data_in*”h]”hŒdata_in”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj[ubhŒ and ”…”�”}”(hj[h²hh³Nh´Nubj )�”}”(hŒ *data_out*”h]”hŒdata_out”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj[ubhŒ must be NULL. ”…”�”}”(hj[h²hh³Nh´Nubj )�”}”(hŒ*repeat*”h]”hŒrepeat”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj[ubhŒ must be zero.”…”�”}”(hj[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MƒhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j$h³j­h´Mƒhjzubj )�”}”(hŒ/BPF_PROG_RUN is an alias for BPF_PROG_TEST_RUN.”h]”hŒ/BPF_PROG_RUN is an alias for BPF_PROG_TEST_RUN.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jyh´M†hjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jyh´M†hjdubjb)�”}”(hXReturn Returns zero on success. On error, -1 is returned and *errno* is set appropriately. **ENOSPC** Either *data_size_out* or *ctx_size_out* is too small. **ENOTSUPP** This command is not supported by the program type of the program referred to by *prog_fd*. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j`h´M�hjÎubjy)�”}”(hhh]”(j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hjãh²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjãubhŒ is set appropriately.”…”�”}”(hjãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M‰hjàubj])�”}”(hhh]”(jb)�”}”(hŒA**ENOSPC** Either *data_size_out* or *ctx_size_out* is too small.”h]”(jh)�”}”(hŒ **ENOSPC**”h]”jø)�”}”(hj h]”hŒENOSPC”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MŒhjubjy)�”}”(hhh]”j )�”}”(hŒ6Either *data_size_out* or *ctx_size_out* is too small.”h]”(hŒEither ”…”�”}”(hj&h²hh³Nh´Nubj )�”}”(hŒ*data_size_out*”h]”hŒ data_size_out”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&ubhŒ or ”…”�”}”(hj&h²hh³Nh´Nubj )�”}”(hŒ*ctx_size_out*”h]”hŒ ctx_size_out”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&ubhŒ is too small.”…”�”}”(hj&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M�hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j"h´MŒhjubjb)�”}”(hŒh**ENOTSUPP** This command is not supported by the program type of the program referred to by *prog_fd*. ”h]”(jh)�”}”(hŒ **ENOTSUPP**”h]”jø)�”}”(hjkh]”hŒENOTSUPP”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j`h´M�hjeubjy)�”}”(hhh]”j )�”}”(hŒZThis command is not supported by the program type of the program referred to by *prog_fd*.”h]”(hŒPThis command is not supported by the program type of the program referred to by ”…”�”}”(hjƒh²hh³Nh´Nubj )�”}”(hŒ *prog_fd*”h]”hŒprog_fd”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒubhŒ.”…”�”}”(hjƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M�hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j`h´M�hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j`h´M�hjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j`h´M�hj^ubjb)�”}”(hXØBPF_PROG_GET_NEXT_ID Description Fetch the next eBPF program currently loaded into the kernel. Looks for the eBPF program with an id greater than *start_id* and updates *next_id* on success. If no other eBPF programs remain with ids higher than *start_id*, returns -1 and sets *errno* to **ENOENT**. Return Returns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_PROG_GET_NEXT_ID”h]”hŒBPF_PROG_GET_NEXT_ID”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M�hjÔubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXDescription Fetch the next eBPF program currently loaded into the kernel. Looks for the eBPF program with an id greater than *start_id* and updates *next_id* on success. If no other eBPF programs remain with ids higher than *start_id*, returns -1 and sets *errno* to **ENOENT**. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M™hjíubjy)�”}”(hhh]”(j )�”}”(hŒ=Fetch the next eBPF program currently loaded into the kernel.”h]”hŒ=Fetch the next eBPF program currently loaded into the kernel.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M”hjubj )�”}”(hŒÌLooks for the eBPF program with an id greater than *start_id* and updates *next_id* on success. If no other eBPF programs remain with ids higher than *start_id*, returns -1 and sets *errno* to **ENOENT**.”h]”(hŒ3Looks for the eBPF program with an id greater than ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ *start_id*”h]”hŒstart_id”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ and updates ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ *next_id*”h]”hŒnext_id”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒC on success. If no other eBPF programs remain with ids higher than ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ *start_id*”h]”hŒstart_id”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ, returns -1 and sets ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ to ”…”�”}”(hjh²hh³Nh´Nubjø)�”}”(hŒ **ENOENT**”h]”hŒENOENT”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M–hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jÿh´M™hjêubjb)�”}”(hŒrReturn Returns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jæh´M�hj‡ubjy)�”}”(hhh]”j )�”}”(hŒjReturns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately.”h]”(hŒMReturns zero on success. On error, or when no id remains, -1 is returned and ”…”�”}”(hjœh²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœubhŒ is set appropriately.”…”�”}”(hjœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mœhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jæh´M�hjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jæh´M�hj^ubjb)�”}”(hXËBPF_MAP_GET_NEXT_ID Description Fetch the next eBPF map currently loaded into the kernel. Looks for the eBPF map with an id greater than *start_id* and updates *next_id* on success. If no other eBPF maps remain with ids higher than *start_id*, returns -1 and sets *errno* to **ENOENT**. Return Returns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_MAP_GET_NEXT_ID”h]”hŒBPF_MAP_GET_NEXT_ID”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MªhjÛubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hX Description Fetch the next eBPF map currently loaded into the kernel. Looks for the eBPF map with an id greater than *start_id* and updates *next_id* on success. If no other eBPF maps remain with ids higher than *start_id*, returns -1 and sets *errno* to **ENOENT**. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¦hjôubjy)�”}”(hhh]”(j )�”}”(hŒ9Fetch the next eBPF map currently loaded into the kernel.”h]”hŒ9Fetch the next eBPF map currently loaded into the kernel.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¡hjubj )�”}”(hŒÄLooks for the eBPF map with an id greater than *start_id* and updates *next_id* on success. If no other eBPF maps remain with ids higher than *start_id*, returns -1 and sets *errno* to **ENOENT**.”h]”(hŒ/Looks for the eBPF map with an id greater than ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ *start_id*”h]”hŒstart_id”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ and updates ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ *next_id*”h]”hŒnext_id”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ? on success. If no other eBPF maps remain with ids higher than ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ *start_id*”h]”hŒstart_id”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ, returns -1 and sets ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ to ”…”�”}”(hjh²hh³Nh´Nubjø)�”}”(hŒ **ENOENT**”h]”hŒENOENT”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M£hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jh´M¦hjñubjb)�”}”(hŒrReturn Returns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jíh´MªhjŽubjy)�”}”(hhh]”j )�”}”(hŒjReturns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately.”h]”(hŒMReturns zero on success. On error, or when no id remains, -1 is returned and ”…”�”}”(hj£h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj£ubhŒ is set appropriately.”…”�”}”(hj£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M©hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jíh´Mªhjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jíh´Mªhj^ubjb)�”}”(hX BPF_PROG_GET_FD_BY_ID Description Open a file descriptor for the eBPF program corresponding to *prog_id*. Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒBPF_PROG_GET_FD_BY_ID”h]”hŒBPF_PROG_GET_FD_BY_ID”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M³hjâubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hŒTDescription Open a file descriptor for the eBPF program corresponding to *prog_id*. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¯hjûubjy)�”}”(hhh]”j )�”}”(hŒGOpen a file descriptor for the eBPF program corresponding to *prog_id*.”h]”(hŒ=Open a file descriptor for the eBPF program corresponding to ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ *prog_id*”h]”hŒprog_id”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M®hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j h´M¯hjøubjb)�”}”(hŒ€Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jôh´M³hj>ubjy)�”}”(hhh]”j )�”}”(hŒxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, ”…”�”}”(hjSh²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjSubhŒ is set appropriately).”…”�”}”(hjSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M²hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jôh´M³hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jôh´M³hj^ubjb)�”}”(hXBPF_MAP_GET_FD_BY_ID Description Open a file descriptor for the eBPF map corresponding to *map_id*. Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒBPF_MAP_GET_FD_BY_ID”h]”hŒBPF_MAP_GET_FD_BY_ID”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¼hj’ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hŒODescription Open a file descriptor for the eBPF map corresponding to *map_id*. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¸hj«ubjy)�”}”(hhh]”j )�”}”(hŒBOpen a file descriptor for the eBPF map corresponding to *map_id*.”h]”(hŒ9Open a file descriptor for the eBPF map corresponding to ”…”�”}”(hjÁh²hh³Nh´Nubj )�”}”(hŒ*map_id*”h]”hŒmap_id”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁubhŒ.”…”�”}”(hjÁh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M·hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j½h´M¸hj¨ubjb)�”}”(hŒ€Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j¤h´M¼hjîubjy)�”}”(hhh]”j )�”}”(hŒxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ is set appropriately).”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M»hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j¤h´M¼hj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j¤h´M¼hj^ubjb)�”}”(hX4BPF_OBJ_GET_INFO_BY_FD Description Obtain information about the eBPF object corresponding to *bpf_fd*. Populates up to *info_len* bytes of *info*, which will be in one of the following formats depending on the eBPF object type of *bpf_fd*: * **struct bpf_prog_info** * **struct bpf_map_info** * **struct bpf_btf_info** * **struct bpf_link_info** * **struct bpf_token_info** Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_OBJ_GET_INFO_BY_FD”h]”hŒBPF_OBJ_GET_INFO_BY_FD”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÏhjBubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXaDescription Obtain information about the eBPF object corresponding to *bpf_fd*. Populates up to *info_len* bytes of *info*, which will be in one of the following formats depending on the eBPF object type of *bpf_fd*: * **struct bpf_prog_info** * **struct bpf_map_info** * **struct bpf_btf_info** * **struct bpf_link_info** * **struct bpf_token_info** ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MËhj[ubjy)�”}”(hhh]”(j )�”}”(hŒCObtain information about the eBPF object corresponding to *bpf_fd*.”h]”(hŒ:Obtain information about the eBPF object corresponding to ”…”�”}”(hjqh²hh³Nh´Nubj )�”}”(hŒ*bpf_fd*”h]”hŒbpf_fd”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjqubhŒ.”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÀhjnubj )�”}”(hŒˆPopulates up to *info_len* bytes of *info*, which will be in one of the following formats depending on the eBPF object type of *bpf_fd*:”h]”(hŒPopulates up to ”…”�”}”(hj’h²hh³Nh´Nubj )�”}”(hŒ *info_len*”h]”hŒinfo_len”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj’ubhŒ bytes of ”…”�”}”(hj’h²hh³Nh´Nubj )�”}”(hŒ*info*”h]”hŒinfo”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj’ubhŒU, which will be in one of the following formats depending on the eBPF object type of ”…”�”}”(hj’h²hh³Nh´Nubj )�”}”(hŒ*bpf_fd*”h]”hŒbpf_fd”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj’ubhŒ:”…”�”}”(hj’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÃhjnubhþ)�”}”(hhh]”(j)�”}”(hŒ**struct bpf_prog_info**”h]”j )�”}”(hjÜh]”jø)�”}”(hjÜh]”hŒstruct bpf_prog_info”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÇhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×ubj)�”}”(hŒ**struct bpf_map_info**”h]”j )�”}”(hjýh]”jø)�”}”(hjýh]”hŒstruct bpf_map_info”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÈhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×ubj)�”}”(hŒ**struct bpf_btf_info**”h]”j )�”}”(hjh]”jø)�”}”(hjh]”hŒstruct bpf_btf_info”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÉhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×ubj)�”}”(hŒ**struct bpf_link_info**”h]”j )�”}”(hj?h]”jø)�”}”(hj?h]”hŒstruct bpf_link_info”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÊhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×ubj)�”}”(hŒ**struct bpf_token_info** ”h]”j )�”}”(hŒ**struct bpf_token_info**”h]”jø)�”}”(hjdh]”hŒstruct bpf_token_info”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jmh´MËhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×ubeh}”(h]”h ]”h"]”h$]”h&]”j�jÚ uh1hýh³jôh´MÇhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jmh´MËhjXubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jTh´MÏhj‘ubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hj¦h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¦ubhŒ is set appropriately.”…”�”}”(hj¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÎhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jTh´MÏhjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jTh´MÏhj^ubjb)�”}”(hXžBPF_PROG_QUERY Description Obtain information about eBPF programs associated with the specified *attach_type* hook. The *target_fd* must be a valid file descriptor for a kernel object which depends on the attach type of *attach_bpf_fd*: **BPF_PROG_TYPE_CGROUP_DEVICE**, **BPF_PROG_TYPE_CGROUP_SKB**, **BPF_PROG_TYPE_CGROUP_SOCK**, **BPF_PROG_TYPE_CGROUP_SOCK_ADDR**, **BPF_PROG_TYPE_CGROUP_SOCKOPT**, **BPF_PROG_TYPE_CGROUP_SYSCTL**, **BPF_PROG_TYPE_SOCK_OPS** Control Group v2 hierarchy with the eBPF controller enabled. Requires the kernel to be compiled with **CONFIG_CGROUP_BPF**. **BPF_PROG_TYPE_FLOW_DISSECTOR** Network namespace (eg /proc/self/ns/net). **BPF_PROG_TYPE_LIRC_MODE2** LIRC device path (eg /dev/lircN). Requires the kernel to be compiled with **CONFIG_BPF_LIRC_MODE2**. **BPF_PROG_QUERY** always fetches the number of programs attached and the *attach_flags* which were used to attach those programs. Additionally, if *prog_ids* is nonzero and the number of attached programs is less than *prog_cnt*, populates *prog_ids* with the eBPF program ids of the programs attached at *target_fd*. The following flags may alter the result: **BPF_F_QUERY_EFFECTIVE** Only return information regarding programs which are currently effective at the specified *target_fd*. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_PROG_QUERY”h]”hŒBPF_PROG_QUERY”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mýhjåubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hX;Description Obtain information about eBPF programs associated with the specified *attach_type* hook. The *target_fd* must be a valid file descriptor for a kernel object which depends on the attach type of *attach_bpf_fd*: **BPF_PROG_TYPE_CGROUP_DEVICE**, **BPF_PROG_TYPE_CGROUP_SKB**, **BPF_PROG_TYPE_CGROUP_SOCK**, **BPF_PROG_TYPE_CGROUP_SOCK_ADDR**, **BPF_PROG_TYPE_CGROUP_SOCKOPT**, **BPF_PROG_TYPE_CGROUP_SYSCTL**, **BPF_PROG_TYPE_SOCK_OPS** Control Group v2 hierarchy with the eBPF controller enabled. Requires the kernel to be compiled with **CONFIG_CGROUP_BPF**. **BPF_PROG_TYPE_FLOW_DISSECTOR** Network namespace (eg /proc/self/ns/net). **BPF_PROG_TYPE_LIRC_MODE2** LIRC device path (eg /dev/lircN). Requires the kernel to be compiled with **CONFIG_BPF_LIRC_MODE2**. **BPF_PROG_QUERY** always fetches the number of programs attached and the *attach_flags* which were used to attach those programs. Additionally, if *prog_ids* is nonzero and the number of attached programs is less than *prog_cnt*, populates *prog_ids* with the eBPF program ids of the programs attached at *target_fd*. The following flags may alter the result: **BPF_F_QUERY_EFFECTIVE** Only return information regarding programs which are currently effective at the specified *target_fd*. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mùhjþubjy)�”}”(hhh]”(j )�”}”(hŒXObtain information about eBPF programs associated with the specified *attach_type* hook.”h]”(hŒEObtain information about eBPF programs associated with the specified ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ *attach_type*”h]”hŒ attach_type”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ hook.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÓhjubj )�”}”(hŒxThe *target_fd* must be a valid file descriptor for a kernel object which depends on the attach type of *attach_bpf_fd*:”h]”(hŒThe ”…”�”}”(hj5h²hh³Nh´Nubj )�”}”(hŒ *target_fd*”h]”hŒ target_fd”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj5ubhŒY must be a valid file descriptor for a kernel object which depends on the attach type of ”…”�”}”(hj5h²hh³Nh´Nubj )�”}”(hŒ*attach_bpf_fd*”h]”hŒ attach_bpf_fd”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj5ubhŒ:”…”�”}”(hj5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÖhjubj )�”}”(hŒß**BPF_PROG_TYPE_CGROUP_DEVICE**, **BPF_PROG_TYPE_CGROUP_SKB**, **BPF_PROG_TYPE_CGROUP_SOCK**, **BPF_PROG_TYPE_CGROUP_SOCK_ADDR**, **BPF_PROG_TYPE_CGROUP_SOCKOPT**, **BPF_PROG_TYPE_CGROUP_SYSCTL**, **BPF_PROG_TYPE_SOCK_OPS**”h]”(jø)�”}”(hŒ**BPF_PROG_TYPE_CGROUP_DEVICE**”h]”hŒBPF_PROG_TYPE_CGROUP_DEVICE”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjhubhŒ, ”…”�”}”(hjhh²hh³Nh´Nubjø)�”}”(hŒ**BPF_PROG_TYPE_CGROUP_SKB**”h]”hŒBPF_PROG_TYPE_CGROUP_SKB”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjhubhŒ, ”…”�”}”hjhsbjø)�”}”(hŒ**BPF_PROG_TYPE_CGROUP_SOCK**”h]”hŒBPF_PROG_TYPE_CGROUP_SOCK”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjhubhŒ, ”…”�”}”hjhsbjø)�”}”(hŒ"**BPF_PROG_TYPE_CGROUP_SOCK_ADDR**”h]”hŒBPF_PROG_TYPE_CGROUP_SOCK_ADDR”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjhubhŒ, ”…”�”}”hjhsbjø)�”}”(hŒ **BPF_PROG_TYPE_CGROUP_SOCKOPT**”h]”hŒBPF_PROG_TYPE_CGROUP_SOCKOPT”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjhubhŒ, ”…”�”}”hjhsbjø)�”}”(hŒ**BPF_PROG_TYPE_CGROUP_SYSCTL**”h]”hŒBPF_PROG_TYPE_CGROUP_SYSCTL”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjhubhŒ, ”…”�”}”hjhsbjø)�”}”(hŒ**BPF_PROG_TYPE_SOCK_OPS**”h]”hŒBPF_PROG_TYPE_SOCK_OPS”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÙhjubj%)�”}”(hŒ|Control Group v2 hierarchy with the eBPF controller enabled. Requires the kernel to be compiled with **CONFIG_CGROUP_BPF**. ”h]”j )�”}”(hŒ{Control Group v2 hierarchy with the eBPF controller enabled. Requires the kernel to be compiled with **CONFIG_CGROUP_BPF**.”h]”(hŒeControl Group v2 hierarchy with the eBPF controller enabled. Requires the kernel to be compiled with ”…”�”}”(hjñh²hh³Nh´Nubjø)�”}”(hŒ**CONFIG_CGROUP_BPF**”h]”hŒCONFIG_CGROUP_BPF”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjñubhŒ.”…”�”}”(hjñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Máhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j$h³jh´Máhjubj )�”}”(hŒ **BPF_PROG_TYPE_FLOW_DISSECTOR**”h]”jø)�”}”(hjh]”hŒBPF_PROG_TYPE_FLOW_DISSECTOR”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Måhjubj%)�”}”(hŒ*Network namespace (eg /proc/self/ns/net). ”h]”j )�”}”(hŒ)Network namespace (eg /proc/self/ns/net).”h]”hŒ)Network namespace (eg /proc/self/ns/net).”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mçhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j$h³jBh´Mçhjubj )�”}”(hŒ**BPF_PROG_TYPE_LIRC_MODE2**”h]”jø)�”}”(hjKh]”hŒBPF_PROG_TYPE_LIRC_MODE2”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Méhjubj%)�”}”(hŒeLIRC device path (eg /dev/lircN). Requires the kernel to be compiled with **CONFIG_BPF_LIRC_MODE2**. ”h]”j )�”}”(hŒdLIRC device path (eg /dev/lircN). Requires the kernel to be compiled with **CONFIG_BPF_LIRC_MODE2**.”h]”(hŒJLIRC device path (eg /dev/lircN). Requires the kernel to be compiled with ”…”�”}”(hjeh²hh³Nh´Nubjø)�”}”(hŒ**CONFIG_BPF_LIRC_MODE2**”h]”hŒCONFIG_BPF_LIRC_MODE2”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjeubhŒ.”…”�”}”(hjeh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mëhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j$h³j…h´Mëhjubj )�”}”(hX>**BPF_PROG_QUERY** always fetches the number of programs attached and the *attach_flags* which were used to attach those programs. Additionally, if *prog_ids* is nonzero and the number of attached programs is less than *prog_cnt*, populates *prog_ids* with the eBPF program ids of the programs attached at *target_fd*.”h]”(jø)�”}”(hŒ**BPF_PROG_QUERY**”h]”hŒBPF_PROG_QUERY”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjŒubhŒ8 always fetches the number of programs attached and the ”…”�”}”(hjŒh²hh³Nh´Nubj )�”}”(hŒ*attach_flags*”h]”hŒ attach_flags”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒubhŒ< which were used to attach those programs. Additionally, if ”…”�”}”(hjŒh²hh³Nh´Nubj )�”}”(hŒ *prog_ids*”h]”hŒprog_ids”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒubhŒ= is nonzero and the number of attached programs is less than ”…”�”}”(hjŒh²hh³Nh´Nubj )�”}”(hŒ *prog_cnt*”h]”hŒprog_cnt”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒubhŒ , populates ”…”�”}”(hjŒh²hh³Nh´Nubj )�”}”(hŒ *prog_ids*”h]”hŒprog_ids”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒubhŒ7 with the eBPF program ids of the programs attached at ”…”�”}”(hjŒh²hh³Nh´Nubj )�”}”(hŒ *target_fd*”h]”hŒ target_fd”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒubhŒ.”…”�”}”(hjŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mîhjubj )�”}”(hŒ)The following flags may alter the result:”h]”hŒ)The following flags may alter the result:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mõhjubj])�”}”(hhh]”jb)�”}”(hŒ�**BPF_F_QUERY_EFFECTIVE** Only return information regarding programs which are currently effective at the specified *target_fd*. ”h]”(jh)�”}”(hŒ**BPF_F_QUERY_EFFECTIVE**”h]”jø)�”}”(hjh]”hŒBPF_F_QUERY_EFFECTIVE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jh´Mùhjubjy)�”}”(hhh]”j )�”}”(hŒfOnly return information regarding programs which are currently effective at the specified *target_fd*.”h]”(hŒZOnly return information regarding programs which are currently effective at the specified ”…”�”}”(hj3h²hh³Nh´Nubj )�”}”(hŒ *target_fd*”h]”hŒ target_fd”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj3ubhŒ.”…”�”}”(hj3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Møhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jh´Mùhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jh´Mùhjûubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j÷h´Mýhjrubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hj‡h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‡ubhŒ is set appropriately.”…”�”}”(hj‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mühj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j÷h´Mýhjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j÷h´Mýhj^ubjb)�”}”(hXÙBPF_RAW_TRACEPOINT_OPEN Description Attach an eBPF program to a tracepoint *name* to access kernel internal arguments of the tracepoint in their raw form. The *prog_fd* must be a valid file descriptor associated with a loaded eBPF program of type **BPF_PROG_TYPE_RAW_TRACEPOINT**. No ABI guarantees are made about the content of tracepoint arguments exposed to the corresponding eBPF program. Applying **close**\ (2) to the file descriptor returned by **BPF_RAW_TRACEPOINT_OPEN** will delete the map (but see NOTES). Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒBPF_RAW_TRACEPOINT_OPEN”h]”hŒBPF_RAW_TRACEPOINT_OPEN”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MhjÆubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXðDescription Attach an eBPF program to a tracepoint *name* to access kernel internal arguments of the tracepoint in their raw form. The *prog_fd* must be a valid file descriptor associated with a loaded eBPF program of type **BPF_PROG_TYPE_RAW_TRACEPOINT**. No ABI guarantees are made about the content of tracepoint arguments exposed to the corresponding eBPF program. Applying **close**\ (2) to the file descriptor returned by **BPF_RAW_TRACEPOINT_OPEN** will delete the map (but see NOTES). ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M hjßubjy)�”}”(hhh]”(j )�”}”(hŒvAttach an eBPF program to a tracepoint *name* to access kernel internal arguments of the tracepoint in their raw form.”h]”(hŒ'Attach an eBPF program to a tracepoint ”…”�”}”(hjõh²hh³Nh´Nubj )�”}”(hŒ*name*”h]”hŒname”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjõubhŒI to access kernel internal arguments of the tracepoint in their raw form.”…”�”}”(hjõh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhjòubj )�”}”(hŒ}The *prog_fd* must be a valid file descriptor associated with a loaded eBPF program of type **BPF_PROG_TYPE_RAW_TRACEPOINT**.”h]”(hŒThe ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ *prog_fd*”h]”hŒprog_fd”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒO must be a valid file descriptor associated with a loaded eBPF program of type ”…”�”}”(hjh²hh³Nh´Nubjø)�”}”(hŒ **BPF_PROG_TYPE_RAW_TRACEPOINT**”h]”hŒBPF_PROG_TYPE_RAW_TRACEPOINT”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhjòubj )�”}”(hŒoNo ABI guarantees are made about the content of tracepoint arguments exposed to the corresponding eBPF program.”h]”hŒoNo ABI guarantees are made about the content of tracepoint arguments exposed to the corresponding eBPF program.”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhjòubj )�”}”(hŒ{Applying **close**\ (2) to the file descriptor returned by **BPF_RAW_TRACEPOINT_OPEN** will delete the map (but see NOTES).”h]”(hŒ Applying ”…”�”}”(hjXh²hh³Nh´Nubjø)�”}”(hŒ **close**”h]”hŒclose”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjXubhŒ) (2) to the file descriptor returned by ”…”�”}”(hjXh²hh³Nh´Nubjø)�”}”(hŒ**BPF_RAW_TRACEPOINT_OPEN**”h]”hŒBPF_RAW_TRACEPOINT_OPEN”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjXubhŒ% will delete the map (but see NOTES).”…”�”}”(hjXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M hjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jñh´M hjÜubjb)�”}”(hŒ€Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jØh´Mhj—ubjy)�”}”(hhh]”j )�”}”(hŒxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, ”…”�”}”(hj¬h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¬ubhŒ is set appropriately).”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jØh´MhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jØh´Mhj^ubjb)�”}”(hXÕBPF_BTF_LOAD Description Verify and load BPF Type Format (BTF) metadata into the kernel, returning a new file descriptor associated with the metadata. BTF is described in more detail at https://www.kernel.org/doc/html/latest/bpf/btf.html. The *btf* parameter must point to valid memory providing *btf_size* bytes of BTF binary metadata. The returned file descriptor can be passed to other **bpf**\ () subcommands such as **BPF_PROG_LOAD** or **BPF_MAP_CREATE** to associate the BTF with those objects. Similar to **BPF_PROG_LOAD**, **BPF_BTF_LOAD** has optional parameters to specify a *btf_log_buf*, *btf_log_size* and *btf_log_level* which allow the kernel to return freeform log output regarding the BTF verification process. Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒ BPF_BTF_LOAD”h]”hŒ BPF_BTF_LOAD”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M&hjëubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXÏDescription Verify and load BPF Type Format (BTF) metadata into the kernel, returning a new file descriptor associated with the metadata. BTF is described in more detail at https://www.kernel.org/doc/html/latest/bpf/btf.html. The *btf* parameter must point to valid memory providing *btf_size* bytes of BTF binary metadata. The returned file descriptor can be passed to other **bpf**\ () subcommands such as **BPF_PROG_LOAD** or **BPF_MAP_CREATE** to associate the BTF with those objects. Similar to **BPF_PROG_LOAD**, **BPF_BTF_LOAD** has optional parameters to specify a *btf_log_buf*, *btf_log_size* and *btf_log_level* which allow the kernel to return freeform log output regarding the BTF verification process. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M"hjubjy)�”}”(hhh]”(j )�”}”(hŒÕVerify and load BPF Type Format (BTF) metadata into the kernel, returning a new file descriptor associated with the metadata. BTF is described in more detail at https://www.kernel.org/doc/html/latest/bpf/btf.html.”h]”(hŒ¡Verify and load BPF Type Format (BTF) metadata into the kernel, returning a new file descriptor associated with the metadata. BTF is described in more detail at ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ3https://www.kernel.org/doc/html/latest/bpf/btf.html”h]”hŒ3https://www.kernel.org/doc/html/latest/bpf/btf.html”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j$uh1jhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhjubj )�”}”(hŒaThe *btf* parameter must point to valid memory providing *btf_size* bytes of BTF binary metadata.”h]”(hŒThe ”…”�”}”(hj<h²hh³Nh´Nubj )�”}”(hŒ*btf*”h]”hŒbtf”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj<ubhŒ0 parameter must point to valid memory providing ”…”�”}”(hj<h²hh³Nh´Nubj )�”}”(hŒ *btf_size*”h]”hŒbtf_size”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj<ubhŒ bytes of BTF binary metadata.”…”�”}”(hj<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhjubj )�”}”(hŒ¤The returned file descriptor can be passed to other **bpf**\ () subcommands such as **BPF_PROG_LOAD** or **BPF_MAP_CREATE** to associate the BTF with those objects.”h]”(hŒ4The returned file descriptor can be passed to other ”…”�”}”(hjoh²hh³Nh´Nubjø)�”}”(hŒ**bpf**”h]”hŒbpf”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjoubhŒ () subcommands such as ”…”�”}”(hjoh²hh³Nh´Nubjø)�”}”(hŒ**BPF_PROG_LOAD**”h]”hŒ BPF_PROG_LOAD”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjoubhŒ or ”…”�”}”(hjoh²hh³Nh´Nubjø)�”}”(hŒ**BPF_MAP_CREATE**”h]”hŒBPF_MAP_CREATE”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjoubhŒ) to associate the BTF with those objects.”…”�”}”(hjoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhjubj )�”}”(hŒâSimilar to **BPF_PROG_LOAD**, **BPF_BTF_LOAD** has optional parameters to specify a *btf_log_buf*, *btf_log_size* and *btf_log_level* which allow the kernel to return freeform log output regarding the BTF verification process.”h]”(hŒ Similar to ”…”�”}”(hj´h²hh³Nh´Nubjø)�”}”(hŒ**BPF_PROG_LOAD**”h]”hŒ BPF_PROG_LOAD”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj´ubhŒ, ”…”�”}”(hj´h²hh³Nh´Nubjø)�”}”(hŒ**BPF_BTF_LOAD**”h]”hŒ BPF_BTF_LOAD”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj´ubhŒ& has optional parameters to specify a ”…”�”}”(hj´h²hh³Nh´Nubj )�”}”(hŒ *btf_log_buf*”h]”hŒ btf_log_buf”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´ubhŒ, ”…”�”}”hj´sbj )�”}”(hŒ*btf_log_size*”h]”hŒ btf_log_size”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´ubhŒ and ”…”�”}”(hj´h²hh³Nh´Nubj )�”}”(hŒ*btf_log_level*”h]”hŒ btf_log_level”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´ubhŒ] which allow the kernel to return freeform log output regarding the BTF verification process.”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jh´M"hjubjb)�”}”(hŒ€Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jýh´M&hj)ubjy)�”}”(hhh]”j )�”}”(hŒxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, ”…”�”}”(hj>h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj>ubhŒ is set appropriately).”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M%hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jýh´M&hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jýh´M&hj^ubjb)�”}”(hXBPF_BTF_GET_FD_BY_ID Description Open a file descriptor for the BPF Type Format (BTF) corresponding to *btf_id*. Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒBPF_BTF_GET_FD_BY_ID”h]”hŒBPF_BTF_GET_FD_BY_ID”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M/hj}ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hŒ\Description Open a file descriptor for the BPF Type Format (BTF) corresponding to *btf_id*. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M+hj–ubjy)�”}”(hhh]”j )�”}”(hŒOOpen a file descriptor for the BPF Type Format (BTF) corresponding to *btf_id*.”h]”(hŒFOpen a file descriptor for the BPF Type Format (BTF) corresponding to ”…”�”}”(hj¬h²hh³Nh´Nubj )�”}”(hŒ*btf_id*”h]”hŒbtf_id”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¬ubhŒ.”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M*hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j¨h´M+hj“ubjb)�”}”(hŒ€Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j�h´M/hjÙubjy)�”}”(hhh]”j )�”}”(hŒxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, ”…”�”}”(hjîh²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjîubhŒ is set appropriately).”…”�”}”(hjîh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M.hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j�h´M/hj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j�h´M/hj^ubjb)�”}”(hX˜BPF_TASK_FD_QUERY Description Obtain information about eBPF programs associated with the target process identified by *pid* and *fd*. If the *pid* and *fd* are associated with a tracepoint, kprobe or uprobe perf event, then the *prog_id* and *fd_type* will be populated with the eBPF program id and file descriptor type of type **bpf_task_fd_type**. If associated with a kprobe or uprobe, the *probe_offset* and *probe_addr* will also be populated. Optionally, if *buf* is provided, then up to *buf_len* bytes of *buf* will be populated with the name of the tracepoint, kprobe or uprobe. The resulting *prog_id* may be introspected in deeper detail using **BPF_PROG_GET_FD_BY_ID** and **BPF_OBJ_GET_INFO_BY_FD**. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_TASK_FD_QUERY”h]”hŒBPF_TASK_FD_QUERY”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MDhj- ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXºDescription Obtain information about eBPF programs associated with the target process identified by *pid* and *fd*. If the *pid* and *fd* are associated with a tracepoint, kprobe or uprobe perf event, then the *prog_id* and *fd_type* will be populated with the eBPF program id and file descriptor type of type **bpf_task_fd_type**. If associated with a kprobe or uprobe, the *probe_offset* and *probe_addr* will also be populated. Optionally, if *buf* is provided, then up to *buf_len* bytes of *buf* will be populated with the name of the tracepoint, kprobe or uprobe. The resulting *prog_id* may be introspected in deeper detail using **BPF_PROG_GET_FD_BY_ID** and **BPF_OBJ_GET_INFO_BY_FD**. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M@hjF ubjy)�”}”(hhh]”(j )�”}”(hŒgObtain information about eBPF programs associated with the target process identified by *pid* and *fd*.”h]”(hŒXObtain information about eBPF programs associated with the target process identified by ”…”�”}”(hj\ h²hh³Nh´Nubj )�”}”(hŒ*pid*”h]”hŒpid”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ ubhŒ and ”…”�”}”(hj\ h²hh³Nh´Nubj )�”}”(hŒ*fd*”h]”hŒfd”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ ubhŒ.”…”�”}”(hj\ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M3hjY ubj )�”}”(hXÆIf the *pid* and *fd* are associated with a tracepoint, kprobe or uprobe perf event, then the *prog_id* and *fd_type* will be populated with the eBPF program id and file descriptor type of type **bpf_task_fd_type**. If associated with a kprobe or uprobe, the *probe_offset* and *probe_addr* will also be populated. Optionally, if *buf* is provided, then up to *buf_len* bytes of *buf* will be populated with the name of the tracepoint, kprobe or uprobe.”h]”(hŒIf the ”…”�”}”(hj� h²hh³Nh´Nubj )�”}”(hŒ*pid*”h]”hŒpid”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj� ubhŒ and ”…”�”}”(hj� • h²hh³Nh´Nubj )�”}”(hŒ*fd*”h]”hŒfd”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj� ubhŒI are associated with a tracepoint, kprobe or uprobe perf event, then the ”…”�”}”(hj� h²hh³Nh´Nubj )�”}”(hŒ *prog_id*”h]”hŒprog_id”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj� ubhŒ and ”…”�”}”hj� sbj )�”}”(hŒ *fd_type*”h]”hŒfd_type”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj� ubhŒM will be populated with the eBPF program id and file descriptor type of type ”…”�”}”(hj� h²hh³Nh´Nubjø)�”}”(hŒ**bpf_task_fd_type**”h]”hŒbpf_task_fd_type”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj� ubhŒ.. If associated with a kprobe or uprobe, the ”…”�”}”(hj� h²hh³Nh´Nubj )�”}”(hŒ*probe_offset*”h]”hŒ probe_offset”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj� ubhŒ and ”…”�”}”hj� sbj )�”}”(hŒ *probe_addr*”h]”hŒ probe_addr”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj� ubhŒ( will also be populated. Optionally, if ”…”�”}”(hj� h²hh³Nh´Nubj )�”}”(hŒ*buf*”h]”hŒbuf”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj� ubhŒ is provided, then up to ”…”�”}”(hj� h²hh³Nh´Nubj )�”}”(hŒ *buf_len*”h]”hŒbuf_len”…”�”}”(hj'!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj� ubhŒ bytes of ”…”�”}”(hj� h²hh³Nh´Nubj )�”}”(hŒ*buf*”h]”hŒbuf”…”�”}”(hj9!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj� ubhŒE will be populated with the name of the tracepoint, kprobe or uprobe.”…”�”}”(hj� h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M6hjY ubj )�”}”(hŒ|The resulting *prog_id* may be introspected in deeper detail using **BPF_PROG_GET_FD_BY_ID** and **BPF_OBJ_GET_INFO_BY_FD**.”h]”(hŒThe resulting ”…”�”}”(hjR!h²hh³Nh´Nubj )�”}”(hŒ *prog_id*”h]”hŒprog_id”…”�”}”(hjZ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjR!ubhŒ, may be introspected in deeper detail using ”…”�”}”(hjR!h²hh³Nh´Nubjø)�”}”(hŒ**BPF_PROG_GET_FD_BY_ID**”h]”hŒBPF_PROG_GET_FD_BY_ID”…”�”}”(hjl!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjR!ubhŒ and ”…”�”}”(hjR!h²hh³Nh´Nubjø)�”}”(hŒ**BPF_OBJ_GET_INFO_BY_FD**”h]”hŒBPF_OBJ_GET_INFO_BY_FD”…”�”}”(hj~!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjR!ubhŒ.”…”�”}”(hjR!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M?hjY ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjF ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jX h´M@hjC ubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj§!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j? h´MDhj£!ubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hj¸!h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjÀ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸!ubhŒ is set appropriately.”…”�”}”(hj¸!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MChjµ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj£!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j? h´MDhjC ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj@ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj- ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j? h´MDhj^ubjb)�”}”(hXBPF_MAP_LOOKUP_AND_DELETE_ELEM Description Look up an element with the given *key* in the map referred to by the file descriptor *fd*, and if found, delete the element. For **BPF_MAP_TYPE_QUEUE** and **BPF_MAP_TYPE_STACK** map types, the *flags* argument needs to be set to 0, but for other map types, it may be specified as: **BPF_F_LOCK** Look up and delete the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock. The **BPF_MAP_TYPE_QUEUE** and **BPF_MAP_TYPE_STACK** map types implement this command as a "pop" operation, deleting the top element rather than one corresponding to *key*. The *key* and *key_len* parameters should be zeroed when issuing this operation for these map types. This command is only valid for the following map types: * **BPF_MAP_TYPE_QUEUE** * **BPF_MAP_TYPE_STACK** * **BPF_MAP_TYPE_HASH** * **BPF_MAP_TYPE_PERCPU_HASH** * **BPF_MAP_TYPE_LRU_HASH** * **BPF_MAP_TYPE_LRU_PERCPU_HASH** Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_MAP_LOOKUP_AND_DELETE_ELEM”h]”hŒBPF_MAP_LOOKUP_AND_DELETE_ELEM”…”�”}”(hjû!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mdhj÷!ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXÎDescription Look up an element with the given *key* in the map referred to by the file descriptor *fd*, and if found, delete the element. For **BPF_MAP_TYPE_QUEUE** and **BPF_MAP_TYPE_STACK** map types, the *flags* argument needs to be set to 0, but for other map types, it may be specified as: **BPF_F_LOCK** Look up and delete the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock. The **BPF_MAP_TYPE_QUEUE** and **BPF_MAP_TYPE_STACK** map types implement this command as a "pop" operation, deleting the top element rather than one corresponding to *key*. The *key* and *key_len* parameters should be zeroed when issuing this operation for these map types. This command is only valid for the following map types: * **BPF_MAP_TYPE_QUEUE** * **BPF_MAP_TYPE_STACK** * **BPF_MAP_TYPE_HASH** * **BPF_MAP_TYPE_PERCPU_HASH** * **BPF_MAP_TYPE_LRU_HASH** * **BPF_MAP_TYPE_LRU_PERCPU_HASH** ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M`hj"ubjy)�”}”(hhh]”(j )�”}”(hŒ}Look up an element with the given *key* in the map referred to by the file descriptor *fd*, and if found, delete the element.”h]”(hŒ"Look up an element with the given ”…”�”}”(hj&"h²hh³Nh´Nubj )�”}”(hŒ*key*”h]”hŒkey”…”�”}”(hj."h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&"ubhŒ/ in the map referred to by the file descriptor ”…”�”}”(hj&"h²hh³Nh´Nubj )�”}”(hŒ*fd*”h]”hŒfd”…”�”}”(hj@"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&"ubhŒ#, and if found, delete the element.”…”�”}”(hj&"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MHhj#"ubj )�”}”(hŒœFor **BPF_MAP_TYPE_QUEUE** and **BPF_MAP_TYPE_STACK** map types, the *flags* argument needs to be set to 0, but for other map types, it may be specified as:”h]”(hŒFor ”…”�”}”(hjY"h²hh³Nh´Nubjø)�”}”(hŒ**BPF_MAP_TYPE_QUEUE**”h]”hŒBPF_MAP_TYPE_QUEUE”…”�”}”(hja"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjY"ubhŒ and ”…”�”}”(hjY"h²hh³Nh´Nubjø)�”}”(hŒ**BPF_MAP_TYPE_STACK**”h]”hŒBPF_MAP_TYPE_STACK”…”�”}”(hjs"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjY"ubhŒ map types, the ”…”�”}”(hjY"h²hh³Nh´Nubj )�”}”(hŒ*flags*”h]”hŒflags”…”�”}”(hj…"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjY"ubhŒP argument needs to be set to 0, but for other map types, it may be specified as:”…”�”}”(hjY"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MKhj#"ubj])�”}”(hhh]”jb)�”}”(hŒ˜**BPF_F_LOCK** Look up and delete the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock. ”h]”(jh)�”}”(hŒ**BPF_F_LOCK**”h]”jø)�”}”(hj§"h]”hŒ BPF_F_LOCK”…”�”}”(hj©"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj¥"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MRhj¡"ubjy)�”}”(hhh]”j )�”}”(hŒˆLook up and delete the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock.”h]”hŒˆLook up and delete the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock.”…”�”}”(hjÀ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MPhj½"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj¡"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j¼"h´MRhjž"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hj#"ubj )�”}”(hXThe **BPF_MAP_TYPE_QUEUE** and **BPF_MAP_TYPE_STACK** map types implement this command as a "pop" operation, deleting the top element rather than one corresponding to *key*. The *key* and *key_len* parameters should be zeroed when issuing this operation for these map types.”h]”(hŒThe ”…”�”}”(hjá"h²hh³Nh´Nubjø)�”}”(hŒ**BPF_MAP_TYPE_QUEUE**”h]”hŒBPF_MAP_TYPE_QUEUE”…”�”}”(hjé"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjá"ubhŒ and ”…”�”}”(hjá"h²hh³Nh´Nubjø)�”}”(hŒ**BPF_MAP_TYPE_STACK**”h]”hŒBPF_MAP_TYPE_STACK”…”�”}”(hjû"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjá"ubhŒv map types implement this command as a “popâ€� operation, deleting the top element rather than one corresponding to ”…”�”}”(hjá"h²hh³Nh´Nubj )�”}”(hŒ*key*”h]”hŒkey”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjá"ubhŒ. The ”…”�”}”(hjá"h²hh³Nh´Nubj )�”}”(hŒ*key*”h]”hŒkey”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjá"ubhŒ and ”…”�”}”hjá"sbj )�”}”(hŒ *key_len*”h]”hŒkey_len”…”�”}”(hj1#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjá"ubhŒM parameters should be zeroed when issuing this operation for these map types.”…”�”}”(hjá"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MThj#"ubj )�”}”(hŒßThis command is only valid for the following map types: * **BPF_MAP_TYPE_QUEUE** * **BPF_MAP_TYPE_STACK** * **BPF_MAP_TYPE_HASH** * **BPF_MAP_TYPE_PERCPU_HASH** * **BPF_MAP_TYPE_LRU_HASH** * **BPF_MAP_TYPE_LRU_PERCPU_HASH**”h]”(hŒ:This command is only valid for the following map types: * ”…”�”}”(hjJ#h²hh³Nh´Nubjø)�”}”(hŒ**BPF_MAP_TYPE_QUEUE**”h]”hŒBPF_MAP_TYPE_QUEUE”…”�”}”(hjR#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjJ#ubhŒ * ”…”�”}”(hjJ#h²hh³Nh´Nubjø)�”}”(hŒ**BPF_MAP_TYPE_STACK**”h]”hŒBPF_MAP_TYPE_STACK”…”�”}”(hjd#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjJ#ubhŒ * ”…”�”}”hjJ#sbjø)�”}”(hŒ**BPF_MAP_TYPE_HASH**”h]”hŒBPF_MAP_TYPE_HASH”…”�”}”(hjv#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjJ#ubhŒ * ”…”�”}”hjJ#sbjø)�”}”(hŒ**BPF_MAP_TYPE_PERCPU_HASH**”h]”hŒBPF_MAP_TYPE_PERCPU_HASH”…”�”}”(hjˆ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjJ#ubhŒ * ”…”�”}”hjJ#sbjø)�”}”(hŒ**BPF_MAP_TYPE_LRU_HASH**”h]”hŒBPF_MAP_TYPE_LRU_HASH”…”�”}”(hjš#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjJ#ubhŒ * ”…”�”}”hjJ#sbjø)�”}”(hŒ **BPF_MAP_TYPE_LRU_PERCPU_HASH**”h]”hŒBPF_MAP_TYPE_LRU_PERCPU_HASH”…”�”}”(hj¬#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjJ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MZhj#"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j""h´M`hj "ubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjÑ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j "h´MdhjÍ#ubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hjâ#h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjê#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjâ#ubhŒ is set appropriately.”…”�”}”(hjâ#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mchjß#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÍ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j "h´Mdhj "ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj "ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj÷!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j "h´Mdhj^ubjb)�”}”(hXõBPF_MAP_FREEZE Description Freeze the permissions of the specified map. Write permissions may be frozen by passing zero *flags*. Upon success, no future syscall invocations may alter the map state of *map_fd*. Write operations from eBPF programs are still possible for a frozen map. Not supported for maps of type **BPF_MAP_TYPE_STRUCT_OPS**. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_MAP_FREEZE”h]”hŒBPF_MAP_FREEZE”…”�”}”(hj%$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mshj!$ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXJDescription Freeze the permissions of the specified map. Write permissions may be frozen by passing zero *flags*. Upon success, no future syscall invocations may alter the map state of *map_fd*. Write operations from eBPF programs are still possible for a frozen map. Not supported for maps of type **BPF_MAP_TYPE_STRUCT_OPS**. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj>$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mohj:$ubjy)�”}”(hhh]”(j )�”}”(hŒ,Freeze the permissions of the specified map.”h]”hŒ,Freeze the permissions of the specified map.”…”�”}”(hjP$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MhhjM$ubj )�”}”(hŒÒWrite permissions may be frozen by passing zero *flags*. Upon success, no future syscall invocations may alter the map state of *map_fd*. Write operations from eBPF programs are still possible for a frozen map.”h]”(hŒ0Write permissions may be frozen by passing zero ”…”�”}”(hj_$h²hh³Nh´Nubj )�”}”(hŒ*flags*”h]”hŒflags”…”�”}”(hjg$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj_$ubhŒI. Upon success, no future syscall invocations may alter the map state of ”…”�”}”(hj_$h²hh³Nh´Nubj )�”}”(hŒ*map_fd*”h]”hŒmap_fd”…”�”}”(hjy$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj_$ubhŒJ. Write operations from eBPF programs are still possible for a frozen map.”…”�”}”(hj_$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MjhjM$ubj )�”}”(hŒ;Not supported for maps of type **BPF_MAP_TYPE_STRUCT_OPS**.”h]”(hŒNot supported for maps of type ”…”�”}”(hj’$h²hh³Nh´Nubjø)�”}”(hŒ**BPF_MAP_TYPE_STRUCT_OPS**”h]”hŒBPF_MAP_TYPE_STRUCT_OPS”…”�”}”(hjš$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj’$ubhŒ.”…”�”}”(hj’$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jL$h´MohjM$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj:$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jL$h´Mohj7$ubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjÂ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j3$h´Mshj¾$ubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hjÓ$h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjÛ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓ$ubhŒ is set appropriately.”…”�”}”(hjÓ$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MrhjÐ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj¾$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j3$h´Mshj7$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj4$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj!$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j3$h´Mshj^ubjb)�”}”(hXëBPF_BTF_GET_NEXT_ID Description Fetch the next BPF Type Format (BTF) object currently loaded into the kernel. Looks for the BTF object with an id greater than *start_id* and updates *next_id* on success. If no other BTF objects remain with ids higher than *start_id*, returns -1 and sets *errno* to **ENOENT**. Return Returns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_BTF_GET_NEXT_ID”h]”hŒBPF_BTF_GET_NEXT_ID”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M�hj%ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hX$Description Fetch the next BPF Type Format (BTF) object currently loaded into the kernel. Looks for the BTF object with an id greater than *start_id* and updates *next_id* on success. If no other BTF objects remain with ids higher than *start_id*, returns -1 and sets *errno* to **ENOENT**. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj/%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M}hj+%ubjy)�”}”(hhh]”(j )�”}”(hŒMFetch the next BPF Type Format (BTF) object currently loaded into the kernel.”h]”hŒMFetch the next BPF Type Format (BTF) object currently loaded into the kernel.”…”�”}”(hjA%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mwhj>%ubj )�”}”(hŒÈLooks for the BTF object with an id greater than *start_id* and updates *next_id* on success. If no other BTF objects remain with ids higher than *start_id*, returns -1 and sets *errno* to **ENOENT**.”h]”(hŒ1Looks for the BTF object with an id greater than ”…”�”}”(hjP%h²hh³Nh´Nubj )�”}”(hŒ *start_id*”h]”hŒstart_id”…”�”}”(hjX%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjP%ubhŒ and updates ”…”�”}”(hjP%h²hh³Nh´Nubj )�”}”(hŒ *next_id*”h]”hŒnext_id”…”�”}”(hjj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjP%ubhŒA on success. If no other BTF objects remain with ids higher than ”…”�”}”(hjP%h²hh³Nh´Nubj )�”}”(hŒ *start_id*”h]”hŒstart_id”…”�”}”(hj|%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjP%ubhŒ, returns -1 and sets ”…”�”}”(hjP%h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjŽ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjP%ubhŒ to ”…”�”}”(hjP%h²hh³Nh´Nubjø)�”}”(hŒ **ENOENT**”h]”hŒENOENT”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjP%ubhŒ.”…”�”}”(hjP%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mzhj>%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj+%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j=%h´M}hj(%ubjb)�”}”(hŒrReturn Returns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjÉ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j$%h´M�hjÅ%ubjy)�”}”(hhh]”j )�”}”(hŒjReturns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately.”h]”(hŒMReturns zero on success. On error, or when no id remains, -1 is returned and ”…”�”}”(hjÚ%h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjâ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚ%ubhŒ is set appropriately.”…”�”}”(hjÚ%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M€hj×%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÅ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j$%h´M�hj(%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj%%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j$%h´M�hj^ubjb)�”}”(hX¯BPF_MAP_LOOKUP_BATCH Description Iterate and fetch multiple elements in a map. Two opaque values are used to manage batch operations, *in_batch* and *out_batch*. Initially, *in_batch* must be set to NULL to begin the batched operation. After each subsequent **BPF_MAP_LOOKUP_BATCH**, the caller should pass the resultant *out_batch* as the *in_batch* for the next operation to continue iteration from the current point. Both *in_batch* and *out_batch* must point to memory large enough to hold a key, except for maps of type **BPF_MAP_TYPE_{HASH, PERCPU_HASH, LRU_HASH, LRU_PERCPU_HASH}**, for which batch parameters must be at least 4 bytes wide regardless of key size. The *keys* and *values* are output parameters which must point to memory large enough to hold *count* items based on the key and value size of the map *map_fd*. The *keys* buffer must be of *key_size* * *count*. The *values* buffer must be of *value_size* * *count*. The *elem_flags* argument may be specified as one of the following: **BPF_F_LOCK** Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock. On success, *count* elements from the map are copied into the user buffer, with the keys copied into *keys* and the values copied into the corresponding indices in *values*. If an error is returned and *errno* is not **EFAULT**, *count* is set to the number of successfully processed elements. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. May set *errno* to **ENOSPC** to indicate that *keys* or *values* is too small to dump an entire bucket during iteration of a hash-based map type. ”h]”(jh)�”}”(hŒBPF_MAP_LOOKUP_BATCH”h]”hŒBPF_MAP_LOOKUP_BATCH”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M­hj&ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXªDescription Iterate and fetch multiple elements in a map. Two opaque values are used to manage batch operations, *in_batch* and *out_batch*. Initially, *in_batch* must be set to NULL to begin the batched operation. After each subsequent **BPF_MAP_LOOKUP_BATCH**, the caller should pass the resultant *out_batch* as the *in_batch* for the next operation to continue iteration from the current point. Both *in_batch* and *out_batch* must point to memory large enough to hold a key, except for maps of type **BPF_MAP_TYPE_{HASH, PERCPU_HASH, LRU_HASH, LRU_PERCPU_HASH}**, for which batch parameters must be at least 4 bytes wide regardless of key size. The *keys* and *values* are output parameters which must point to memory large enough to hold *count* items based on the key and value size of the map *map_fd*. The *keys* buffer must be of *key_size* * *count*. The *values* buffer must be of *value_size* * *count*. The *elem_flags* argument may be specified as one of the following: **BPF_F_LOCK** Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock. On success, *count* elements from the map are copied into the user buffer, with the keys copied into *keys* and the values copied into the corresponding indices in *values*. If an error is returned and *errno* is not **EFAULT**, *count* is set to the number of successfully processed elements. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj6&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¥hj2&ubjy)�”}”(hhh]”(j )�”}”(hŒ-Iterate and fetch multiple elements in a map.”h]”hŒ-Iterate and fetch multiple elements in a map.”…”�”}”(hjH&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M…hjE&ubj )�”}”(hXOTwo opaque values are used to manage batch operations, *in_batch* and *out_batch*. Initially, *in_batch* must be set to NULL to begin the batched operation. After each subsequent **BPF_MAP_LOOKUP_BATCH**, the caller should pass the resultant *out_batch* as the *in_batch* for the next operation to continue iteration from the current point. Both *in_batch* and *out_batch* must point to memory large enough to hold a key, except for maps of type **BPF_MAP_TYPE_{HASH, PERCPU_HASH, LRU_HASH, LRU_PERCPU_HASH}**, for which batch parameters must be at least 4 bytes wide regardless of key size.”h]”(hŒ7Two opaque values are used to manage batch operations, ”…”�”}”(hjW&h²hh³Nh´Nubj )�”}”(hŒ *in_batch*”h]”hŒin_batch”…”�”}”(hj_&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjW&ubhŒ and ”…”�”}”(hjW&h²hh³Nh´Nubj )�”}”(hŒ *out_batch*”h]”hŒ out_batch”…”�”}”(hjq&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjW&ubhŒ . Initially, ”…”�”}”(hjW&h²hh³Nh´Nubj )�”}”(hŒ *in_batch*”h]”hŒin_batch”…”�”}”(hjƒ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjW&ubhŒK must be set to NULL to begin the batched operation. After each subsequent ”…”�”}”(hjW&h²hh³Nh´Nubjø)�”}”(hŒ**BPF_MAP_LOOKUP_BATCH**”h]”hŒBPF_MAP_LOOKUP_BATCH”…”�”}”(hj•&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjW&ubhŒ', the caller should pass the resultant ”…”�”}”(hjW&h²hh³Nh´Nubj )�”}”(hŒ *out_batch*”h]”hŒ out_batch”…”�”}”(hj§&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjW&ubhŒ as the ”…”�”}”(hjW&h²hh³Nh´Nubj )�”}”(hŒ *in_batch*”h]”hŒin_batch”…”�”}”(hj¹&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjW&ubhŒK for the next operation to continue iteration from the current point. Both ”…”�”}”(hjW&h²hh³Nh´Nubj )�”}”(hŒ *in_batch*”h]”hŒin_batch”…”�”}”(hjË&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjW&ubhŒ and ”…”�”}”(hjW&h²hh³Nh´Nubj )�”}”(hŒ *out_batch*”h]”hŒ out_batch”…”�”}”(hjÝ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjW&ubhŒJ must point to memory large enough to hold a key, except for maps of type ”…”�”}”(hjW&h²hh³Nh´Nubjø)�”}”(hŒ?**BPF_MAP_TYPE_{HASH, PERCPU_HASH, LRU_HASH, LRU_PERCPU_HASH}**”h]”hŒ;BPF_MAP_TYPE_{HASH, PERCPU_HASH, LRU_HASH, LRU_PERCPU_HASH}”…”�”}”(hjï&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjW&ubhŒR, for which batch parameters must be at least 4 bytes wide regardless of key size.”…”�”}”(hjW&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M‡hjE&ubj )�”}”(hX The *keys* and *values* are output parameters which must point to memory large enough to hold *count* items based on the key and value size of the map *map_fd*. The *keys* buffer must be of *key_size* * *count*. The *values* buffer must be of *value_size* * *count*.”h]”(hŒThe ”…”�”}”(hj'h²hh³Nh´Nubj )�”}”(hŒ*keys*”h]”hŒkeys”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ubhŒ and ”…”�”}”(hj'h²hh³Nh´Nubj )�”}”(hŒ*values*”h]”hŒvalues”…”�”}”(hj"'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ubhŒG are output parameters which must point to memory large enough to hold ”…”�”}”(hj'h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj4'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ubhŒ2 items based on the key and value size of the map ”…”�”}”(hj'h²hh³Nh´Nubj )�”}”(hŒ*map_fd*”h]”hŒmap_fd”…”�”}”(hjF'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ubhŒ. The ”…”�”}”(hj'h²hh³Nh´Nubj )�”}”(hŒ*keys*”h]”hŒkeys”…”�”}”(hjX'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ubhŒ buffer must be of ”…”�”}”(hj'h²hh³Nh´Nubj )�”}”(hŒ *key_size*”h]”hŒkey_size”…”�”}”(hjj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ubhŒ * ”…”�”}”(hj'h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj|'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ubhŒ. The ”…”�”}”hj'sbj )�”}”(hŒ*values*”h]”hŒvalues”…”�”}”(hjŽ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ubhŒ buffer must be of ”…”�”}”(hj'h²hh³Nh´Nubj )�”}”(hŒ *value_size*”h]”hŒ value_size”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ubhŒ * ”…”�”}”hj'sbj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj²'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ubhŒ.”…”�”}”(hj'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M’hjE&ubj )�”}”(hŒCThe *elem_flags* argument may be specified as one of the following:”h]”(hŒThe ”…”�”}”(hjË'h²hh³Nh´Nubj )�”}”(hŒ *elem_flags*”h]”hŒ elem_flags”…”�”}”(hjÓ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjË'ubhŒ3 argument may be specified as one of the following:”…”�”}”(hjË'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M˜hjE&ubj])�”}”(hhh]”jb)�”}”(hŒ�**BPF_F_LOCK** Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock. ”h]”(jh)�”}”(hŒ**BPF_F_LOCK**”h]”jø)�”}”(hjõ'h]”hŒ BPF_F_LOCK”…”�”}”(hj÷'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjó'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mžhjï'ubjy)�”}”(hhh]”j )�”}”(hŒ}Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock.”h]”hŒ}Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mœhj (ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjï'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j (h´Mžhjì'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjE&ubj )�”}”(hŒ­On success, *count* elements from the map are copied into the user buffer, with the keys copied into *keys* and the values copied into the corresponding indices in *values*.”h]”(hŒ On success, ”…”�”}”(hj/(h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj7(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/(ubhŒR elements from the map are copied into the user buffer, with the keys copied into ”…”�”}”(hj/(h²hh³Nh´Nubj )�”}”(hŒ*keys*”h]”hŒkeys”…”�”}”(hjI(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/(ubhŒ9 and the values copied into the corresponding indices in ”…”�”}”(hj/(h²hh³Nh´Nubj )�”}”(hŒ*values*”h]”hŒvalues”…”�”}”(hj[(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/(ubhŒ.”…”�”}”(hj/(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M hjE&ubj )�”}”(hŒwIf an error is returned and *errno* is not **EFAULT**, *count* is set to the number of successfully processed elements.”h]”(hŒIf an error is returned and ”…”�”}”(hjt(h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj|(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjt(ubhŒ is not ”…”�”}”(hjt(h²hh³Nh´Nubjø)�”}”(hŒ **EFAULT**”h]”hŒEFAULT”…”�”}”(hjŽ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjt(ubhŒ, ”…”�”}”(hjt(h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjt(ubhŒ9 is set to the number of successfully processed elements.”…”�”}”(hjt(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¤hjE&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj2&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jD&h´M¥hj/&ubjb)�”}”(hŒïReturn Returns zero on success. On error, -1 is returned and *errno* is set appropriately. May set *errno* to **ENOSPC** to indicate that *keys* or *values* is too small to dump an entire bucket during iteration of a hash-based map type. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjÉ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j+&h´M­hjÅ(ubjy)�”}”(hhh]”(j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hjÚ(h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjâ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚ(ubhŒ is set appropriately.”…”�”}”(hjÚ(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¨hj×(ubj )�”}”(hŒ’May set *errno* to **ENOSPC** to indicate that *keys* or *values* is too small to dump an entire bucket during iteration of a hash-based map type.”h]”(hŒMay set ”…”�”}”(hjû(h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjû(ubhŒ to ”…”�”}”(hjû(h²hh³Nh´Nubjø)�”}”(hŒ **ENOSPC**”h]”hŒENOSPC”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjû(ubhŒ to indicate that ”…”�”}”(hjû(h²hh³Nh´Nubj )�”}”(hŒ*keys*”h]”hŒkeys”…”�”}”(hj')h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjû(ubhŒ or ”…”�”}”(hjû(h²hh³Nh´Nubj )�”}”(hŒ*values*”h]”hŒvalues”…”�”}”(hj9)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjû(ubhŒQ is too small to dump an entire bucket during iteration of a hash-based map type.”…”�”}”(hjû(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M«hj×(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÅ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j+&h´M­hj/&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj,&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j+&h´M­hj^ubjb)�”}”(hX«BPF_MAP_LOOKUP_AND_DELETE_BATCH Description Iterate and delete all elements in a map. This operation has the same behavior as **BPF_MAP_LOOKUP_BATCH** with two exceptions: * Every element that is successfully returned is also deleted from the map. This is at least *count* elements. Note that *count* is both an input and an output parameter. * Upon returning with *errno* set to **EFAULT**, up to *count* elements may be deleted without returning the keys and values of the deleted elements. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_MAP_LOOKUP_AND_DELETE_BATCH”h]”hŒBPF_MAP_LOOKUP_AND_DELETE_BATCH”…”�”}”(hjt)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¿hjp)ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hX×Description Iterate and delete all elements in a map. This operation has the same behavior as **BPF_MAP_LOOKUP_BATCH** with two exceptions: * Every element that is successfully returned is also deleted from the map. This is at least *count* elements. Note that *count* is both an input and an output parameter. * Upon returning with *errno* set to **EFAULT**, up to *count* elements may be deleted without returning the keys and values of the deleted elements. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj�)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M»hj‰)ubjy)�”}”(hhh]”(j )�”}”(hŒ)Iterate and delete all elements in a map.”h]”hŒ)Iterate and delete all elements in a map.”…”�”}”(hjŸ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M±hjœ)ubj )�”}”(hŒUThis operation has the same behavior as **BPF_MAP_LOOKUP_BATCH** with two exceptions:”h]”(hŒ(This operation has the same behavior as ”…”�”}”(hj®)h²hh³Nh´Nubjø)�”}”(hŒ**BPF_MAP_LOOKUP_BATCH**”h]”hŒBPF_MAP_LOOKUP_BATCH”…”�”}”(hj¶)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj®)ubhŒ with two exceptions:”…”�”}”(hj®)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M³hjœ)ubhþ)�”}”(hhh]”(j)�”}”(hŒ¨Every element that is successfully returned is also deleted from the map. This is at least *count* elements. Note that *count* is both an input and an output parameter.”h]”j )�”}”(hŒ¨Every element that is successfully returned is also deleted from the map. This is at least *count* elements. Note that *count* is both an input and an output parameter.”h]”(hŒ[Every element that is successfully returned is also deleted from the map. This is at least ”…”�”}”(hjÖ)h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hjÞ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÖ)ubhŒ elements. Note that ”…”�”}”(hjÖ)h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hjð)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÖ)ubhŒ* is both an input and an output parameter.”…”�”}”(hjÖ)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¶hjÒ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ)ubj)�”}”(hŒ”Upon returning with *errno* set to **EFAULT**, up to *count* elements may be deleted without returning the keys and values of the deleted elements. ”h]”j )�”}”(hŒ“Upon returning with *errno* set to **EFAULT**, up to *count* elements may be deleted without returning the keys and values of the deleted elements.”h]”(hŒUpon returning with ”…”�”}”(hj*h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj*ubhŒ set to ”…”�”}”(hj*h²hh³Nh´Nubjø)�”}”(hŒ **EFAULT**”h]”hŒEFAULT”…”�”}”(hj-*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj*ubhŒ, up to ”…”�”}”(hj*h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj?*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj*ubhŒW elements may be deleted without returning the keys and values of the deleted elements.”…”�”}”(hj*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¹hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ)ubeh}”(h]”h ]”h"]”h$]”h&]”j�jÚ uh1hýh³j*h´M¶hjœ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj‰)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j›)h´M»hj†)ubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjt*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j‚)h´M¿hjp*ubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hj…*h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj…*ubhŒ is set appropriately.”…”�”}”(hj…*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¾hj‚*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjp*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j‚)h´M¿hj†)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjƒ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjp)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j‚)h´M¿hj^ubjb)�”}”(hXËBPF_MAP_UPDATE_BATCH Description Update multiple elements in a map by *key*. The *keys* and *values* are input parameters which must point to memory large enough to hold *count* items based on the key and value size of the map *map_fd*. The *keys* buffer must be of *key_size* * *count*. The *values* buffer must be of *value_size* * *count*. Each element specified in *keys* is sequentially updated to the value in the corresponding index in *values*. The *in_batch* and *out_batch* parameters are ignored and should be zeroed. The *elem_flags* argument should be specified as one of the following: **BPF_ANY** Create new elements or update a existing elements. **BPF_NOEXIST** Create new elements only if they do not exist. **BPF_EXIST** Update existing elements. **BPF_F_LOCK** Update spin_lock-ed map elements. This must be specified if the map value contains a spinlock. On success, *count* elements from the map are updated. If an error is returned and *errno* is not **EFAULT**, *count* is set to the number of successfully processed elements. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. May set *errno* to **EINVAL**, **EPERM**, **ENOMEM**, or **E2BIG**. **E2BIG** indicates that the number of elements in the map reached the *max_entries* limit specified at map creation time. May set *errno* to one of the following error codes under specific circumstances: **EEXIST** If *flags* specifies **BPF_NOEXIST** and the element with *key* already exists in the map. **ENOENT** If *flags* specifies **BPF_EXIST** and the element with *key* does not exist in the map. ”h]”(jh)�”}”(hŒBPF_MAP_UPDATE_BATCH”h]”hŒBPF_MAP_UPDATE_BATCH”…”�”}”(hjÈ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MòhjÄ*ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hX4Description Update multiple elements in a map by *key*. The *keys* and *values* are input parameters which must point to memory large enough to hold *count* items based on the key and value size of the map *map_fd*. The *keys* buffer must be of *key_size* * *count*. The *values* buffer must be of *value_size* * *count*. Each element specified in *keys* is sequentially updated to the value in the corresponding index in *values*. The *in_batch* and *out_batch* parameters are ignored and should be zeroed. The *elem_flags* argument should be specified as one of the following: **BPF_ANY** Create new elements or update a existing elements. **BPF_NOEXIST** Create new elements only if they do not exist. **BPF_EXIST** Update existing elements. **BPF_F_LOCK** Update spin_lock-ed map elements. This must be specified if the map value contains a spinlock. On success, *count* elements from the map are updated. If an error is returned and *errno* is not **EFAULT**, *count* is set to the number of successfully processed elements. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjá*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MßhjÝ*ubjy)�”}”(hhh]”(j )�”}”(hŒ+Update multiple elements in a map by *key*.”h]”(hŒ%Update multiple elements in a map by ”…”�”}”(hjó*h²hh³Nh´Nubj )�”}”(hŒ*key*”h]”hŒkey”…”�”}”(hjû*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjó*ubhŒ.”…”�”}”(hjó*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÃhjð*ubj )�”}”(hX The *keys* and *values* are input parameters which must point to memory large enough to hold *count* items based on the key and value size of the map *map_fd*. The *keys* buffer must be of *key_size* * *count*. The *values* buffer must be of *value_size* * *count*.”h]”(hŒThe ”…”�”}”(hj+h²hh³Nh´Nubj )�”}”(hŒ*keys*”h]”hŒkeys”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ubhŒ and ”…”�”}”(hj+h²hh³Nh´Nubj )�”}”(hŒ*values*”h]”hŒvalues”…”�”}”(hj.+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ubhŒF are input parameters which must point to memory large enough to hold ”…”�”}”(hj+h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj@+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ubhŒ2 items based on the key and value size of the map ”…”�”}”(hj+h²hh³Nh´Nubj )�”}”(hŒ*map_fd*”h]”hŒmap_fd”…”�”}”(hjR+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ubhŒ. The ”…”�”}”(hj+h²hh³Nh´Nubj )�”}”(hŒ*keys*”h]”hŒkeys”…”�”}”(hjd+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ubhŒ buffer must be of ”…”�”}”(hj+h²hh³Nh´Nubj )�”}”(hŒ *key_size*”h]”hŒkey_size”…”�”}”(hjv+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ubhŒ * ”…”�”}”(hj+h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hjˆ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ubhŒ. The ”…”�”}”hj+sbj )�”}”(hŒ*values*”h]”hŒvalues”…”�”}”(hjš+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ubhŒ buffer must be of ”…”�”}”(hj+h²hh³Nh´Nubj )�”}”(hŒ *value_size*”h]”hŒ value_size”…”�”}”(hj¬+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ubhŒ * ”…”�”}”hj+sbj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj¾+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+ubhŒ.”…”�”}”(hj+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÅhjð*ubj )�”}”(hŒ¹Each element specified in *keys* is sequentially updated to the value in the corresponding index in *values*. The *in_batch* and *out_batch* parameters are ignored and should be zeroed.”h]”(hŒEach element specified in ”…”�”}”(hj×+h²hh³Nh´Nubj )�”}”(hŒ*keys*”h]”hŒkeys”…”�”}”(hjß+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×+ubhŒD is sequentially updated to the value in the corresponding index in ”…”�”}”(hj×+h²hh³Nh´Nubj )�”}”(hŒ*values*”h]”hŒvalues”…”�”}”(hjñ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×+ubhŒ. The ”…”�”}”(hj×+h²hh³Nh´Nubj )�”}”(hŒ *in_batch*”h]”hŒin_batch”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×+ubhŒ and ”…”�”}”(hj×+h²hh³Nh´Nubj )�”}”(hŒ *out_batch*”h]”hŒ out_batch”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×+ubhŒ- parameters are ignored and should be zeroed.”…”�”}”(hj×+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MËhjð*ubj )�”}”(hŒFThe *elem_flags* argument should be specified as one of the following:”h]”(hŒThe ”…”�”}”(hj.,h²hh³Nh´Nubj )�”}”(hŒ *elem_flags*”h]”hŒ elem_flags”…”�”}”(hj6,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj.,ubhŒ6 argument should be specified as one of the following:”…”�”}”(hj.,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÏhjð*ubj])�”}”(hhh]”(jb)�”}”(hŒ>**BPF_ANY** Create new elements or update a existing elements.”h]”(jh)�”}”(hŒ **BPF_ANY**”h]”jø)�”}”(hjX,h]”hŒBPF_ANY”…”�”}”(hjZ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjV,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÒhjR,ubjy)�”}”(hhh]”j )�”}”(hŒ2Create new elements or update a existing elements.”h]”hŒ2Create new elements or update a existing elements.”…”�”}”(hjq,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÓhjn,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjR,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jm,h´MÒhjO,ubjb)�”}”(hŒ>**BPF_NOEXIST** Create new elements only if they do not exist.”h]”(jh)�”}”(hŒ**BPF_NOEXIST**”h]”jø)�”}”(hj’,h]”hŒ BPF_NOEXIST”…”�”}”(hj”,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj�,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÔhjŒ,ubjy)�”}”(hhh]”j )�”}”(hŒ.Create new elements only if they do not exist.”h]”hŒ.Create new elements only if they do not exist.”…”�”}”(hj«,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÕhj¨,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjŒ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j§,h´MÔhjO,ubjb)�”}”(hŒ'**BPF_EXIST** Update existing elements.”h]”(jh)�”}”(hŒ **BPF_EXIST**”h]”jø)�”}”(hjÌ,h]”hŒ BPF_EXIST”…”�”}”(hjÎ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÊ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÖhjÆ,ubjy)�”}”(hhh]”j )�”}”(hŒUpdate existing elements.”h]”hŒUpdate existing elements.”…”�”}”(hjå,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M×hjâ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÆ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³já,h´MÖhjO,ubjb)�”}”(hŒn**BPF_F_LOCK** Update spin_lock-ed map elements. This must be specified if the map value contains a spinlock. ”h]”(jh)�”}”(hŒ**BPF_F_LOCK**”h]”jø)�”}”(hj-h]”hŒ BPF_F_LOCK”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÚhj-ubjy)�”}”(hhh]”j )�”}”(hŒ^Update spin_lock-ed map elements. This must be specified if the map value contains a spinlock.”h]”hŒ^Update spin_lock-ed map elements. This must be specified if the map value contains a spinlock.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÙhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j-h´MÚhjO,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjð*ubj )�”}”(hŒ6On success, *count* elements from the map are updated.”h]”(hŒ On success, ”…”�”}”(hj@-h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hjH-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj@-ubhŒ# elements from the map are updated.”…”�”}”(hj@-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÜhjð*ubj )�”}”(hŒwIf an error is returned and *errno* is not **EFAULT**, *count* is set to the number of successfully processed elements.”h]”(hŒIf an error is returned and ”…”�”}”(hja-h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hji-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hja-ubhŒ is not ”…”�”}”(hja-h²hh³Nh´Nubjø)�”}”(hŒ **EFAULT**”h]”hŒEFAULT”…”�”}”(hj{-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hja-ubhŒ, ”…”�”}”(hja-h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hja-ubhŒ9 is set to the number of successfully processed elements.”…”�”}”(hja-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MÞhjð*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÝ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jï*h´MßhjÚ*ubjb)�”}”(hXYReturn Returns zero on success. On error, -1 is returned and *errno* is set appropriately. May set *errno* to **EINVAL**, **EPERM**, **ENOMEM**, or **E2BIG**. **E2BIG** indicates that the number of elements in the map reached the *max_entries* limit specified at map creation time. May set *errno* to one of the following error codes under specific circumstances: **EEXIST** If *flags* specifies **BPF_NOEXIST** and the element with *key* already exists in the map. **ENOENT** If *flags* specifies **BPF_EXIST** and the element with *key* does not exist in the map. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj¶-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jÖ*h´Mòhj²-ubjy)�”}”(hhh]”(j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hjÇ-h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjÏ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇ-ubhŒ is set appropriately.”…”�”}”(hjÇ-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MâhjÄ-ubj )�”}”(hŒ¾May set *errno* to **EINVAL**, **EPERM**, **ENOMEM**, or **E2BIG**. **E2BIG** indicates that the number of elements in the map reached the *max_entries* limit specified at map creation time.”h]”(hŒMay set ”…”�”}”(hjè-h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjð-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjè-ubhŒ to ”…”�”}”(hjè-h²hh³Nh´Nubjø)�”}”(hŒ **EINVAL**”h]”hŒEINVAL”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjè-ubhŒ, ”…”�”}”(hjè-h²hh³Nh´Nubjø)�”}”(hŒ **EPERM**”h]”hŒEPERM”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjè-ubhŒ, ”…”�”}”hjè-sbjø)�”}”(hŒ **ENOMEM**”h]”hŒENOMEM”…”�”}”(hj&.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjè-ubhŒ, or ”…”�”}”(hjè-h²hh³Nh´Nubjø)�”}”(hŒ **E2BIG**”h]”hŒE2BIG”…”�”}”(hj8.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjè-ubhŒ. ”…”�”}”(hjè-h²hh³Nh´Nubjø)�”}”(hŒ **E2BIG**”h]”hŒE2BIG”…”�”}”(hjJ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjè-ubhŒ> indicates that the number of elements in the map reached the ”…”�”}”(hjè-h²hh³Nh´Nubj )�”}”(hŒ *max_entries*”h]”hŒ max_entries”…”�”}”(hj\.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjè-ubhŒ& limit specified at map creation time.”…”�”}”(hjè-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MåhjÄ-ubj )�”}”(hŒQMay set *errno* to one of the following error codes under specific circumstances:”h]”(hŒMay set ”…”�”}”(hju.h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj}.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hju.ubhŒB to one of the following error codes under specific circumstances:”…”�”}”(hju.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MêhjÄ-ubj])�”}”(hhh]”(jb)�”}”(hŒe**EEXIST** If *flags* specifies **BPF_NOEXIST** and the element with *key* already exists in the map.”h]”(jh)�”}”(hŒ **EEXIST**”h]”jø)�”}”(hjŸ.h]”hŒEEXIST”…”�”}”(hj¡.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj�.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mîhj™.ubjy)�”}”(hhh]”j )�”}”(hŒZIf *flags* specifies **BPF_NOEXIST** and the element with *key* already exists in the map.”h]”(hŒIf ”…”�”}”(hj¸.h²hh³Nh´Nubj )�”}”(hŒ*flags*”h]”hŒflags”…”�”}”(hjÀ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸.ubhŒ specifies ”…”�”}”(hj¸.h²hh³Nh´Nubjø)�”}”(hŒ**BPF_NOEXIST**”h]”hŒ BPF_NOEXIST”…”�”}”(hjÒ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj¸.ubhŒ and the element with ”…”�”}”(hj¸.h²hh³Nh´Nubj )�”}”(hŒ*key*”h]”hŒkey”…”�”}”(hjä.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸.ubhŒ already exists in the map.”…”�”}”(hj¸.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j´.h´Mîhjµ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj™.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j´.h´Mîhj–.ubjb)�”}”(hŒd**ENOENT** If *flags* specifies **BPF_EXIST** and the element with *key* does not exist in the map. ”h]”(jh)�”}”(hŒ **ENOENT**”h]”jø)�”}”(hj/h]”hŒENOENT”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj /ubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jÖ*h´Mòhj/ubjy)�”}”(hhh]”j )�”}”(hŒXIf *flags* specifies **BPF_EXIST** and the element with *key* does not exist in the map.”h]”(hŒIf ”…”�”}”(hj&/h²hh³Nh´Nubj )�”}”(hŒ*flags*”h]”hŒflags”…”�”}”(hj./h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&/ubhŒ specifies ”…”�”}”(hj&/h²hh³Nh´Nubjø)�”}”(hŒ **BPF_EXIST**”h]”hŒ BPF_EXIST”…”�”}”(hj@/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj&/ubhŒ and the element with ”…”�”}”(hj&/h²hh³Nh´Nubj )�”}”(hŒ*key*”h]”hŒkey”…”�”}”(hjR/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&/ubhŒ does not exist in the map.”…”�”}”(hj&/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mñhj#/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jÖ*h´Mòhj–.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÄ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj²-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jÖ*h´MòhjÚ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj×*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÄ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jÖ*h´Mòhj^ubjb)�”}”(hXqBPF_MAP_DELETE_BATCH Description Delete multiple elements in a map by *key*. The *keys* parameter is an input parameter which must point to memory large enough to hold *count* items based on the key size of the map *map_fd*, that is, *key_size* * *count*. Each element specified in *keys* is sequentially deleted. The *in_batch*, *out_batch*, and *values* parameters are ignored and should be zeroed. The *elem_flags* argument may be specified as one of the following: **BPF_F_LOCK** Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock. On success, *count* elements from the map are updated. If an error is returned and *errno* is not **EFAULT**, *count* is set to the number of successfully processed elements. If *errno* is **EFAULT**, up to *count* elements may be been deleted. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_MAP_DELETE_BATCH”h]”hŒBPF_MAP_DELETE_BATCH”…”�”}”(hjŸ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhj›/ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hX`Description Delete multiple elements in a map by *key*. The *keys* parameter is an input parameter which must point to memory large enough to hold *count* items based on the key size of the map *map_fd*, that is, *key_size* * *count*. Each element specified in *keys* is sequentially deleted. The *in_batch*, *out_batch*, and *values* parameters are ignored and should be zeroed. The *elem_flags* argument may be specified as one of the following: **BPF_F_LOCK** Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock. On success, *count* elements from the map are updated. If an error is returned and *errno* is not **EFAULT**, *count* is set to the number of successfully processed elements. If *errno* is **EFAULT**, up to *count* elements may be been deleted. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj¸/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M hj´/ubjy)�”}”(hhh]”(j )�”}”(hŒ+Delete multiple elements in a map by *key*.”h]”(hŒ%Delete multiple elements in a map by ”…”�”}”(hjÊ/h²hh³Nh´Nubj )�”}”(hŒ*key*”h]”hŒkey”…”�”}”(hjÒ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÊ/ubhŒ.”…”�”}”(hjÊ/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MöhjÇ/ubj )�”}”(hŒ²The *keys* parameter is an input parameter which must point to memory large enough to hold *count* items based on the key size of the map *map_fd*, that is, *key_size* * *count*.”h]”(hŒThe ”…”�”}”(hjë/h²hh³Nh´Nubj )�”}”(hŒ*keys*”h]”hŒkeys”…”�”}”(hjó/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë/ubhŒQ parameter is an input parameter which must point to memory large enough to hold ”…”�”}”(hjë/h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë/ubhŒ( items based on the key size of the map ”…”�”}”(hjë/h²hh³Nh´Nubj )�”}”(hŒ*map_fd*”h]”hŒmap_fd”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë/ubhŒ , that is, ”…”�”}”(hjë/h²hh³Nh´Nubj )�”}”(hŒ *key_size*”h]”hŒkey_size”…”�”}”(hj)0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë/ubhŒ * ”…”�”}”(hjë/h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj;0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë/ubhŒ.”…”�”}”(hjë/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MøhjÇ/ubj )�”}”(hŒ�Each element specified in *keys* is sequentially deleted. The *in_batch*, *out_batch*, and *values* parameters are ignored and should be zeroed.”h]”(hŒEach element specified in ”…”�”}”(hjT0h²hh³Nh´Nubj )�”}”(hŒ*keys*”h]”hŒkeys”…”�”}”(hj\0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjT0ubhŒ is sequentially deleted. The ”…”�”}”(hjT0h²hh³Nh´Nubj )�”}”(hŒ *in_batch*”h]”hŒin_batch”…”�”}”(hjn0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjT0ubhŒ, ”…”�”}”(hjT0h²hh³Nh´Nubj )�”}”(hŒ *out_batch*”h]”hŒ out_batch”…”�”}”(hj€0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjT0ubhŒ, and ”…”�”}”(hjT0h²hh³Nh´Nubj )�”}”(hŒ*values*”h]”hŒvalues”…”�”}”(hj’0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjT0ubhŒ- parameters are ignored and should be zeroed.”…”�”}”(hjT0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MühjÇ/ubj )�”}”(hŒCThe *elem_flags* argument may be specified as one of the following:”h]”(hŒThe ”…”�”}”(hj«0h²hh³Nh´Nubj )�”}”(hŒ *elem_flags*”h]”hŒ elem_flags”…”�”•#Õ}”(hj³0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj«0ubhŒ3 argument may be specified as one of the following:”…”�”}”(hj«0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MhjÇ/ubj])�”}”(hhh]”jb)�”}”(hŒ�**BPF_F_LOCK** Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock. ”h]”(jh)�”}”(hŒ**BPF_F_LOCK**”h]”jø)�”}”(hjÕ0h]”hŒ BPF_F_LOCK”…”�”}”(hj×0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjÓ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MhjÏ0ubjy)�”}”(hhh]”j )�”}”(hŒ}Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock.”h]”hŒ}Look up the value of a spin-locked map without returning the lock. This must be specified if the elements contain a spinlock.”…”�”}”(hjî0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhjë0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÏ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jê0h´MhjÌ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÇ/ubj )�”}”(hŒ6On success, *count* elements from the map are updated.”h]”(hŒ On success, ”…”�”}”(hj1h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj1ubhŒ# elements from the map are updated.”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MhjÇ/ubj )�”}”(hŒ½If an error is returned and *errno* is not **EFAULT**, *count* is set to the number of successfully processed elements. If *errno* is **EFAULT**, up to *count* elements may be been deleted.”h]”(hŒIf an error is returned and ”…”�”}”(hj01h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj81h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj01ubhŒ is not ”…”�”}”(hj01h²hh³Nh´Nubjø)�”}”(hŒ **EFAULT**”h]”hŒEFAULT”…”�”}”(hjJ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj01ubhŒ, ”…”�”}”(hj01h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj\1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj01ubhŒ= is set to the number of successfully processed elements. If ”…”�”}”(hj01h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjn1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj01ubhŒ is ”…”�”}”(hj01h²hh³Nh´Nubjø)�”}”(hŒ **EFAULT**”h]”hŒEFAULT”…”�”}”(hj€1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj01ubhŒ, up to ”…”�”}”(hj01h²hh³Nh´Nubj )�”}”(hŒ*count*”h]”hŒcount”…”�”}”(hj’1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj01ubhŒ elements may be been deleted.”…”�”}”(hj01h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M hjÇ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj´/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jÆ/h´M hj±/ubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj»1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j­/h´Mhj·1ubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hjÌ1h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjÔ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÌ1ubhŒ is set appropriately.”…”�”}”(hjÌ1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MhjÉ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj·1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j­/h´Mhj±/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj®/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj›/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j­/h´Mhj^ubjb)�”}”(hXLBPF_LINK_CREATE Description Attach an eBPF program to a *target_fd* at the specified *attach_type* hook and return a file descriptor handle for managing the link. Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒBPF_LINK_CREATE”h]”hŒBPF_LINK_CREATE”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhj 2ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hŒ“Description Attach an eBPF program to a *target_fd* at the specified *attach_type* hook and return a file descriptor handle for managing the link. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj(2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhj$2ubjy)�”}”(hhh]”j )�”}”(hŒ†Attach an eBPF program to a *target_fd* at the specified *attach_type* hook and return a file descriptor handle for managing the link.”h]”(hŒAttach an eBPF program to a ”…”�”}”(hj:2h²hh³Nh´Nubj )�”}”(hŒ *target_fd*”h]”hŒ target_fd”…”�”}”(hjB2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj:2ubhŒ at the specified ”…”�”}”(hj:2h²hh³Nh´Nubj )�”}”(hŒ *attach_type*”h]”hŒ attach_type”…”�”}”(hjT2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj:2ubhŒ@ hook and return a file descriptor handle for managing the link.”…”�”}”(hj:2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhj72ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj$2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j62h´Mhj!2ubjb)�”}”(hŒ€Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj}2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j2h´Mhjy2ubjy)�”}”(hhh]”j )�”}”(hŒxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, ”…”�”}”(hjŽ2h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj–2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŽ2ubhŒ is set appropriately).”…”�”}”(hjŽ2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhj‹2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjy2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j2h´Mhj!2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj 2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j2h´Mhj^ubjb)�”}”(hŒÝBPF_LINK_UPDATE Description Update the eBPF program in the specified *link_fd* to *new_prog_fd*. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_LINK_UPDATE”h]”hŒBPF_LINK_UPDATE”…”�”}”(hjÑ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M$hjÍ2ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hŒQDescription Update the eBPF program in the specified *link_fd* to *new_prog_fd*. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjê2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M hjæ2ubjy)�”}”(hhh]”j )�”}”(hŒDUpdate the eBPF program in the specified *link_fd* to *new_prog_fd*.”h]”(hŒ)Update the eBPF program in the specified ”…”�”}”(hjü2h²hh³Nh´Nubj )�”}”(hŒ *link_fd*”h]”hŒlink_fd”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjü2ubhŒ to ”…”�”}”(hjü2h²hh³Nh´Nubj )�”}”(hŒ *new_prog_fd*”h]”hŒ new_prog_fd”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjü2ubhŒ.”…”�”}”(hjü2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mhjù2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjæ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jø2h´M hjã2ubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj?3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jß2h´M$hj;3ubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hjP3h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjX3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjP3ubhŒ is set appropriately.”…”�”}”(hjP3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M#hjM3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj;3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jß2h´M$hjã2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjà2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÍ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jß2h´M$hj^ubjb)�”}”(hXBPF_LINK_GET_FD_BY_ID Description Open a file descriptor for the eBPF Link corresponding to *link_id*. Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒBPF_LINK_GET_FD_BY_ID”h]”hŒBPF_LINK_GET_FD_BY_ID”…”�”}”(hj“3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M-hj�3ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hŒQDescription Open a file descriptor for the eBPF Link corresponding to *link_id*. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj¬3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M)hj¨3ubjy)�”}”(hhh]”j )�”}”(hŒDOpen a file descriptor for the eBPF Link corresponding to *link_id*.”h]”(hŒ:Open a file descriptor for the eBPF Link corresponding to ”…”�”}”(hj¾3h²hh³Nh´Nubj )�”}”(hŒ *link_id*”h]”hŒlink_id”…”�”}”(hjÆ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¾3ubhŒ.”…”�”}”(hj¾3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M(hj»3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj¨3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jº3h´M)hj¥3ubjb)�”}”(hŒ€Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjï3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j¡3h´M-hjë3ubjy)�”}”(hhh]”j )�”}”(hŒxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, ”…”�”}”(hj4h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj4ubhŒ is set appropriately).”…”�”}”(hj4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M,hjý3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjë3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j¡3h´M-hj¥3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj¢3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj�3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j¡3h´M-hj^ubjb)�”}”(hXÏBPF_LINK_GET_NEXT_ID Description Fetch the next eBPF link currently loaded into the kernel. Looks for the eBPF link with an id greater than *start_id* and updates *next_id* on success. If no other eBPF links remain with ids higher than *start_id*, returns -1 and sets *errno* to **ENOENT**. Return Returns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_LINK_GET_NEXT_ID”h]”hŒBPF_LINK_GET_NEXT_ID”…”�”}”(hjC4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M:hj?4ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXDescription Fetch the next eBPF link currently loaded into the kernel. Looks for the eBPF link with an id greater than *start_id* and updates *next_id* on success. If no other eBPF links remain with ids higher than *start_id*, returns -1 and sets *errno* to **ENOENT**. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj\4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M6hjX4ubjy)�”}”(hhh]”(j )�”}”(hŒ:Fetch the next eBPF link currently loaded into the kernel.”h]”hŒ:Fetch the next eBPF link currently loaded into the kernel.”…”�”}”(hjn4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M1hjk4ubj )�”}”(hŒÆLooks for the eBPF link with an id greater than *start_id* and updates *next_id* on success. If no other eBPF links remain with ids higher than *start_id*, returns -1 and sets *errno* to **ENOENT**.”h]”(hŒ0Looks for the eBPF link with an id greater than ”…”�”}”(hj}4h²hh³Nh´Nubj )�”}”(hŒ *start_id*”h]”hŒstart_id”…”�”}”(hj…4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}4ubhŒ and updates ”…”�”}”(hj}4h²hh³Nh´Nubj )�”}”(hŒ *next_id*”h]”hŒnext_id”…”�”}”(hj—4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}4ubhŒ@ on success. If no other eBPF links remain with ids higher than ”…”�”}”(hj}4h²hh³Nh´Nubj )�”}”(hŒ *start_id*”h]”hŒstart_id”…”�”}”(hj©4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}4ubhŒ, returns -1 and sets ”…”�”}”(hj}4h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj»4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}4ubhŒ to ”…”�”}”(hj}4h²hh³Nh´Nubjø)�”}”(hŒ **ENOENT**”h]”hŒENOENT”…”�”}”(hjÍ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj}4ubhŒ.”…”�”}”(hj}4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M3hjk4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjX4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jj4h´M6hjU4ubjb)�”}”(hŒrReturn Returns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjö4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jQ4h´M:hjò4ubjy)�”}”(hhh]”j )�”}”(hŒjReturns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately.”h]”(hŒMReturns zero on success. On error, or when no id remains, -1 is returned and ”…”�”}”(hj5h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj5ubhŒ is set appropriately.”…”�”}”(hj5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M9hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjò4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jQ4h´M:hjU4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjR4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj?4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jQ4h´M:hj^ubjb)�”}”(hX6BPF_ENABLE_STATS Description Enable eBPF runtime statistics gathering. Runtime statistics gathering for the eBPF runtime is disabled by default to minimize the corresponding performance overhead. This command enables statistics globally. Multiple programs may independently enable statistics. After gathering the desired statistics, eBPF runtime statistics may be disabled again by calling **close**\ (2) for the file descriptor returned by this function. Statistics will only be disabled system-wide when all outstanding file descriptors returned by prior calls for this subcommand are closed. Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒBPF_ENABLE_STATS”h]”hŒBPF_ENABLE_STATS”…”�”}”(hjJ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MMhjF5ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXDDescription Enable eBPF runtime statistics gathering. Runtime statistics gathering for the eBPF runtime is disabled by default to minimize the corresponding performance overhead. This command enables statistics globally. Multiple programs may independently enable statistics. After gathering the desired statistics, eBPF runtime statistics may be disabled again by calling **close**\ (2) for the file descriptor returned by this function. Statistics will only be disabled system-wide when all outstanding file descriptors returned by prior calls for this subcommand are closed. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjc5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MIhj_5ubjy)�”}”(hhh]”(j )�”}”(hŒ)Enable eBPF runtime statistics gathering.”h]”hŒ)Enable eBPF runtime statistics gathering.”…”�”}”(hju5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M>hjr5ubj )�”}”(hŒ¦Runtime statistics gathering for the eBPF runtime is disabled by default to minimize the corresponding performance overhead. This command enables statistics globally.”h]”hŒ¦Runtime statistics gathering for the eBPF runtime is disabled by default to minimize the corresponding performance overhead. This command enables statistics globally.”…”�”}”(hj„5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M@hjr5ubj )�”}”(hXdMultiple programs may independently enable statistics. After gathering the desired statistics, eBPF runtime statistics may be disabled again by calling **close**\ (2) for the file descriptor returned by this function. Statistics will only be disabled system-wide when all outstanding file descriptors returned by prior calls for this subcommand are closed.”h]”(hŒ˜Multiple programs may independently enable statistics. After gathering the desired statistics, eBPF runtime statistics may be disabled again by calling ”…”�”}”(hj“5h²hh³Nh´Nubjø)�”}”(hŒ **close**”h]”hŒclose”…”�”}”(hj›5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj“5ubhŒÃ (2) for the file descriptor returned by this function. Statistics will only be disabled system-wide when all outstanding file descriptors returned by prior calls for this subcommand are closed.”…”�”}”(hj“5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MDhjr5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj_5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jq5h´MIhj\5ubjb)�”}”(hŒ€Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjÄ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jX5h´MMhjÀ5ubjy)�”}”(hhh]”j )�”}”(hŒxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, ”…”�”}”(hjÕ5h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjÝ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÕ5ubhŒ is set appropriately).”…”�”}”(hjÕ5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MLhjÒ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÀ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jX5h´MMhj\5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjY5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjF5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jX5h´MMhj^ubjb)�”}”(hX|BPF_ITER_CREATE Description Create an iterator on top of the specified *link_fd* (as previously created using **BPF_LINK_CREATE**) and return a file descriptor that can be used to trigger the iteration. If the resulting file descriptor is pinned to the filesystem using **BPF_OBJ_PIN**, then subsequent **read**\ (2) syscalls for that path will trigger the iterator to read kernel state using the eBPF program attached to *link_fd*. Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒBPF_ITER_CREATE”h]”hŒBPF_ITER_CREATE”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M\hj6ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hX£Description Create an iterator on top of the specified *link_fd* (as previously created using **BPF_LINK_CREATE**) and return a file descriptor that can be used to trigger the iteration. If the resulting file descriptor is pinned to the filesystem using **BPF_OBJ_PIN**, then subsequent **read**\ (2) syscalls for that path will trigger the iterator to read kernel state using the eBPF program attached to *link_fd*. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj16h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MXhj-6ubjy)�”}”(hhh]”(j )�”}”(hŒ®Create an iterator on top of the specified *link_fd* (as previously created using **BPF_LINK_CREATE**) and return a file descriptor that can be used to trigger the iteration.”h]”(hŒ+Create an iterator on top of the specified ”…”�”}”(hjC6h²hh³Nh´Nubj )�”}”(hŒ *link_fd*”h]”hŒlink_fd”…”�”}”(hjK6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjC6ubhŒ (as previously created using ”…”�”}”(hjC6h²hh³Nh´Nubjø)�”}”(hŒ**BPF_LINK_CREATE**”h]”hŒBPF_LINK_CREATE”…”�”}”(hj]6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjC6ubhŒI) and return a file descriptor that can be used to trigger the iteration.”…”�”}”(hjC6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MQhj@6ubj )�”}”(hŒæIf the resulting file descriptor is pinned to the filesystem using **BPF_OBJ_PIN**, then subsequent **read**\ (2) syscalls for that path will trigger the iterator to read kernel state using the eBPF program attached to *link_fd*.”h]”(hŒDIf the resulting file descriptor is pinned to the filesystem using ”…”�”}”(hjv6h²hh³Nh´Nubjø)�”}”(hŒ**BPF_OBJ_PIN**”h]”hŒ BPF_OBJ_PIN”…”�”}”(hj~6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjv6ubhŒ, then subsequent ”…”�”}”(hjv6h²hh³Nh´Nubjø)�”}”(hŒ**read**”h]”hŒread”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hjv6ubhŒo (2) syscalls for that path will trigger the iterator to read kernel state using the eBPF program attached to ”…”�”}”(hjv6h²hh³Nh´Nubj )�”}”(hŒ *link_fd*”h]”hŒlink_fd”…”�”}”(hj¢6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjv6ubhŒ.”…”�”}”(hjv6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MUhj@6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj-6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j?6h´MXhj*6ubjb)�”}”(hŒ€Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjË6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j&6h´M\hjÇ6ubjy)�”}”(hhh]”j )�”}”(hŒxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, ”…”�”}”(hjÜ6h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjä6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜ6ubhŒ is set appropriately).”…”�”}”(hjÜ6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M[hjÙ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÇ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j&6h´M\hj*6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj'6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j&6h´M\hj^ubjb)�”}”(hŒëBPF_LINK_DETACH Description Forcefully detach the specified *link_fd* from its corresponding attachment point. Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_LINK_DETACH”h]”hŒBPF_LINK_DETACH”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mehj7ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hŒ_Description Forcefully detach the specified *link_fd* from its corresponding attachment point. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj87h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mahj47ubjy)�”}”(hhh]”j )�”}”(hŒRForcefully detach the specified *link_fd* from its corresponding attachment point.”h]”(hŒ Forcefully detach the specified ”…”�”}”(hjJ7h²hh³Nh´Nubj )�”}”(hŒ *link_fd*”h]”hŒlink_fd”…”�”}”(hjR7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjJ7ubhŒ) from its corresponding attachment point.”…”�”}”(hjJ7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M`hjG7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj47ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jF7h´Mahj17ubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj{7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j-7h´Mehjw7ubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hjŒ7h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj”7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒ7ubhŒ is set appropriately.”…”�”}”(hjŒ7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mdhj‰7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjw7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j-7h´Mehj17ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj.7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j-7h´Mehj^ubjb)�”}”(hX1BPF_PROG_BIND_MAP Description Bind a map to the lifetime of an eBPF program. The map identified by *map_fd* is bound to the program identified by *prog_fd* and only released when *prog_fd* is released. This may be used in cases where metadata should be associated with a program which otherwise does not contain any references to the map (for example, embedded in the eBPF program instructions). Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒBPF_PROG_BIND_MAP”h]”hŒBPF_PROG_BIND_MAP”…”�”}”(hjÏ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MthjË7ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hX{Description Bind a map to the lifetime of an eBPF program. The map identified by *map_fd* is bound to the program identified by *prog_fd* and only released when *prog_fd* is released. This may be used in cases where metadata should be associated with a program which otherwise does not contain any references to the map (for example, embedded in the eBPF program instructions). ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjè7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mphjä7ubjy)�”}”(hhh]”(j )�”}”(hŒ.Bind a map to the lifetime of an eBPF program.”h]”hŒ.Bind a map to the lifetime of an eBPF program.”…”�”}”(hjú7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mihj÷7ubj )�”}”(hX>The map identified by *map_fd* is bound to the program identified by *prog_fd* and only released when *prog_fd* is released. This may be used in cases where metadata should be associated with a program which otherwise does not contain any references to the map (for example, embedded in the eBPF program instructions).”h]”(hŒThe map identified by ”…”�”}”(hj 8h²hh³Nh´Nubj )�”}”(hŒ*map_fd*”h]”hŒmap_fd”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj 8ubhŒ' is bound to the program identified by ”…”�”}”(hj 8h²hh³Nh´Nubj )�”}”(hŒ *prog_fd*”h]”hŒprog_fd”…”�”}”(hj#8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj 8ubhŒ and only released when ”…”�”}”(hj 8h²hh³Nh´Nubj )�”}”(hŒ *prog_fd*”h]”hŒprog_fd”…”�”}”(hj58h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj 8ubhŒÏ is released. This may be used in cases where metadata should be associated with a program which otherwise does not contain any references to the map (for example, embedded in the eBPF program instructions).”…”�”}”(hj 8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mkhj÷7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjä7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jö7h´Mphjá7ubjb)�”}”(hŒ[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj^8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jÝ7h´MthjZ8ubjy)�”}”(hhh]”j )�”}”(hŒSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.”h]”(hŒ6Returns zero on success. On error, -1 is returned and ”…”�”}”(hjo8h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjw8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjo8ubhŒ is set appropriately.”…”�”}”(hjo8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mshjl8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjZ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jÝ7h´Mthjá7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÞ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjË7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jÝ7h´Mthj^ubjb)�”}”(hX¾BPF_TOKEN_CREATE Description Create BPF token with embedded information about what BPF-related functionality it allows: - a set of allowed bpf() syscall commands; - a set of allowed BPF map types to be created with BPF_MAP_CREATE command, if BPF_MAP_CREATE itself is allowed; - a set of allowed BPF program types and BPF program attach types to be loaded with BPF_PROG_LOAD command, if BPF_PROG_LOAD itself is allowed. BPF token is created (derived) from an instance of BPF FS, assuming it has necessary delegation mount options specified. This BPF token can be passed as an extra parameter to various bpf() syscall commands to grant BPF subsystem functionality to unprivileged processes. When created, BPF token is "associated" with the owning user namespace of BPF FS instance (super block) that it was derived from, and subsequent BPF operations performed with BPF token would be performing capabilities checks (i.e., CAP_BPF, CAP_PERFMON, CAP_NET_ADMIN, CAP_SYS_ADMIN) within that user namespace. Without BPF token, such capabilities have to be granted in init user namespace, making bpf() syscall incompatible with user namespace, for the most part. Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒBPF_TOKEN_CREATE”h]”hŒBPF_TOKEN_CREATE”…”�”}”(hj²8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M’hj®8ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hXtDescription Create BPF token with embedded information about what BPF-related functionality it allows: - a set of allowed bpf() syscall commands; - a set of allowed BPF map types to be created with BPF_MAP_CREATE command, if BPF_MAP_CREATE itself is allowed; - a set of allowed BPF program types and BPF program attach types to be loaded with BPF_PROG_LOAD command, if BPF_PROG_LOAD itself is allowed. BPF token is created (derived) from an instance of BPF FS, assuming it has necessary delegation mount options specified. This BPF token can be passed as an extra parameter to various bpf() syscall commands to grant BPF subsystem functionality to unprivileged processes. When created, BPF token is "associated" with the owning user namespace of BPF FS instance (super block) that it was derived from, and subsequent BPF operations performed with BPF token would be performing capabilities checks (i.e., CAP_BPF, CAP_PERFMON, CAP_NET_ADMIN, CAP_SYS_ADMIN) within that user namespace. Without BPF token, such capabilities have to be granted in init user namespace, making bpf() syscall incompatible with user namespace, for the most part. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjË8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MŽhjÇ8ubjy)�”}”(hhh]”(j )�”}”(hX…Create BPF token with embedded information about what BPF-related functionality it allows: - a set of allowed bpf() syscall commands; - a set of allowed BPF map types to be created with BPF_MAP_CREATE command, if BPF_MAP_CREATE itself is allowed; - a set of allowed BPF program types and BPF program attach types to be loaded with BPF_PROG_LOAD command, if BPF_PROG_LOAD itself is allowed.”h]”hX…Create BPF token with embedded information about what BPF-related functionality it allows: - a set of allowed bpf() syscall commands; - a set of allowed BPF map types to be created with BPF_MAP_CREATE command, if BPF_MAP_CREATE itself is allowed; - a set of allowed BPF program types and BPF program attach types to be loaded with BPF_PROG_LOAD command, if BPF_PROG_LOAD itself is allowed.”…”�”}”(hjÝ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´MxhjÚ8ubj )�”}”(hX BPF token is created (derived) from an instance of BPF FS, assuming it has necessary delegation mount options specified. This BPF token can be passed as an extra parameter to various bpf() syscall commands to grant BPF subsystem functionality to unprivileged processes.”h]”hX BPF token is created (derived) from an instance of BPF FS, assuming it has necessary delegation mount options specified. This BPF token can be passed as an extra parameter to various bpf() syscall commands to grant BPF subsystem functionality to unprivileged processes.”…”�”}”(hjì8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M�hjÚ8ubj )�”}”(hXÑWhen created, BPF token is "associated" with the owning user namespace of BPF FS instance (super block) that it was derived from, and subsequent BPF operations performed with BPF token would be performing capabilities checks (i.e., CAP_BPF, CAP_PERFMON, CAP_NET_ADMIN, CAP_SYS_ADMIN) within that user namespace. Without BPF token, such capabilities have to be granted in init user namespace, making bpf() syscall incompatible with user namespace, for the most part.”h]”hXÕWhen created, BPF token is “associatedâ€� with the owning user namespace of BPF FS instance (super block) that it was derived from, and subsequent BPF operations performed with BPF token would be performing capabilities checks (i.e., CAP_BPF, CAP_PERFMON, CAP_NET_ADMIN, CAP_SYS_ADMIN) within that user namespace. Without BPF token, such capabilities have to be granted in init user namespace, making bpf() syscall incompatible with user namespace, for the most part.”…”�”}”(hjû8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M‡hjÚ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÇ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jÙ8h´MŽhjÄ8ubjb)�”}”(hŒ€Return A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jÀ8h´M’hj9ubjy)�”}”(hhh]”j )�”}”(hŒxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, ”…”�”}”(hj+9h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj39h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+9ubhŒ is set appropriately).”…”�”}”(hj+9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M‘hj(9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jÀ8h´M’hjÄ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÁ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj®8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jÀ8h´M’hj^ubjb)�”}”(hXÌBPF_PROG_STREAM_READ_BY_FD Description Read data of a program's BPF stream. The program is identified by *prog_fd*, and the stream is identified by the *stream_id*. The data is copied to a buffer pointed to by *stream_buf*, and filled less than or equal to *stream_buf_len* bytes. Return Number of bytes read from the stream on success, or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒBPF_PROG_STREAM_READ_BY_FD”h]”hŒBPF_PROG_STREAM_READ_BY_FD”…”�”}”(hjn9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M�hjj9ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hŒþDescription Read data of a program's BPF stream. The program is identified by *prog_fd*, and the stream is identified by the *stream_id*. The data is copied to a buffer pointed to by *stream_buf*, and filled less than or equal to *stream_buf_len* bytes. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj‡9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M™hjƒ9ubjy)�”}”(hhh]”j )�”}”(hŒñRead data of a program's BPF stream. The program is identified by *prog_fd*, and the stream is identified by the *stream_id*. The data is copied to a buffer pointed to by *stream_buf*, and filled less than or equal to *stream_buf_len* bytes.”h]”(hŒDRead data of a program’s BPF stream. The program is identified by ”…”�”}”(hj™9h²hh³Nh´Nubj )�”}”(hŒ *prog_fd*”h]”hŒprog_fd”…”�”}”(hj¡9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™9ubhŒ&, and the stream is identified by the ”…”�”}”(hj™9h²hh³Nh´Nubj )�”}”(hŒ *stream_id*”h]”hŒ stream_id”…”�”}”(hj³9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™9ubhŒ/. The data is copied to a buffer pointed to by ”…”�”}”(hj™9h²hh³Nh´Nubj )�”}”(hŒ *stream_buf*”h]”hŒ stream_buf”…”�”}”(hjÅ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™9ubhŒ#, and filled less than or equal to ”…”�”}”(hj™9h²hh³Nh´Nubj )�”}”(hŒ*stream_buf_len*”h]”hŒstream_buf_len”…”�”}”(hj×9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™9ubhŒ bytes.”…”�”}”(hj™9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M–hj–9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjƒ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j•9h´M™hj€9ubjb)�”}”(hŒ‚Return Number of bytes read from the stream on success, or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³j|9h´M�hjü9ubjy)�”}”(hhh]”j )�”}”(hŒzNumber of bytes read from the stream on success, or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒ\Number of bytes read from the stream on success, or -1 if an error occurred (in which case, ”…”�”}”(hj:h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj:ubhŒ is set appropriately).”…”�”}”(hj:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mœhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjü9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j|9h´M�hj€9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hj}9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j|9h´M�hj^ubjb)�”}”(hX9BPF_PROG_ASSOC_STRUCT_OPS Description Associate a BPF program with a struct_ops map. The struct_ops map is identified by *map_fd* and the BPF program is identified by *prog_fd*. Return 0 on success or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒBPF_PROG_ASSOC_STRUCT_OPS”h]”hŒBPF_PROG_ASSOC_STRUCT_OPS”…”�”}”(hjT:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M§hjP:ubjy)�”}”(hhh]”j])�”}”(hhh]”(jb)�”}”(hŒ˜Description Associate a BPF program with a struct_ops map. The struct_ops map is identified by *map_fd* and the BPF program is identified by *prog_fd*. ”h]”(jh)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjm:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M£hji:ubjy)�”}”(hhh]”j )�”}”(hŒ‹Associate a BPF program with a struct_ops map. The struct_ops map is identified by *map_fd* and the BPF program is identified by *prog_fd*.”h]”(hŒSAssociate a BPF program with a struct_ops map. The struct_ops map is identified by ”…”�”}”(hj:h²hh³Nh´Nubj )�”}”(hŒ*map_fd*”h]”hŒmap_fd”…”�”}”(hj‡:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj:ubhŒ& and the BPF program is identified by ”…”�”}”(hj:h²hh³Nh´Nubj )�”}”(hŒ *prog_fd*”h]”hŒprog_fd”…”�”}”(hj™:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj:ubhŒ.”…”�”}”(hj:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¡hj|:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhji:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j{:h´M£hjf:ubjb)�”}”(hŒ^Return 0 on success or -1 if an error occurred (in which case, *errno* is set appropriately). ”h]”(jh)�”}”(hŒReturn”h]”hŒReturn”…”�”}”(hjÂ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³jb:h´M§hj¾:ubjy)�”}”(hhh]”j )�”}”(hŒV0 on success or -1 if an error occurred (in which case, *errno* is set appropriately).”h]”(hŒ80 on success or -1 if an error occurred (in which case, ”…”�”}”(hjÓ:h²hh³Nh´Nubj )�”}”(hŒ*errno*”h]”hŒerrno”…”�”}”(hjÛ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓ:ubhŒ is set appropriately).”…”�”}”(hjÓ:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¦hjÐ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj¾:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jb:h´M§hjf:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjc:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjP:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³jb:h´M§hj^ubjb)�”}”(hXÞNOTES eBPF objects (maps and programs) can be shared between processes. * After **fork**\ (2), the child inherits file descriptors referring to the same eBPF objects. * File descriptors referring to eBPF objects can be transferred over **unix**\ (7) domain sockets. * File descriptors referring to eBPF objects can be duplicated in the usual way, using **dup**\ (2) and similar calls. * File descriptors referring to eBPF objects can be pinned to the filesystem using the **BPF_OBJ_PIN** command of **bpf**\ (2). An eBPF object is deallocated only after all file descriptors referring to the object have been closed and no references remain pinned to the filesystem or attached (for example, bound to a program or device). ”h]”(jh)�”}”(hŒNOTES”h]”hŒNOTES”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jgh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¸hj;ubjy)�”}”(hhh]”(j )�”}”(hŒAeBPF objects (maps and programs) can be shared between processes.”h]”hŒAeBPF objects (maps and programs) can be shared between processes.”…”�”}”(hj(;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mªhj%;ubhþ)�”}”(hhh]”(j)�”}”(hŒ\After **fork**\ (2), the child inherits file descriptors referring to the same eBPF objects.”h]”j )�”}”(hŒ\After **fork**\ (2), the child inherits file descriptors referring to the same eBPF objects.”h]”(hŒAfter ”…”�”}”(hj>;h²hh³Nh´Nubjø)�”}”(hŒ**fork**”h]”hŒfork”…”�”}”(hjF;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj>;ubhŒN (2), the child inherits file descriptors referring to the same eBPF objects.”…”�”}”(hj>;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M¬hj:;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7;ubj)�”}”(hŒ`File descriptors referring to eBPF objects can be transferred over **unix**\ (7) domain sockets.”h]”j )�”}”(hŒ`File descriptors referring to eBPF objects can be transferred over **unix**\ (7) domain sockets.”h]”(hŒCFile descriptors referring to eBPF objects can be transferred over ”…”�”}”(hji;h²hh³Nh´Nubjø)�”}”(hŒ**unix**”h]”hŒunix”…”�”}”(hjq;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hji;ubhŒ (7) domain sockets.”…”�”}”(hji;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M®hje;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7;ubj)�”}”(hŒtFile descriptors referring to eBPF objects can be duplicated in the usual way, using **dup**\ (2) and similar calls.”h]”j )�”}”(hŒtFile descriptors referring to eBPF objects can be duplicated in the usual way, using **dup**\ (2) and similar calls.”h]”(hŒUFile descriptors referring to eBPF objects can be duplicated in the usual way, using ”…”�”}”(hj”;h²hh³Nh´Nubjø)�”}”(hŒ**dup**”h]”hŒdup”…”�”}”(hjœ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj”;ubhŒ (2) and similar calls.”…”�”}”(hj”;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M°hj�;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7;ubj)�”}”(hŒ~File descriptors referring to eBPF objects can be pinned to the filesystem using the **BPF_OBJ_PIN** command of **bpf**\ (2). ”h]”j )�”}”(hŒ}File descriptors referring to eBPF objects can be pinned to the filesystem using the **BPF_OBJ_PIN** command of **bpf**\ (2).”h]”(hŒUFile descriptors referring to eBPF objects can be pinned to the filesystem using the ”…”�”}”(hj¿;h²hh³Nh´Nubjø)�”}”(hŒ**BPF_OBJ_PIN**”h]”hŒ BPF_OBJ_PIN”…”�”}”(hjÇ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj¿;ubhŒ command of ”…”�”}”(hj¿;h²hh³Nh´Nubjø)�”}”(hŒ**bpf**”h]”hŒbpf”…”�”}”(hjÙ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j÷hj¿;ubhŒ (2).”…”�”}”(hj¿;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´M²hj»;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7;ubeh}”(h]”h ]”h"]”h$]”h&]”j�jÚ uh1hýh³j^;h´M¬hj%;ubj )�”}”(hŒÑAn eBPF object is deallocated only after all file descriptors referring to the object have been closed and no references remain pinned to the filesystem or attached (for example, bound to a program or device).”h]”hŒÑAn eBPF object is deallocated only after all file descriptors referring to the object have been closed and no references remain pinned to the filesystem or attached (for example, bound to a program or device).”…”�”}”(hjþ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.h”h´Mµhj%;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jxhj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jah³j$;h´M¸hj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\hjÞh²hh³Nh´Nubh¶)�”}”(hŒLinks:”h]”hŒLinks:”…”�”}”hj<sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhjÞh²hh³hÇh´KubhŒtarget”“”)�”}”(hŒ4.. _man-pages: https://www.kernel.org/doc/man-pages/”h]”h}”(h]”Œ man-pages”ah ]”h"]”Œ man-pages”ah$]”h&]”j¼j½uh1j-<h´KhjÞh²hh³hÇŒ referenced”Kubj.<)�”}”(hŒ<.. _bpf(2): https://man7.org/linux/man-pages/man2/bpf.2.html”h]”h}”(h]”Œbpf-2”ah ]”h"]”Œbpf(2)”ah$]”h&]”j¼jÓuh1j-<h´KhjÞh²hh³hÇj;<Kubeh}”(h]”Œbpf-subcommand-reference”ah ]”h"]”Œbpf() subcommand reference”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Kubeh}”(h]”Œ ebpf-syscall”ah ]”h"]”Œ ebpf syscall”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”j{<Œ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”}”(Œ man-pages”]”j¬aŒbpf(2)”]”jÃauŒrefids”}”Œnameids”}”(jU<jR<jM<jJ<j8<j5<jE<jB<uŒ nametypes”}”(jU<‰jM<‰j8<ˆjE<ˆuh}”(jR<hÊjJ<jÞj5<j/<jB<j<<uŒ 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.