sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget./translations/zh_CN/userspace-api/ebpf/syscallmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/zh_TW/userspace-api/ebpf/syscallmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/it_IT/userspace-api/ebpf/syscallmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/ja_JP/userspace-api/ebpf/syscallmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/ko_KR/userspace-api/ebpf/syscallmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/pt_BR/userspace-api/ebpf/syscallmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/sp_SP/userspace-api/ebpf/syscallmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhH/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall.rsthKubhsection)}(hhh](htitle)}(h eBPF Syscallh]h eBPF Syscall}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh field_list)}(hhh]hfield)}(hhh](h field_name)}(hAuthorsh]hAuthors}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(hr- Alexei Starovoitov - Joe Stringer - Michael Kerrisk h]h bullet_list)}(hhh](h list_item)}(h#Alexei Starovoitov h]h paragraph)}(hjh](hAlexei Starovoitov <}(hj hhhNhNubh reference)}(hast@kernel.orgh]hast@kernel.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:ast@kernel.orguh1jhj ubh>}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhubj)}(hJoe Stringer h]j )}(hj5h](hJoe Stringer <}(hj7hhhNhNubj)}(hjoe@wand.net.nzh]hjoe@wand.net.nz}(hj>hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:joe@wand.net.nzuh1jhj7ubh>}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhj3ubah}(h]h ]h"]h$]h&]uh1jhhubj)}(h)Michael Kerrisk h]j )}(h(Michael Kerrisk h](hMichael Kerrisk <}(hjbhhhNhNubj)}(hmtk.manpages@gmail.comh]hmtk.manpages@gmail.com}(hjjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:mtk.manpages@gmail.comuh1jhjbubh>}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhKhj^ubah}(h]h ]h"]h$]h&]uh1jhhubeh}(h]h ]h"]h$]h&]bullet-uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubj )}(hTThe primary info for the bpf syscall is available in the `man-pages`_ for `bpf(2)`_.h](h9The primary info for the bpf syscall is available in the }(hjhhhNhNubj)}(h `man-pages`_h]h man-pages}(hjhhhNhNubah}(h]h ]h"]h$]h&]name man-pagesrefuri%https://www.kernel.org/doc/man-pages/uh1jhjresolvedKubh for }(hjhhhNhNubj)}(h `bpf(2)`_h]hbpf(2)}(hjhhhNhNubah}(h]h ]h"]h$]h&]namebpf(2)j0https://man7.org/linux/man-pages/man2/bpf.2.htmluh1jhjjKubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhhhK hhhhubh)}(hhh](h)}(hbpf() subcommand referenceh]hbpf() subcommand reference}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj )}(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 }(hjhhhNhNubhstrong)}(h**bpf**h]hbpf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh& () system call is determined by the }(hjhhhNhNubhemphasis)}(h*cmd*h]hcmd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhG argument. Each operation takes an accompanying argument, provided via }(hjhhhNhNubj )}(h*attr*h]hattr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh(, which is a pointer to a union of type }(hjhhhNhNubj )}(h *bpf_attr*h]hbpf_attr}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhG (see below). The size argument is the size of the union pointed to by }(hjhhhNhNubj )}(h*attr*h]hattr}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:16: ./include/uapi/linux/bpf.hhKhjhhubhdefinition_list)}(hhh](hdefinition_list_item)}(hXBPF_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](hterm)}(hBPF_MAP_CREATEh]hBPF_MAP_CREATE}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjcubh 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 Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubjy)}(hhh](j )}(hCreate 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](hnCreate a map and return a file descriptor that refers to the map. The close-on-exec file descriptor flag (see }(hjhhhNhNubj)}(h **fcntl**h]hfcntl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh< (2)) is automatically enabled for the new file descriptor.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubj )}(hrApplying **close**\ (2) to the file descriptor returned by **BPF_MAP_CREATE** will delete the map (but see NOTES).h](h Applying }(hjhhhNhNubj)}(h **close**h]hclose}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh) (2) to the file descriptor returned by }(hjhhhNhNubj)}(h**BPF_MAP_CREATE**h]hBPF_MAP_CREATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh% will delete the map (but see NOTES).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubeh}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhKhj}ubjb)}(hReturn A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghjwhKhjubjy)}(hhh]j )}(hxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).h](hZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, }(hj hhhNhNubj )}(h*errno*h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh is set appropriately).}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjwhKhj}ubeh}(h]h ]h"]h$]h&]uh1j\hjzubah}(h]h ]h"]h$]h&]uh1jxhjcubeh}(h]h ]h"]h$]h&]uh1jahjwhKhj^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)}(hBPF_MAP_LOOKUP_ELEMh]hBPF_MAP_LOOKUP_ELEM}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjJubjy)}(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 Descriptionh]h Description}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjcubjy)}(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 }(hjyhhhNhNubj )}(h*key*h]hkey}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjyubh/ in the map referred to by the file descriptor }(hjyhhhNhNubj )}(h*map_fd*h]hmap_fd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjyubh.}(hjyhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjvubj )}(h>The *flags* argument may be specified as one of the following:h](hThe }(hjhhhNhNubj )}(h*flags*h]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh3 argument may be specified as one of the following:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjvubj])}(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)}(hjh]h BPF_F_LOCK}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jghjuhKhjubjy)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjuhKhjubah}(h]h ]h"]h$]h&]uh1j\hjvubeh}(h]h ]h"]h$]h&]uh1jxhjcubeh}(h]h ]h"]h$]h&]uh1jahjuhKhj`ubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghj\hKhjubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hj0hhhNhNubj )}(h*errno*h]herrno}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj0ubh is set appropriately.}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhj-ubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahj\hKhj`ubeh}(h]h ]h"]h$]h&]uh1j\hj]ubah}(h]h ]h"]h$]h&]uh1jxhjJubeh}(h]h ]h"]h$]h&]uh1jahj\hKhj^ubjb)}(hXBPF_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)}(hBPF_MAP_UPDATE_ELEMh]hBPF_MAP_UPDATE_ELEM}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjoubjy)}(hhh]j])}(hhh](jb)}(hXDescription 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 Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubjy)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubj )}(hAThe *flags* argument should be specified as one of the following:h](hThe }(hjhhhNhNubj )}(h*flags*h]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh6 argument should be specified as one of the following:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubj])}(hhh](jb)}(h?**BPF_ANY** Create a new element or update an existing element.h](jh)}(h **BPF_ANY**h]j)}(hjh]hBPF_ANY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubjy)}(hhh]j )}(h3Create a new element or update an existing element.h]h3Create a new element or update an existing element.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhKhjubjb)}(h>**BPF_NOEXIST** Create a new element only if it did not exist.h](jh)}(h**BPF_NOEXIST**h]j)}(hjh]h BPF_NOEXIST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhj 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*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhj'ubah}(h]h ]h"]h$]h&]uh1jxhj ubeh}(h]h ]h"]h$]h&]uh1jahj&hKhjubjb)}(h)**BPF_EXIST** Update an existing element.h](jh)}(h **BPF_EXIST**h]j)}(hjKh]h BPF_EXIST}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjEubjy)}(hhh]j )}(hUpdate an existing element.h]hUpdate an existing element.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjaubah}(h]h ]h"]h$]h&]uh1jxhjEubeh}(h]h ]h"]h$]h&]uh1jahj`hKhjubjb)}(h2**BPF_F_LOCK** Update a spin_lock-ed map element. h](jh)}(h**BPF_F_LOCK**h]j)}(hjh]h BPF_F_LOCK}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jghjhKhjubjy)}(hhh]j )}(h"Update a spin_lock-ed map element.h]h"Update a spin_lock-ed map element.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhKhjubeh}(h]h ]h"]h$]h&]uh1j\hjubeh}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhKhjubjb)}(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)}(hReturnh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghjhKhjubjy)}(hhh](j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hjhhhNhNubj )}(h*errno*h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh is set appropriately.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubj )}(h[May set *errno* to **EINVAL**, **EPERM**, **ENOMEM**, **E2BIG**, **EEXIST**, or **ENOENT**.h](hMay set }(hjhhhNhNubj )}(h*errno*h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh to }(hjhhhNhNubj)}(h **EINVAL**h]hEINVAL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj)}(h **EPERM**h]hEPERM}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }hjsbj)}(h **ENOMEM**h]hENOMEM}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj)}(h **E2BIG**h]hE2BIG}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }hjsbj)}(h **EEXIST**h]hEEXIST}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, or }(hjhhhNhNubj)}(h **ENOENT**h]hENOENT}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubj])}(hhh](jb)}(hk**E2BIG** The number of elements in the map reached the *max_entries* limit specified at map creation time.h](jh)}(h **E2BIG**h]j)}(hjh]hE2BIG}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubjy)}(hhh]j )}(haThe 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 }(hjhhhNhNubj )}(h *max_entries*h]h max_entries}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh& limit specified at map creation time.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhKhjubjb)}(he**EEXIST** If *flags* specifies **BPF_NOEXIST** and the element with *key* already exists in the map.h](jh)}(h **EEXIST**h]j)}(hjh]hEEXIST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubjy)}(hhh]j )}(hZIf *flags* specifies **BPF_NOEXIST** and the element with *key* already exists in the map.h](hIf }(hjhhhNhNubj )}(h*flags*h]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh specifies }(hjhhhNhNubj)}(h**BPF_NOEXIST**h]h BPF_NOEXIST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and the element with }(hjhhhNhNubj )}(h*key*h]hkey}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh already exists in the map.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhKhjubjb)}(hd**ENOENT** If *flags* specifies **BPF_EXIST** and the element with *key* does not exist in the map. h](jh)}(h **ENOENT**h]j)}(hjOh]hENOENT}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1jghjhKhjIubjy)}(hhh]j )}(hXIf *flags* specifies **BPF_EXIST** and the element with *key* does not exist in the map.h](hIf }(hjghhhNhNubj )}(h*flags*h]hflags}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j hjgubh specifies }(hjghhhNhNubj)}(h **BPF_EXIST**h]h BPF_EXIST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubh and the element with }(hjghhhNhNubj )}(h*key*h]hkey}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjgubh does not exist in the map.}(hjghhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjdubah}(h]h ]h"]h$]h&]uh1jxhjIubeh}(h]h ]h"]h$]h&]uh1jahjhKhjubeh}(h]h ]h"]h$]h&]uh1j\hjubeh}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhKhjubeh}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1jxhjoubeh}(h]h ]h"]h$]h&]uh1jahjhKhj^ubjb)}(hBPF_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)}(hBPF_MAP_DELETE_ELEMh]hBPF_MAP_DELETE_ELEM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubjy)}(hhh]j])}(hhh](jb)}(hEDescription Look up and delete an element by key in a specified map. h](jh)}(h Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubjy)}(hhh]j )}(h8Look up and delete an element by key in a specified map.h]h8Look up and delete an element by key in a specified map.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhKhjubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jghjhKhj%ubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hj:hhhNhNubj )}(h*errno*h]herrno}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:ubh is set appropriately.}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhj7ubah}(h]h ]h"]h$]h&]uh1jxhj%ubeh}(h]h ]h"]h$]h&]uh1jahjhKhjubeh}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhKhj^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)}(hBPF_MAP_GET_NEXT_KEYh]hBPF_MAP_GET_NEXT_KEY}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjyubjy)}(hhh]j])}(hhh](jb)}(hDescription 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 Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubjy)}(hhh]j )}(hLook 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]hLook 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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhKhjubjb)}(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)}(hReturnh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghjhMhjubjy)}(hhh](j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hjhhhNhNubj )}(h*errno*h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh is set appropriately.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubj )}(hHThe following cases can be used to iterate over all elements of the map:h]hHThe following cases can be used to iterate over all elements of the map:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjubh)}(hhh](j)}(hrIf *key* is not found, the operation returns zero and sets the *next_key* pointer to the key of the first element.h]j )}(hrIf *key* is not found, the operation returns zero and sets the *next_key* pointer to the key of the first element.h](hIf }(hj hhhNhNubj )}(h*key*h]hkey}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh7 is not found, the operation returns zero and sets the }(hj hhhNhNubj )}(h *next_key*h]hnext_key}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh) pointer to the key of the first element.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hmIf *key* is found, the operation returns zero and sets the *next_key* pointer to the key of the next element.h]j )}(hmIf *key* is found, the operation returns zero and sets the *next_key* pointer to the key of the next element.h](hIf }(hjL hhhNhNubj )}(h*key*h]hkey}(hjT hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjL ubh3 is found, the operation returns zero and sets the }(hjL hhhNhNubj )}(h *next_key*h]hnext_key}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjL ubh( pointer to the key of the next element.}(hjL hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhjH ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hKIf *key* is the last element, returns -1 and *errno* is set to **ENOENT**. h]j )}(hJIf *key* is the last element, returns -1 and *errno* is set to **ENOENT**.h](hIf }(hj hhhNhNubj )}(h*key*h]hkey}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh% is the last element, returns -1 and }(hj hhhNhNubj )}(h*errno*h]herrno}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh is set to }(hj hhhNhNubj)}(h **ENOENT**h]hENOENT}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]j*uh1hhjA hKhjubj )}(hMMay set *errno* to **ENOMEM**, **EFAULT**, **EPERM**, or **EINVAL** on error.h](hMay set }(hj hhhNhNubj )}(h*errno*h]herrno}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh to }(hj hhhNhNubj)}(h **ENOMEM**h]hENOMEM}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh, }(hj hhhNhNubj)}(h **EFAULT**h]hEFAULT}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh, }hj sbj)}(h **EPERM**h]hEPERM}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh, or }(hj hhhNhNubj)}(h **EINVAL**h]hEINVAL}(hj+ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh on error.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubeh}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhjubeh}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1jxhjyubeh}(h]h ]h"]h$]h&]uh1jahjhMhj^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_LOADh]h BPF_PROG_LOAD}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjb 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 Descriptionh]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM 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 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj ubj )}(hzApplying **close**\ (2) to the file descriptor returned by **BPF_PROG_LOAD** will unload the eBPF program (but see NOTES).h](h Applying }(hj hhhNhNubj)}(h **close**h]hclose}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh) (2) to the file descriptor returned by }(hj hhhNhNubj)}(h**BPF_PROG_LOAD**h]h BPF_PROG_LOAD}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh. will unload the eBPF program (but see NOTES).}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj ubj )}(hqThe 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 hhhNhNubj)}(h **fcntl**h]hfcntl}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh< (2)) is automatically enabled for the new file descriptor.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM hj ubeh}(h]h ]h"]h$]h&]uh1jxhj{ ubeh}(h]h ]h"]h$]h&]uh1jahj hM hjx ubjb)}(hReturn A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jghjt hMhj ubjy)}(hhh]j )}(hxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).h](hZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, }(hj hhhNhNubj )}(h*errno*h]herrno}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh is set appropriately).}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj ubah}(h]h ]h"]h$]h&]uh1jxhj ubeh}(h]h ]h"]h$]h&]uh1jahjt hMhjx ubeh}(h]h ]h"]h$]h&]uh1j\hju ubah}(h]h ]h"]h$]h&]uh1jxhjb ubeh}(h]h ]h"]h$]h&]uh1jahjt hMhj^ubjb)}(hXBPF_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_PINh]h BPF_OBJ_PIN}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM)hjT ubjy)}(hhh]j])}(hhh](jb)}(hXDescription 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 Descriptionh]h Description}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM%hjm ubjy)}(hhh](j )}(hkPin an eBPF program or map referred by the specified *bpf_fd* to the provided *pathname* on the filesystem.h](h5Pin an eBPF program or map referred by the specified }(hj hhhNhNubj )}(h*bpf_fd*h]hbpf_fd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh to the provided }(hj hhhNhNubj )}(h *pathname*h]hpathname}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh on the filesystem.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj ubj )}(h5The *pathname* argument must not contain a dot (".").h](hThe }(hj hhhNhNubj )}(h *pathname*h]hpathname}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh+ argument must not contain a dot (“.”).}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj ubj )}(hOn 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 hhhNhNubj )}(h *pathname*h]hpathname}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubha retains a reference to the eBPF object, preventing deallocation of the object when the original }(hj hhhNhNubj )}(h*bpf_fd*h]hbpf_fd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh6 is closed. This allow the eBPF object to live beyond }(hj hhhNhNubj)}(h **close**h]hclose}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh ( }(hj hhhNhNubj )}(h*bpf_fd*h]hbpf_fd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh2 ), and hence the lifetime of the parent process.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj ubj )}(hApplying **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. hhhNhNubj)}(h **unlink**h]hunlink}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj. ubh (2) or similar calls to the }(hj. hhhNhNubj )}(h *pathname*h]hpathname}(hjH hhhNhNubah}(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. hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj ubj )}(hTThe filesystem type for the parent directory of *pathname* must be **BPF_FS_MAGIC**.h](h0The filesystem type for the parent directory of }(hja hhhNhNubj )}(h *pathname*h]hpathname}(hji hhhNhNubah}(h]h ]h"]h$]h&]uh1j hja ubh must be }(hja hhhNhNubj)}(h**BPF_FS_MAGIC**h]h BPF_FS_MAGIC}(hj{ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja ubh.}(hja hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM$hj ubeh}(h]h ]h"]h$]h&]uh1jxhjm ubeh}(h]h ]h"]h$]h&]uh1jahj hM%hjj ubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jghjf hM)hj ubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hj hhhNhNubj )}(h*errno*h]herrno}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh is set appropriately.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM(hj ubah}(h]h ]h"]h$]h&]uh1jxhj ubeh}(h]h ]h"]h$]h&]uh1jahjf hM)hjj ubeh}(h]h ]h"]h$]h&]uh1j\hjg ubah}(h]h ]h"]h$]h&]uh1jxhjT ubeh}(h]h ]h"]h$]h&]uh1jahjf hM)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_GETh]h BPF_OBJ_GET}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM2hj ubjy)}(hhh]j])}(hhh](jb)}(h[Description Open a file descriptor for the eBPF object pinned to the specified *pathname*. h](jh)}(h Descriptionh]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM.hj ubjy)}(hhh]j )}(hNOpen a file descriptor for the eBPF object pinned to the specified *pathname*.h](hCOpen a file descriptor for the eBPF object pinned to the specified }(hj# hhhNhNubj )}(h *pathname*h]hpathname}(hj+ hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj# ubh.}(hj# hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM-hj ubah}(h]h ]h"]h$]h&]uh1jxhj ubeh}(h]h ]h"]h$]h&]uh1jahj hM.hj ubjb)}(hReturn A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hjT hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj hM2hjP ubjy)}(hhh]j )}(hxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).h](hZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, }(hje hhhNhNubj )}(h*errno*h]herrno}(hjm hhhNhNubah}(h]h ]h"]h$]h&]uh1j hje ubh is set appropriately).}(hje hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM1hjb ubah}(h]h ]h"]h$]h&]uh1jxhjP ubeh}(h]h ]h"]h$]h&]uh1jahj hM2hj ubeh}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1jxhj ubeh}(h]h ]h"]h$]h&]uh1jahj hM2hj^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)}(hBPF_PROG_ATTACHh]hBPF_PROG_ATTACH}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM`hj ubjy)}(hhh]j])}(hhh](jb)}(hXDescription 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 Descriptionh]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM\hj ubjy)}(hhh](j )}(hLAttach an eBPF program to a *target_fd* at the specified *attach_type* hook.h](hAttach an eBPF program to a }(hj hhhNhNubj )}(h *target_fd*h]h target_fd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh at the specified }(hj hhhNhNubj )}(h *attach_type*h]h attach_type}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh hook.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM6hj ubj )}(hThe *attach_type* specifies the eBPF attachment point to attach the program to, and must be one of *bpf_attach_type* (see below).h](hThe }(hjhhhNhNubj )}(h *attach_type*h]h attach_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhR specifies the eBPF attachment point to attach the program to, and must be one of }(hjhhhNhNubj )}(h*bpf_attach_type*h]hbpf_attach_type}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh (see below).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM9hj ubj )}(hThe *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](hThe }(hj9hhhNhNubj )}(h*attach_bpf_fd*h]h attach_bpf_fd}(hjAhhhNhNubah}(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 }(hj9hhhNhNubj )}(h *attach_type*h]h attach_type}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9ubh.}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM=hj ubj )}(hxThe *target_fd* must be a valid file descriptor for a kernel object which depends on the attach type of *attach_bpf_fd*:h](hThe }(hjlhhhNhNubj )}(h *target_fd*h]h target_fd}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j hjlubhY must be a valid file descriptor for a kernel object which depends on the attach type of }(hjlhhhNhNubj )}(h*attach_bpf_fd*h]h attach_bpf_fd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjlubh:}(hjlhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMAhj 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]hBPF_PROG_TYPE_CGROUP_DEVICE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj)}(h**BPF_PROG_TYPE_CGROUP_SKB**h]hBPF_PROG_TYPE_CGROUP_SKB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }hjsbj)}(h**BPF_PROG_TYPE_CGROUP_SOCK**h]hBPF_PROG_TYPE_CGROUP_SOCK}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }hjsbj)}(h"**BPF_PROG_TYPE_CGROUP_SOCK_ADDR**h]hBPF_PROG_TYPE_CGROUP_SOCK_ADDR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }hjsbj)}(h **BPF_PROG_TYPE_CGROUP_SOCKOPT**h]hBPF_PROG_TYPE_CGROUP_SOCKOPT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }hjsbj)}(h**BPF_PROG_TYPE_CGROUP_SYSCTL**h]hBPF_PROG_TYPE_CGROUP_SYSCTL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }hjsbj)}(h**BPF_PROG_TYPE_SOCK_OPS**h]hBPF_PROG_TYPE_SOCK_OPS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMDhj 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](heControl Group v2 hierarchy with the eBPF controller enabled. Requires the kernel to be compiled with }(hj*hhhNhNubj)}(h**CONFIG_CGROUP_BPF**h]hCONFIG_CGROUP_BPF}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubh.}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMLhj&ubah}(h]h ]h"]h$]h&]uh1j$hjJhMLhj ubj )}(h **BPF_PROG_TYPE_FLOW_DISSECTOR**h]j)}(hjSh]hBPF_PROG_TYPE_FLOW_DISSECTOR}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMPhj 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).}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMRhjiubah}(h]h ]h"]h$]h&]uh1j$hj{hMRhj ubj )}(h**BPF_PROG_TYPE_LIRC_MODE2**h]j)}(hjh]hBPF_PROG_TYPE_LIRC_MODE2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMThj ubj%)}(heLIRC device path (eg /dev/lircN). Requires the kernel to be compiled with **CONFIG_BPF_LIRC_MODE2**. h]j )}(hdLIRC device path (eg /dev/lircN). Requires the kernel to be compiled with **CONFIG_BPF_LIRC_MODE2**.h](hJLIRC device path (eg /dev/lircN). Requires the kernel to be compiled with }(hjhhhNhNubj)}(h**CONFIG_BPF_LIRC_MODE2**h]hCONFIG_BPF_LIRC_MODE2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMVhjubah}(h]h ]h"]h$]h&]uh1j$hjhMVhj ubj )}(h2**BPF_PROG_TYPE_SK_SKB**, **BPF_PROG_TYPE_SK_MSG**h](j)}(h**BPF_PROG_TYPE_SK_SKB**h]hBPF_PROG_TYPE_SK_SKB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj)}(h**BPF_PROG_TYPE_SK_MSG**h]hBPF_PROG_TYPE_SK_MSG}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMYhj ubj%)}(h8eBPF map of socket type (eg **BPF_MAP_TYPE_SOCKHASH**). h]j )}(h7eBPF map of socket type (eg **BPF_MAP_TYPE_SOCKHASH**).h](heBPF map of socket type (eg }(hjhhhNhNubj)}(h**BPF_MAP_TYPE_SOCKHASH**h]hBPF_MAP_TYPE_SOCKHASH}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj hM\hjubah}(h]h ]h"]h$]h&]uh1j$hj hM\hj ubeh}(h]h ]h"]h$]h&]uh1jxhj ubeh}(h]h ]h"]h$]h&]uh1jahj hM\hj ubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj hM`hj&ubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hj;hhhNhNubj )}(h*errno*h]herrno}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j hj;ubh is set appropriately.}(hj;hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM_hj8ubah}(h]h ]h"]h$]h&]uh1jxhj&ubeh}(h]h ]h"]h$]h&]uh1jahj hM`hj ubeh}(h]h ]h"]h$]h&]uh1j\hj ubah}(h]h ]h"]h$]h&]uh1jxhj ubeh}(h]h ]h"]h$]h&]uh1jahj hM`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)}(hBPF_PROG_DETACHh]hBPF_PROG_DETACH}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMjhjzubjy)}(hhh]j])}(hhh](jb)}(hDescription 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 Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMfhjubjy)}(hhh]j )}(hDetach 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 }(hjhhhNhNubj )}(h *target_fd*h]h target_fd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh at the hook specified by }(hjhhhNhNubj )}(h *attach_type*h]h attach_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh7. The program must have been previously attached using }(hjhhhNhNubj)}(h**BPF_PROG_ATTACH**h]hBPF_PROG_ATTACH}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMdhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMfhjubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghjhMjhjubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hjhhhNhNubj )}(h*errno*h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh is set appropriately.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMihj ubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMjhjubeh}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1jxhjzubeh}(h]h ]h"]h$]h&]uh1jahjhMjhj^ubjb)}(hXBPF_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)}(hBPF_PROG_TEST_RUNh]hBPF_PROG_TEST_RUN}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjNubjy)}(hhh]j])}(hhh](jb)}(hXDescription 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 Descriptionh]h Description}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjgubjy)}(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}hhhNhNubj )}(h *prog_fd*h]hprog_fd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}ubh a }(hj}hhhNhNubj )}(h*repeat*h]hrepeat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}ubh4 number of times against a provided program context }(hj}hhhNhNubj )}(h*ctx_in*h]hctx_in}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}ubh and data }(hj}hhhNhNubj )}(h *data_in*h]hdata_in}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}ubh*, and return the modified program context }(hj}hhhNhNubj )}(h *ctx_out*h]hctx_out}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}ubh, }(hj}hhhNhNubj )}(h *data_out*h]hdata_out}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}ubh5 (for example, packet data), result of the execution }(hj}hhhNhNubj )}(h*retval*h]hretval}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}ubh, and }(hj}hhhNhNubj )}(h *duration*h]hduration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}ubh of the test run.}(hj}hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMnhjzubj )}(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](hAThe sizes of the buffers provided as input and output parameters }(hjhhhNhNubj )}(h*ctx_in*h]hctx_in}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh, }(hjhhhNhNubj )}(h *ctx_out*h]hctx_out}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh, }hjsbj )}(h *data_in*h]hdata_in}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh, and }(hjhhhNhNubj )}(h *data_out*h]hdata_out}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh1 must be provided in the corresponding variables }(hjhhhNhNubj )}(h *ctx_size_in*h]h ctx_size_in}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh, }(hjhhhNhNubj )}(h*ctx_size_out*h]h ctx_size_out}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh, }hjsbj )}(h*data_size_in*h]h data_size_in}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh , and/or }(hjhhhNhNubj )}(h*data_size_out*h]h data_size_out}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhj. If any of these parameters are not provided (ie set to NULL), the corresponding size field must be zero.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMthjzubj )}(h0Some program types have particular requirements:h]h0Some program types have particular requirements:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM{hjzubj])}(hhh]jb)}(hC**BPF_PROG_TYPE_SK_LOOKUP** *data_in* and *data_out* must be NULL. h](jh)}(h**BPF_PROG_TYPE_SK_LOOKUP**h]j)}(hjh]hBPF_PROG_TYPE_SK_LOOKUP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM~hjubjy)}(hhh]j )}(h&*data_in* and *data_out* must be NULL.h](j )}(h *data_in*h]hdata_in}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh and }(hjhhhNhNubj )}(h *data_out*h]hdata_out}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh must be NULL.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhM~hjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhM~hjubah}(h]h ]h"]h$]h&]uh1j\hjzubj )}(hK**BPF_PROG_TYPE_RAW_TRACEPOINT**, **BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE**h](j)}(h **BPF_PROG_TYPE_RAW_TRACEPOINT**h]hBPF_PROG_TYPE_RAW_TRACEPOINT}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubh, }(hj,hhhNhNubj)}(h)**BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE**h]h%BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjzubj%)}(hI*ctx_out*, *data_in* and *data_out* must be NULL. *repeat* must be zero. h]j )}(hH*ctx_out*, *data_in* and *data_out* must be NULL. *repeat* must be zero.h](j )}(h *ctx_out*h]hctx_out}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj[ubh, }(hj[hhhNhNubj )}(h *data_in*h]hdata_in}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj[ubh and }(hj[hhhNhNubj )}(h *data_out*h]hdata_out}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj[ubh must be NULL. }(hj[hhhNhNubj )}(h*repeat*h]hrepeat}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj[ubh must be zero.}(hj[hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjWubah}(h]h ]h"]h$]h&]uh1j$hjhMhjzubj )}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyhMhjzubeh}(h]h ]h"]h$]h&]uh1jxhjgubeh}(h]h ]h"]h$]h&]uh1jahjyhMhjdubjb)}(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)}(hReturnh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghj`hMhjubjy)}(hhh](j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hjhhhNhNubj )}(h*errno*h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh is set appropriately.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj])}(hhh](jb)}(hA**ENOSPC** Either *data_size_out* or *ctx_size_out* is too small.h](jh)}(h **ENOSPC**h]j)}(hj h]hENOSPC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubjy)}(hhh]j )}(h6Either *data_size_out* or *ctx_size_out* is too small.h](hEither }(hj&hhhNhNubj )}(h*data_size_out*h]h data_size_out}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj&ubh or }(hj&hhhNhNubj )}(h*ctx_size_out*h]h ctx_size_out}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj&ubh is too small.}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj#ubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahj"hMhjubjb)}(hh**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]hENOTSUPP}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1jghj`hMhjeubjy)}(hhh]j )}(hZThis command is not supported by the program type of the program referred to by *prog_fd*.h](hPThis command is not supported by the program type of the program referred to by }(hjhhhNhNubj )}(h *prog_fd*h]hprog_fd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubah}(h]h ]h"]h$]h&]uh1jxhjeubeh}(h]h ]h"]h$]h&]uh1jahj`hMhjubeh}(h]h ]h"]h$]h&]uh1j\hjubeh}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahj`hMhjdubeh}(h]h ]h"]h$]h&]uh1j\hjaubah}(h]h ]h"]h$]h&]uh1jxhjNubeh}(h]h ]h"]h$]h&]uh1jahj`hMhj^ubjb)}(hXBPF_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)}(hBPF_PROG_GET_NEXT_IDh]hBPF_PROG_GET_NEXT_ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubjy)}(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 Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubjy)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj )}(hLooks 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](h3Looks for the eBPF program with an id greater than }(hjhhhNhNubj )}(h *start_id*h]hstart_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh and updates }(hjhhhNhNubj )}(h *next_id*h]hnext_id}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhC on success. If no other eBPF programs remain with ids higher than }(hjhhhNhNubj )}(h *start_id*h]hstart_id}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh, returns -1 and sets }(hjhhhNhNubj )}(h*errno*h]herrno}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh to }(hjhhhNhNubj)}(h **ENOENT**h]hENOENT}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubeh}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhjubjb)}(hrReturn Returns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghjhMhjubjy)}(hhh]j )}(hjReturns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately.h](hMReturns zero on success. On error, or when no id remains, -1 is returned and }(hjhhhNhNubj )}(h*errno*h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh is set appropriately.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhjubeh}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhj^ubjb)}(hXBPF_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)}(hBPF_MAP_GET_NEXT_IDh]hBPF_MAP_GET_NEXT_ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubjy)}(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 Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubjy)}(hhh](j )}(h9Fetch the next eBPF map currently loaded into the kernel.h]h9Fetch the next eBPF map currently loaded into the kernel.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj )}(hLooks 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 }(hjhhhNhNubj )}(h *start_id*h]hstart_id}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh and updates }(hjhhhNhNubj )}(h *next_id*h]hnext_id}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh? on success. If no other eBPF maps remain with ids higher than }(hjhhhNhNubj )}(h *start_id*h]hstart_id}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh, returns -1 and sets }(hjhhhNhNubj )}(h*errno*h]herrno}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh to }(hjhhhNhNubj)}(h **ENOENT**h]hENOENT}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubeh}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhjubjb)}(hrReturn Returns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghjhMhjubjy)}(hhh]j )}(hjReturns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately.h](hMReturns zero on success. On error, or when no id remains, -1 is returned and }(hjhhhNhNubj )}(h*errno*h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh is set appropriately.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhjubeh}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhj^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)}(hBPF_PROG_GET_FD_BY_IDh]hBPF_PROG_GET_FD_BY_ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubjy)}(hhh]j])}(hhh](jb)}(hTDescription Open a file descriptor for the eBPF program corresponding to *prog_id*. h](jh)}(h Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubjy)}(hhh]j )}(hGOpen a file descriptor for the eBPF program corresponding to *prog_id*.h](h=Open a file descriptor for the eBPF program corresponding to }(hjhhhNhNubj )}(h *prog_id*h]hprog_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahj hMhjubjb)}(hReturn A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jghjhMhj>ubjy)}(hhh]j )}(hxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).h](hZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, }(hjShhhNhNubj )}(h*errno*h]herrno}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjSubh is set appropriately).}(hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjPubah}(h]h ]h"]h$]h&]uh1jxhj>ubeh}(h]h ]h"]h$]h&]uh1jahjhMhjubeh}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhj^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)}(hBPF_MAP_GET_FD_BY_IDh]hBPF_MAP_GET_FD_BY_ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubjy)}(hhh]j])}(hhh](jb)}(hODescription Open a file descriptor for the eBPF map corresponding to *map_id*. h](jh)}(h Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubjy)}(hhh]j )}(hBOpen a file descriptor for the eBPF map corresponding to *map_id*.h](h9Open a file descriptor for the eBPF map corresponding to }(hjhhhNhNubj )}(h*map_id*h]hmap_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhjubjb)}(hReturn A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghjhMhjubjy)}(hhh]j )}(hxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).h](hZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, }(hjhhhNhNubj )}(h*errno*h]herrno}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh is set appropriately).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhjubeh}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhj^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)}(hBPF_OBJ_GET_INFO_BY_FDh]hBPF_OBJ_GET_INFO_BY_FD}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjBubjy)}(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 Descriptionh]h Description}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj[ubjy)}(hhh](j )}(hCObtain information about the eBPF object corresponding to *bpf_fd*.h](h:Obtain information about the eBPF object corresponding to }(hjqhhhNhNubj )}(h*bpf_fd*h]hbpf_fd}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjqubh.}(hjqhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjnubj )}(hPopulates 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](hPopulates up to }(hjhhhNhNubj )}(h *info_len*h]hinfo_len}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh bytes of }(hjhhhNhNubj )}(h*info*h]hinfo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhU, which will be in one of the following formats depending on the eBPF object type of }(hjhhhNhNubj )}(h*bpf_fd*h]hbpf_fd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjnubh)}(hhh](j)}(h**struct bpf_prog_info**h]j )}(hjh]j)}(hjh]hstruct bpf_prog_info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h**struct bpf_map_info**h]j )}(hjh]j)}(hjh]hstruct bpf_map_info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h**struct bpf_btf_info**h]j )}(hjh]j)}(hjh]hstruct bpf_btf_info}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h**struct bpf_link_info**h]j )}(hj?h]j)}(hj?h]hstruct bpf_link_info}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj=ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h**struct bpf_token_info** h]j )}(h**struct bpf_token_info**h]j)}(hjdh]hstruct bpf_token_info}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1jhjmhMhj^ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jj uh1hhjhMhjnubeh}(h]h ]h"]h$]h&]uh1jxhj[ubeh}(h]h ]h"]h$]h&]uh1jahjmhMhjXubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghjThMhjubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hjhhhNhNubj )}(h*errno*h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh is set appropriately.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjThMhjXubeh}(h]h ]h"]h$]h&]uh1j\hjUubah}(h]h ]h"]h$]h&]uh1jxhjBubeh}(h]h ]h"]h$]h&]uh1jahjThMhj^ubjb)}(hXBPF_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)}(hBPF_PROG_QUERYh]hBPF_PROG_QUERY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubjy)}(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 Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubjy)}(hhh](j )}(hXObtain information about eBPF programs associated with the specified *attach_type* hook.h](hEObtain information about eBPF programs associated with the specified }(hjhhhNhNubj )}(h *attach_type*h]h attach_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh hook.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj )}(hxThe *target_fd* must be a valid file descriptor for a kernel object which depends on the attach type of *attach_bpf_fd*:h](hThe }(hj5hhhNhNubj )}(h *target_fd*h]h target_fd}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj5ubhY must be a valid file descriptor for a kernel object which depends on the attach type of }(hj5hhhNhNubj )}(h*attach_bpf_fd*h]h attach_bpf_fd}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj5ubh:}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj )}(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]hBPF_PROG_TYPE_CGROUP_DEVICE}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubh, }(hjhhhhNhNubj)}(h**BPF_PROG_TYPE_CGROUP_SKB**h]hBPF_PROG_TYPE_CGROUP_SKB}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubh, }hjhsbj)}(h**BPF_PROG_TYPE_CGROUP_SOCK**h]hBPF_PROG_TYPE_CGROUP_SOCK}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubh, }hjhsbj)}(h"**BPF_PROG_TYPE_CGROUP_SOCK_ADDR**h]hBPF_PROG_TYPE_CGROUP_SOCK_ADDR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubh, }hjhsbj)}(h **BPF_PROG_TYPE_CGROUP_SOCKOPT**h]hBPF_PROG_TYPE_CGROUP_SOCKOPT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubh, }hjhsbj)}(h**BPF_PROG_TYPE_CGROUP_SYSCTL**h]hBPF_PROG_TYPE_CGROUP_SYSCTL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubh, }hjhsbj)}(h**BPF_PROG_TYPE_SOCK_OPS**h]hBPF_PROG_TYPE_SOCK_OPS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj%)}(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](heControl Group v2 hierarchy with the eBPF controller enabled. Requires the kernel to be compiled with }(hjhhhNhNubj)}(h**CONFIG_CGROUP_BPF**h]hCONFIG_CGROUP_BPF}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubah}(h]h ]h"]h$]h&]uh1j$hjhMhjubj )}(h **BPF_PROG_TYPE_FLOW_DISSECTOR**h]j)}(hjh]hBPF_PROG_TYPE_FLOW_DISSECTOR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj%)}(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).}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj0ubah}(h]h ]h"]h$]h&]uh1j$hjBhMhjubj )}(h**BPF_PROG_TYPE_LIRC_MODE2**h]j)}(hjKh]hBPF_PROG_TYPE_LIRC_MODE2}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj%)}(heLIRC device path (eg /dev/lircN). Requires the kernel to be compiled with **CONFIG_BPF_LIRC_MODE2**. h]j )}(hdLIRC device path (eg /dev/lircN). Requires the kernel to be compiled with **CONFIG_BPF_LIRC_MODE2**.h](hJLIRC device path (eg /dev/lircN). Requires the kernel to be compiled with }(hjehhhNhNubj)}(h**CONFIG_BPF_LIRC_MODE2**h]hCONFIG_BPF_LIRC_MODE2}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubh.}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjaubah}(h]h ]h"]h$]h&]uh1j$hjhMhjubj )}(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]hBPF_PROG_QUERY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh8 always fetches the number of programs attached and the }(hjhhhNhNubj )}(h*attach_flags*h]h attach_flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh< which were used to attach those programs. Additionally, if }(hjhhhNhNubj )}(h *prog_ids*h]hprog_ids}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh= is nonzero and the number of attached programs is less than }(hjhhhNhNubj )}(h *prog_cnt*h]hprog_cnt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh , populates }(hjhhhNhNubj )}(h *prog_ids*h]hprog_ids}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh7 with the eBPF program ids of the programs attached at }(hjhhhNhNubj )}(h *target_fd*h]h target_fd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj )}(h)The following flags may alter the result:h]h)The following flags may alter the result:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj])}(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]hBPF_F_QUERY_EFFECTIVE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jghjhMhjubjy)}(hhh]j )}(hfOnly return information regarding programs which are currently effective at the specified *target_fd*.h](hZOnly return information regarding programs which are currently effective at the specified }(hj3hhhNhNubj )}(h *target_fd*h]h target_fd}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj3ubh.}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj0ubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhjubah}(h]h ]h"]h$]h&]uh1j\hjubeh}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhjubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jghjhMhjrubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hjhhhNhNubj )}(h*errno*h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh is set appropriately.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubah}(h]h ]h"]h$]h&]uh1jxhjrubeh}(h]h ]h"]h$]h&]uh1jahjhMhjubeh}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhj^ubjb)}(hXBPF_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)}(hBPF_RAW_TRACEPOINT_OPENh]hBPF_RAW_TRACEPOINT_OPEN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubjy)}(hhh]j])}(hhh](jb)}(hXDescription 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 Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM hjubjy)}(hhh](j )}(hvAttach 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 }(hjhhhNhNubj )}(h*name*h]hname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhI to access kernel internal arguments of the tracepoint in their raw form.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj )}(h}The *prog_fd* must be a valid file descriptor associated with a loaded eBPF program of type **BPF_PROG_TYPE_RAW_TRACEPOINT**.h](hThe }(hjhhhNhNubj )}(h *prog_fd*h]hprog_fd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhO must be a valid file descriptor associated with a loaded eBPF program of type }(hjhhhNhNubj)}(h **BPF_PROG_TYPE_RAW_TRACEPOINT**h]hBPF_PROG_TYPE_RAW_TRACEPOINT}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj )}(hoNo ABI guarantees are made about the content of tracepoint arguments exposed to the corresponding eBPF program.h]hoNo ABI guarantees are made about the content of tracepoint arguments exposed to the corresponding eBPF program.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj )}(h{Applying **close**\ (2) to the file descriptor returned by **BPF_RAW_TRACEPOINT_OPEN** will delete the map (but see NOTES).h](h Applying }(hjXhhhNhNubj)}(h **close**h]hclose}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubh) (2) to the file descriptor returned by }(hjXhhhNhNubj)}(h**BPF_RAW_TRACEPOINT_OPEN**h]hBPF_RAW_TRACEPOINT_OPEN}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubh% will delete the map (but see NOTES).}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM hjubeh}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhM hjubjb)}(hReturn A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghjhMhjubjy)}(hhh]j )}(hxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).h](hZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, }(hjhhhNhNubj )}(h*errno*h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh is set appropriately).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhjubeh}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhMhj^ubjb)}(hXBPF_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_LOADh]h BPF_BTF_LOAD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM&hjubjy)}(hhh]j])}(hhh](jb)}(hXDescription 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 Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM"hjubjy)}(hhh](j )}(hVerify 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](hVerify 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 }(hjhhhNhNubj)}(h3https://www.kernel.org/doc/html/latest/bpf/btf.htmlh]h3https://www.kernel.org/doc/html/latest/bpf/btf.html}(hj"hhhNhNubah}(h]h ]h"]h$]h&]refurij$uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj )}(haThe *btf* parameter must point to valid memory providing *btf_size* bytes of BTF binary metadata.h](hThe }(hj<hhhNhNubj )}(h*btf*h]hbtf}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj<ubh0 parameter must point to valid memory providing }(hj<hhhNhNubj )}(h *btf_size*h]hbtf_size}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj<ubh bytes of BTF binary metadata.}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj )}(hThe 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](h4The returned file descriptor can be passed to other }(hjohhhNhNubj)}(h**bpf**h]hbpf}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubh () subcommands such as }(hjohhhNhNubj)}(h**BPF_PROG_LOAD**h]h BPF_PROG_LOAD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubh or }(hjohhhNhNubj)}(h**BPF_MAP_CREATE**h]hBPF_MAP_CREATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubh) to associate the BTF with those objects.}(hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubj )}(hSimilar 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 }(hjhhhNhNubj)}(h**BPF_PROG_LOAD**h]h BPF_PROG_LOAD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj)}(h**BPF_BTF_LOAD**h]h BPF_BTF_LOAD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh& has optional parameters to specify a }(hjhhhNhNubj )}(h *btf_log_buf*h]h btf_log_buf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh, }hjsbj )}(h*btf_log_size*h]h btf_log_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh and }(hjhhhNhNubj )}(h*btf_log_level*h]h btf_log_level}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh] which allow the kernel to return freeform log output regarding the BTF verification process.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjubeh}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhM"hjubjb)}(hReturn A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jghjhM&hj)ubjy)}(hhh]j )}(hxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).h](hZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, }(hj>hhhNhNubj )}(h*errno*h]herrno}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj>ubh is set appropriately).}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM%hj;ubah}(h]h ]h"]h$]h&]uh1jxhj)ubeh}(h]h ]h"]h$]h&]uh1jahjhM&hjubeh}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhM&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)}(hBPF_BTF_GET_FD_BY_IDh]hBPF_BTF_GET_FD_BY_ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM/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 Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM+hjubjy)}(hhh]j )}(hOOpen a file descriptor for the BPF Type Format (BTF) corresponding to *btf_id*.h](hFOpen a file descriptor for the BPF Type Format (BTF) corresponding to }(hjhhhNhNubj )}(h*btf_id*h]hbtf_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM*hjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhM+hjubjb)}(hReturn A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jghjhM/hjubjy)}(hhh]j )}(hxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).h](hZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, }(hjhhhNhNubj )}(h*errno*h]herrno}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh is set appropriately).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM.hjubah}(h]h ]h"]h$]h&]uh1jxhjubeh}(h]h ]h"]h$]h&]uh1jahjhM/hjubeh}(h]h ]h"]h$]h&]uh1j\hjubah}(h]h ]h"]h$]h&]uh1jxhj}ubeh}(h]h ]h"]h$]h&]uh1jahjhM/hj^ubjb)}(hXBPF_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)}(hBPF_TASK_FD_QUERYh]hBPF_TASK_FD_QUERY}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMDhj- ubjy)}(hhh]j])}(hhh](jb)}(hXDescription 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 Descriptionh]h Description}(hjJ hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM@hjF ubjy)}(hhh](j )}(hgObtain information about eBPF programs associated with the target process identified by *pid* and *fd*.h](hXObtain information about eBPF programs associated with the target process identified by }(hj\ hhhNhNubj )}(h*pid*h]hpid}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj\ ubh and }(hj\ hhhNhNubj )}(h*fd*h]hfd}(hjv hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj\ ubh.}(hj\ hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM3hjY ubj )}(hXIf 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](hIf the }(hj hhhNhNubj )}(h*pid*h]hpid}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh and }(hj hhhNhNubj )}(h*fd*h]hfd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubhI are associated with a tracepoint, kprobe or uprobe perf event, then the }(hj hhhNhNubj )}(h *prog_id*h]hprog_id}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh and }hj sbj )}(h *fd_type*h]hfd_type}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubhM will be populated with the eBPF program id and file descriptor type of type }(hj hhhNhNubj)}(h**bpf_task_fd_type**h]hbpf_task_fd_type}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh.. If associated with a kprobe or uprobe, the }(hj hhhNhNubj )}(h*probe_offset*h]h probe_offset}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh and }hj sbj )}(h *probe_addr*h]h probe_addr}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh( will also be populated. Optionally, if }(hj hhhNhNubj )}(h*buf*h]hbuf}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh is provided, then up to }(hj hhhNhNubj )}(h *buf_len*h]hbuf_len}(hj'!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh bytes of }(hj hhhNhNubj )}(h*buf*h]hbuf}(hj9!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubhE will be populated with the name of the tracepoint, kprobe or uprobe.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM6hjY 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](hThe resulting }(hjR!hhhNhNubj )}(h *prog_id*h]hprog_id}(hjZ!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjR!ubh, may be introspected in deeper detail using }(hjR!hhhNhNubj)}(h**BPF_PROG_GET_FD_BY_ID**h]hBPF_PROG_GET_FD_BY_ID}(hjl!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjR!ubh and }(hjR!hhhNhNubj)}(h**BPF_OBJ_GET_INFO_BY_FD**h]hBPF_OBJ_GET_INFO_BY_FD}(hj~!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjR!ubh.}(hjR!hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM?hjY ubeh}(h]h ]h"]h$]h&]uh1jxhjF ubeh}(h]h ]h"]h$]h&]uh1jahjX hM@hjC ubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj? hMDhj!ubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hj!hhhNhNubj )}(h*errno*h]herrno}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj!ubh is set appropriately.}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMChj!ubah}(h]h ]h"]h$]h&]uh1jxhj!ubeh}(h]h ]h"]h$]h&]uh1jahj? hMDhjC ubeh}(h]h ]h"]h$]h&]uh1j\hj@ ubah}(h]h ]h"]h$]h&]uh1jxhj- ubeh}(h]h ]h"]h$]h&]uh1jahj? hMDhj^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)}(hBPF_MAP_LOOKUP_AND_DELETE_ELEMh]hBPF_MAP_LOOKUP_AND_DELETE_ELEM}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMdhj!ubjy)}(hhh]j])}(hhh](jb)}(hXDescription 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 Descriptionh]h Description}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM`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&"hhhNhNubj )}(h*key*h]hkey}(hj."hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj&"ubh/ in the map referred to by the file descriptor }(hj&"hhhNhNubj )}(h*fd*h]hfd}(hj@"hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj&"ubh#, and if found, delete the element.}(hj&"hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMHhj#"ubj )}(hFor **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](hFor }(hjY"hhhNhNubj)}(h**BPF_MAP_TYPE_QUEUE**h]hBPF_MAP_TYPE_QUEUE}(hja"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjY"ubh and }(hjY"hhhNhNubj)}(h**BPF_MAP_TYPE_STACK**h]hBPF_MAP_TYPE_STACK}(hjs"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjY"ubh map types, the }(hjY"hhhNhNubj )}(h*flags*h]hflags}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjY"ubhP argument needs to be set to 0, but for other map types, it may be specified as:}(hjY"hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMKhj#"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"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMRhj"ubjy)}(hhh]j )}(hLook 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]hLook 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"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMPhj"ubah}(h]h ]h"]h$]h&]uh1jxhj"ubeh}(h]h ]h"]h$]h&]uh1jahj"hMRhj"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](hThe }(hj"hhhNhNubj)}(h**BPF_MAP_TYPE_QUEUE**h]hBPF_MAP_TYPE_QUEUE}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubh and }(hj"hhhNhNubj)}(h**BPF_MAP_TYPE_STACK**h]hBPF_MAP_TYPE_STACK}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubhv map types implement this command as a “pop” operation, deleting the top element rather than one corresponding to }(hj"hhhNhNubj )}(h*key*h]hkey}(hj #hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj"ubh. The }(hj"hhhNhNubj )}(h*key*h]hkey}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj"ubh and }hj"sbj )}(h *key_len*h]hkey_len}(hj1#hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj"ubhM parameters should be zeroed when issuing this operation for these map types.}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMThj#"ubj )}(hThis 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#hhhNhNubj)}(h**BPF_MAP_TYPE_QUEUE**h]hBPF_MAP_TYPE_QUEUE}(hjR#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ#ubh * }(hjJ#hhhNhNubj)}(h**BPF_MAP_TYPE_STACK**h]hBPF_MAP_TYPE_STACK}(hjd#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ#ubh * }hjJ#sbj)}(h**BPF_MAP_TYPE_HASH**h]hBPF_MAP_TYPE_HASH}(hjv#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ#ubh * }hjJ#sbj)}(h**BPF_MAP_TYPE_PERCPU_HASH**h]hBPF_MAP_TYPE_PERCPU_HASH}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ#ubh * }hjJ#sbj)}(h**BPF_MAP_TYPE_LRU_HASH**h]hBPF_MAP_TYPE_LRU_HASH}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ#ubh * }hjJ#sbj)}(h **BPF_MAP_TYPE_LRU_PERCPU_HASH**h]hBPF_MAP_TYPE_LRU_PERCPU_HASH}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ#ubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMZhj#"ubeh}(h]h ]h"]h$]h&]uh1jxhj"ubeh}(h]h ]h"]h$]h&]uh1jahj""hM`hj "ubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj "hMdhj#ubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hj#hhhNhNubj )}(h*errno*h]herrno}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj#ubh is set appropriately.}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMchj#ubah}(h]h ]h"]h$]h&]uh1jxhj#ubeh}(h]h ]h"]h$]h&]uh1jahj "hMdhj "ubeh}(h]h ]h"]h$]h&]uh1j\hj "ubah}(h]h ]h"]h$]h&]uh1jxhj!ubeh}(h]h ]h"]h$]h&]uh1jahj "hMdhj^ubjb)}(hXBPF_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)}(hBPF_MAP_FREEZEh]hBPF_MAP_FREEZE}(hj%$hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMshj!$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 Descriptionh]h Description}(hj>$hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMohj:$ubjy)}(hhh](j )}(h,Freeze the permissions of the specified map.h]h,Freeze the permissions of the specified map.}(hjP$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhhjM$ubj )}(hWrite 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](h0Write permissions may be frozen by passing zero }(hj_$hhhNhNubj )}(h*flags*h]hflags}(hjg$hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj_$ubhI. Upon success, no future syscall invocations may alter the map state of }(hj_$hhhNhNubj )}(h*map_fd*h]hmap_fd}(hjy$hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj_$ubhJ. Write operations from eBPF programs are still possible for a frozen map.}(hj_$hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMjhjM$ubj )}(h;Not supported for maps of type **BPF_MAP_TYPE_STRUCT_OPS**.h](hNot supported for maps of type }(hj$hhhNhNubj)}(h**BPF_MAP_TYPE_STRUCT_OPS**h]hBPF_MAP_TYPE_STRUCT_OPS}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubh.}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjL$hMohjM$ubeh}(h]h ]h"]h$]h&]uh1jxhj:$ubeh}(h]h ]h"]h$]h&]uh1jahjL$hMohj7$ubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj3$hMshj$ubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hj$hhhNhNubj )}(h*errno*h]herrno}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj$ubh is set appropriately.}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMrhj$ubah}(h]h ]h"]h$]h&]uh1jxhj$ubeh}(h]h ]h"]h$]h&]uh1jahj3$hMshj7$ubeh}(h]h ]h"]h$]h&]uh1j\hj4$ubah}(h]h ]h"]h$]h&]uh1jxhj!$ubeh}(h]h ]h"]h$]h&]uh1jahj3$hMshj^ubjb)}(hXBPF_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)}(hBPF_BTF_GET_NEXT_IDh]hBPF_BTF_GET_NEXT_ID}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj%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 Descriptionh]h Description}(hj/%hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM}hj+%ubjy)}(hhh](j )}(hMFetch the next BPF Type Format (BTF) object currently loaded into the kernel.h]hMFetch the next BPF Type Format (BTF) object currently loaded into the kernel.}(hjA%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMwhj>%ubj )}(hLooks 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](h1Looks for the BTF object with an id greater than }(hjP%hhhNhNubj )}(h *start_id*h]hstart_id}(hjX%hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjP%ubh and updates }(hjP%hhhNhNubj )}(h *next_id*h]hnext_id}(hjj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjP%ubhA on success. If no other BTF objects remain with ids higher than }(hjP%hhhNhNubj )}(h *start_id*h]hstart_id}(hj|%hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjP%ubh, returns -1 and sets }(hjP%hhhNhNubj )}(h*errno*h]herrno}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjP%ubh to }(hjP%hhhNhNubj)}(h **ENOENT**h]hENOENT}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjP%ubh.}(hjP%hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMzhj>%ubeh}(h]h ]h"]h$]h&]uh1jxhj+%ubeh}(h]h ]h"]h$]h&]uh1jahj=%hM}hj(%ubjb)}(hrReturn Returns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj$%hMhj%ubjy)}(hhh]j )}(hjReturns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately.h](hMReturns zero on success. On error, or when no id remains, -1 is returned and }(hj%hhhNhNubj )}(h*errno*h]herrno}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj%ubh is set appropriately.}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj%ubah}(h]h ]h"]h$]h&]uh1jxhj%ubeh}(h]h ]h"]h$]h&]uh1jahj$%hMhj(%ubeh}(h]h ]h"]h$]h&]uh1j\hj%%ubah}(h]h ]h"]h$]h&]uh1jxhj%ubeh}(h]h ]h"]h$]h&]uh1jahj$%hMhj^ubjb)}(hXBPF_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)}(hBPF_MAP_LOOKUP_BATCHh]hBPF_MAP_LOOKUP_BATCH}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj&ubjy)}(hhh]j])}(hhh](jb)}(hXDescription 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 Descriptionh]h Description}(hj6&hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj2&ubjy)}(hhh](j )}(h-Iterate and fetch multiple elements in a map.h]h-Iterate and fetch multiple elements in a map.}(hjH&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjE&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](h7Two opaque values are used to manage batch operations, }(hjW&hhhNhNubj )}(h *in_batch*h]hin_batch}(hj_&hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjW&ubh and }(hjW&hhhNhNubj )}(h *out_batch*h]h out_batch}(hjq&hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjW&ubh . Initially, }(hjW&hhhNhNubj )}(h *in_batch*h]hin_batch}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjW&ubhK must be set to NULL to begin the batched operation. After each subsequent }(hjW&hhhNhNubj)}(h**BPF_MAP_LOOKUP_BATCH**h]hBPF_MAP_LOOKUP_BATCH}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjW&ubh', the caller should pass the resultant }(hjW&hhhNhNubj )}(h *out_batch*h]h out_batch}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjW&ubh as the }(hjW&hhhNhNubj )}(h *in_batch*h]hin_batch}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjW&ubhK for the next operation to continue iteration from the current point. Both }(hjW&hhhNhNubj )}(h *in_batch*h]hin_batch}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjW&ubh and }(hjW&hhhNhNubj )}(h *out_batch*h]h out_batch}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjW&ubhJ must point to memory large enough to hold a key, except for maps of type }(hjW&hhhNhNubj)}(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&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjW&ubhR, for which batch parameters must be at least 4 bytes wide regardless of key size.}(hjW&hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjE&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](hThe }(hj'hhhNhNubj )}(h*keys*h]hkeys}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'ubh and }(hj'hhhNhNubj )}(h*values*h]hvalues}(hj"'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'ubhG are output parameters which must point to memory large enough to hold }(hj'hhhNhNubj )}(h*count*h]hcount}(hj4'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'ubh2 items based on the key and value size of the map }(hj'hhhNhNubj )}(h*map_fd*h]hmap_fd}(hjF'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'ubh. The }(hj'hhhNhNubj )}(h*keys*h]hkeys}(hjX'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'ubh buffer must be of }(hj'hhhNhNubj )}(h *key_size*h]hkey_size}(hjj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'ubh * }(hj'hhhNhNubj )}(h*count*h]hcount}(hj|'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'ubh. The }hj'sbj )}(h*values*h]hvalues}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'ubh buffer must be of }(hj'hhhNhNubj )}(h *value_size*h]h value_size}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'ubh * }hj'sbj )}(h*count*h]hcount}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'ubh.}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjE&ubj )}(hCThe *elem_flags* argument may be specified as one of the following:h](hThe }(hj'hhhNhNubj )}(h *elem_flags*h]h elem_flags}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj'ubh3 argument may be specified as one of the following:}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjE&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'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj'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(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj (ubah}(h]h ]h"]h$]h&]uh1jxhj'ubeh}(h]h ]h"]h$]h&]uh1jahj (hMhj'ubah}(h]h ]h"]h$]h&]uh1j\hjE&ubj )}(hOn 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/(hhhNhNubj )}(h*count*h]hcount}(hj7(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/(ubhR elements from the map are copied into the user buffer, with the keys copied into }(hj/(hhhNhNubj )}(h*keys*h]hkeys}(hjI(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/(ubh9 and the values copied into the corresponding indices in }(hj/(hhhNhNubj )}(h*values*h]hvalues}(hj[(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/(ubh.}(hj/(hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjE&ubj )}(hwIf an error is returned and *errno* is not **EFAULT**, *count* is set to the number of successfully processed elements.h](hIf an error is returned and }(hjt(hhhNhNubj )}(h*errno*h]herrno}(hj|(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjt(ubh is not }(hjt(hhhNhNubj)}(h **EFAULT**h]hEFAULT}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt(ubh, }(hjt(hhhNhNubj )}(h*count*h]hcount}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjt(ubh9 is set to the number of successfully processed elements.}(hjt(hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjE&ubeh}(h]h ]h"]h$]h&]uh1jxhj2&ubeh}(h]h ]h"]h$]h&]uh1jahjD&hMhj/&ubjb)}(hReturn 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)}(hReturnh]hReturn}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj+&hMhj(ubjy)}(hhh](j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hj(hhhNhNubj )}(h*errno*h]herrno}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(ubh is set appropriately.}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj(ubj )}(hMay 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](hMay set }(hj(hhhNhNubj )}(h*errno*h]herrno}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(ubh to }(hj(hhhNhNubj)}(h **ENOSPC**h]hENOSPC}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubh to indicate that }(hj(hhhNhNubj )}(h*keys*h]hkeys}(hj')hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(ubh or }(hj(hhhNhNubj )}(h*values*h]hvalues}(hj9)hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(ubhQ is too small to dump an entire bucket during iteration of a hash-based map type.}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj(ubeh}(h]h ]h"]h$]h&]uh1jxhj(ubeh}(h]h ]h"]h$]h&]uh1jahj+&hMhj/&ubeh}(h]h ]h"]h$]h&]uh1j\hj,&ubah}(h]h ]h"]h$]h&]uh1jxhj&ubeh}(h]h ]h"]h$]h&]uh1jahj+&hMhj^ubjb)}(hXBPF_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)}(hBPF_MAP_LOOKUP_AND_DELETE_BATCHh]hBPF_MAP_LOOKUP_AND_DELETE_BATCH}(hjt)hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjp)ubjy)}(hhh]j])}(hhh](jb)}(hXDescription 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 Descriptionh]h Description}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj)ubjy)}(hhh](j )}(h)Iterate and delete all elements in a map.h]h)Iterate and delete all elements in a map.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj)ubj )}(hUThis operation has the same behavior as **BPF_MAP_LOOKUP_BATCH** with two exceptions:h](h(This operation has the same behavior as }(hj)hhhNhNubj)}(h**BPF_MAP_LOOKUP_BATCH**h]hBPF_MAP_LOOKUP_BATCH}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubh with two exceptions:}(hj)hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj)ubh)}(hhh](j)}(hEvery 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 )}(hEvery 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)hhhNhNubj )}(h*count*h]hcount}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj)ubh elements. Note that }(hj)hhhNhNubj )}(h*count*h]hcount}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj)ubh* is both an input and an output parameter.}(hj)hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj)ubah}(h]h ]h"]h$]h&]uh1jhj)ubj)}(hUpon 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 )}(hUpon returning with *errno* set to **EFAULT**, up to *count* elements may be deleted without returning the keys and values of the deleted elements.h](hUpon returning with }(hj*hhhNhNubj )}(h*errno*h]herrno}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj*ubh set to }(hj*hhhNhNubj)}(h **EFAULT**h]hEFAULT}(hj-*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubh, up to }(hj*hhhNhNubj )}(h*count*h]hcount}(hj?*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj*ubhW elements may be deleted without returning the keys and values of the deleted elements.}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj*ubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]jj uh1hhj*hMhj)ubeh}(h]h ]h"]h$]h&]uh1jxhj)ubeh}(h]h ]h"]h$]h&]uh1jahj)hMhj)ubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hjt*hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj)hMhjp*ubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hj*hhhNhNubj )}(h*errno*h]herrno}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj*ubh is set appropriately.}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj*ubah}(h]h ]h"]h$]h&]uh1jxhjp*ubeh}(h]h ]h"]h$]h&]uh1jahj)hMhj)ubeh}(h]h ]h"]h$]h&]uh1j\hj)ubah}(h]h ]h"]h$]h&]uh1jxhjp)ubeh}(h]h ]h"]h$]h&]uh1jahj)hMhj^ubjb)}(hXBPF_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)}(hBPF_MAP_UPDATE_BATCHh]hBPF_MAP_UPDATE_BATCH}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj*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 Descriptionh]h Description}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj*ubjy)}(hhh](j )}(h+Update multiple elements in a map by *key*.h](h%Update multiple elements in a map by }(hj*hhhNhNubj )}(h*key*h]hkey}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj*ubh.}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj*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](hThe }(hj+hhhNhNubj )}(h*keys*h]hkeys}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubh and }(hj+hhhNhNubj )}(h*values*h]hvalues}(hj.+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubhF are input parameters which must point to memory large enough to hold }(hj+hhhNhNubj )}(h*count*h]hcount}(hj@+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubh2 items based on the key and value size of the map }(hj+hhhNhNubj )}(h*map_fd*h]hmap_fd}(hjR+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubh. The }(hj+hhhNhNubj )}(h*keys*h]hkeys}(hjd+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubh buffer must be of }(hj+hhhNhNubj )}(h *key_size*h]hkey_size}(hjv+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubh * }(hj+hhhNhNubj )}(h*count*h]hcount}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubh. The }hj+sbj )}(h*values*h]hvalues}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubh buffer must be of }(hj+hhhNhNubj )}(h *value_size*h]h value_size}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubh * }hj+sbj )}(h*count*h]hcount}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubh.}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj*ubj )}(hEach 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](hEach element specified in }(hj+hhhNhNubj )}(h*keys*h]hkeys}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubhD is sequentially updated to the value in the corresponding index in }(hj+hhhNhNubj )}(h*values*h]hvalues}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubh. The }(hj+hhhNhNubj )}(h *in_batch*h]hin_batch}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubh and }(hj+hhhNhNubj )}(h *out_batch*h]h out_batch}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+ubh- parameters are ignored and should be zeroed.}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj*ubj )}(hFThe *elem_flags* argument should be specified as one of the following:h](hThe }(hj.,hhhNhNubj )}(h *elem_flags*h]h elem_flags}(hj6,hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj.,ubh6 argument should be specified as one of the following:}(hj.,hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj*ubj])}(hhh](jb)}(h>**BPF_ANY** Create new elements or update a existing elements.h](jh)}(h **BPF_ANY**h]j)}(hjX,h]hBPF_ANY}(hjZ,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjV,ubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjR,ubjy)}(hhh]j )}(h2Create new elements or update a existing elements.h]h2Create new elements or update a existing elements.}(hjq,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjn,ubah}(h]h ]h"]h$]h&]uh1jxhjR,ubeh}(h]h ]h"]h$]h&]uh1jahjm,hMhjO,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,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj,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,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj,ubah}(h]h ]h"]h$]h&]uh1jxhj,ubeh}(h]h ]h"]h$]h&]uh1jahj,hMhjO,ubjb)}(h'**BPF_EXIST** Update existing elements.h](jh)}(h **BPF_EXIST**h]j)}(hj,h]h BPF_EXIST}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj,ubjy)}(hhh]j )}(hUpdate existing elements.h]hUpdate existing elements.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj,ubah}(h]h ]h"]h$]h&]uh1jxhj,ubeh}(h]h ]h"]h$]h&]uh1jahj,hMhjO,ubjb)}(hn**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-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj-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-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj-ubah}(h]h ]h"]h$]h&]uh1jxhj-ubeh}(h]h ]h"]h$]h&]uh1jahj-hMhjO,ubeh}(h]h ]h"]h$]h&]uh1j\hj*ubj )}(h6On success, *count* elements from the map are updated.h](h On success, }(hj@-hhhNhNubj )}(h*count*h]hcount}(hjH-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj@-ubh# elements from the map are updated.}(hj@-hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj*ubj )}(hwIf an error is returned and *errno* is not **EFAULT**, *count* is set to the number of successfully processed elements.h](hIf an error is returned and }(hja-hhhNhNubj )}(h*errno*h]herrno}(hji-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hja-ubh is not }(hja-hhhNhNubj)}(h **EFAULT**h]hEFAULT}(hj{-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja-ubh, }(hja-hhhNhNubj )}(h*count*h]hcount}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hja-ubh9 is set to the number of successfully processed elements.}(hja-hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj*ubeh}(h]h ]h"]h$]h&]uh1jxhj*ubeh}(h]h ]h"]h$]h&]uh1jahj*hMhj*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)}(hReturnh]hReturn}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj*hMhj-ubjy)}(hhh](j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hj-hhhNhNubj )}(h*errno*h]herrno}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj-ubh is set appropriately.}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj-ubj )}(hMay 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](hMay set }(hj-hhhNhNubj )}(h*errno*h]herrno}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj-ubh to }(hj-hhhNhNubj)}(h **EINVAL**h]hEINVAL}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh, }(hj-hhhNhNubj)}(h **EPERM**h]hEPERM}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh, }hj-sbj)}(h **ENOMEM**h]hENOMEM}(hj&.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh, or }(hj-hhhNhNubj)}(h **E2BIG**h]hE2BIG}(hj8.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh. }(hj-hhhNhNubj)}(h **E2BIG**h]hE2BIG}(hjJ.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh> indicates that the number of elements in the map reached the }(hj-hhhNhNubj )}(h *max_entries*h]h max_entries}(hj\.hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj-ubh& limit specified at map creation time.}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj-ubj )}(hQMay set *errno* to one of the following error codes under specific circumstances:h](hMay set }(hju.hhhNhNubj )}(h*errno*h]herrno}(hj}.hhhNhNubah}(h]h ]h"]h$]h&]uh1j hju.ubhB to one of the following error codes under specific circumstances:}(hju.hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj-ubj])}(hhh](jb)}(he**EEXIST** If *flags* specifies **BPF_NOEXIST** and the element with *key* already exists in the map.h](jh)}(h **EEXIST**h]j)}(hj.h]hEEXIST}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj.ubjy)}(hhh]j )}(hZIf *flags* specifies **BPF_NOEXIST** and the element with *key* already exists in the map.h](hIf }(hj.hhhNhNubj )}(h*flags*h]hflags}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj.ubh specifies }(hj.hhhNhNubj)}(h**BPF_NOEXIST**h]h BPF_NOEXIST}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh and the element with }(hj.hhhNhNubj )}(h*key*h]hkey}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj.ubh already exists in the map.}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj.hMhj.ubah}(h]h ]h"]h$]h&]uh1jxhj.ubeh}(h]h ]h"]h$]h&]uh1jahj.hMhj.ubjb)}(hd**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]hENOENT}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj /ubah}(h]h ]h"]h$]h&]uh1jghj*hMhj/ubjy)}(hhh]j )}(hXIf *flags* specifies **BPF_EXIST** and the element with *key* does not exist in the map.h](hIf }(hj&/hhhNhNubj )}(h*flags*h]hflags}(hj./hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj&/ubh specifies }(hj&/hhhNhNubj)}(h **BPF_EXIST**h]h BPF_EXIST}(hj@/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&/ubh and the element with }(hj&/hhhNhNubj )}(h*key*h]hkey}(hjR/hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj&/ubh does not exist in the map.}(hj&/hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj#/ubah}(h]h ]h"]h$]h&]uh1jxhj/ubeh}(h]h ]h"]h$]h&]uh1jahj*hMhj.ubeh}(h]h ]h"]h$]h&]uh1j\hj-ubeh}(h]h ]h"]h$]h&]uh1jxhj-ubeh}(h]h ]h"]h$]h&]uh1jahj*hMhj*ubeh}(h]h ]h"]h$]h&]uh1j\hj*ubah}(h]h ]h"]h$]h&]uh1jxhj*ubeh}(h]h ]h"]h$]h&]uh1jahj*hMhj^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)}(hBPF_MAP_DELETE_BATCHh]hBPF_MAP_DELETE_BATCH}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj/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 Descriptionh]h Description}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM hj/ubjy)}(hhh](j )}(h+Delete multiple elements in a map by *key*.h](h%Delete multiple elements in a map by }(hj/hhhNhNubj )}(h*key*h]hkey}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/ubh.}(hj/hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj/ubj )}(hThe *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](hThe }(hj/hhhNhNubj )}(h*keys*h]hkeys}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/ubhQ parameter is an input parameter which must point to memory large enough to hold }(hj/hhhNhNubj )}(h*count*h]hcount}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/ubh( items based on the key size of the map }(hj/hhhNhNubj )}(h*map_fd*h]hmap_fd}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/ubh , that is, }(hj/hhhNhNubj )}(h *key_size*h]hkey_size}(hj)0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/ubh * }(hj/hhhNhNubj )}(h*count*h]hcount}(hj;0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj/ubh.}(hj/hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj/ubj )}(hEach element specified in *keys* is sequentially deleted. The *in_batch*, *out_batch*, and *values* parameters are ignored and should be zeroed.h](hEach element specified in }(hjT0hhhNhNubj )}(h*keys*h]hkeys}(hj\0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjT0ubh is sequentially deleted. The }(hjT0hhhNhNubj )}(h *in_batch*h]hin_batch}(hjn0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjT0ubh, }(hjT0hhhNhNubj )}(h *out_batch*h]h out_batch}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjT0ubh, and }(hjT0hhhNhNubj )}(h*values*h]hvalues}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjT0ubh- parameters are ignored and should be zeroed.}(hjT0hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj/ubj )}(hCThe *elem_flags* argument may be specified as one of the following:h](hThe }(hj0hhhNhNubj )}(h *elem_flags*h]h elem_flags#}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj0ubh3 argument may be specified as one of the following:}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj/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)}(hj0h]h BPF_F_LOCK}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj0ubjy)}(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.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj0ubah}(h]h ]h"]h$]h&]uh1jxhj0ubeh}(h]h ]h"]h$]h&]uh1jahj0hMhj0ubah}(h]h ]h"]h$]h&]uh1j\hj/ubj )}(h6On success, *count* elements from the map are updated.h](h On success, }(hj1hhhNhNubj )}(h*count*h]hcount}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj1ubh# elements from the map are updated.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj/ubj )}(hIf 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](hIf an error is returned and }(hj01hhhNhNubj )}(h*errno*h]herrno}(hj81hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj01ubh is not }(hj01hhhNhNubj)}(h **EFAULT**h]hEFAULT}(hjJ1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj01ubh, }(hj01hhhNhNubj )}(h*count*h]hcount}(hj\1hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj01ubh= is set to the number of successfully processed elements. If }(hj01hhhNhNubj )}(h*errno*h]herrno}(hjn1hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj01ubh is }(hj01hhhNhNubj)}(h **EFAULT**h]hEFAULT}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj01ubh, up to }(hj01hhhNhNubj )}(h*count*h]hcount}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj01ubh elements may be been deleted.}(hj01hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM hj/ubeh}(h]h ]h"]h$]h&]uh1jxhj/ubeh}(h]h ]h"]h$]h&]uh1jahj/hM hj/ubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj/hMhj1ubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hj1hhhNhNubj )}(h*errno*h]herrno}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj1ubh is set appropriately.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj1ubah}(h]h ]h"]h$]h&]uh1jxhj1ubeh}(h]h ]h"]h$]h&]uh1jahj/hMhj/ubeh}(h]h ]h"]h$]h&]uh1j\hj/ubah}(h]h ]h"]h$]h&]uh1jxhj/ubeh}(h]h ]h"]h$]h&]uh1jahj/hMhj^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)}(hBPF_LINK_CREATEh]hBPF_LINK_CREATE}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj 2ubjy)}(hhh]j])}(hhh](jb)}(hDescription 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 Descriptionh]h Description}(hj(2hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj$2ubjy)}(hhh]j )}(hAttach an eBPF program to a *target_fd* at the specified *attach_type* hook and return a file descriptor handle for managing the link.h](hAttach an eBPF program to a }(hj:2hhhNhNubj )}(h *target_fd*h]h target_fd}(hjB2hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:2ubh at the specified }(hj:2hhhNhNubj )}(h *attach_type*h]h attach_type}(hjT2hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:2ubh@ hook and return a file descriptor handle for managing the link.}(hj:2hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj72ubah}(h]h ]h"]h$]h&]uh1jxhj$2ubeh}(h]h ]h"]h$]h&]uh1jahj62hMhj!2ubjb)}(hReturn A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hj}2hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj2hMhjy2ubjy)}(hhh]j )}(hxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).h](hZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, }(hj2hhhNhNubj )}(h*errno*h]herrno}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj2ubh is set appropriately).}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj2ubah}(h]h ]h"]h$]h&]uh1jxhjy2ubeh}(h]h ]h"]h$]h&]uh1jahj2hMhj!2ubeh}(h]h ]h"]h$]h&]uh1j\hj2ubah}(h]h ]h"]h$]h&]uh1jxhj 2ubeh}(h]h ]h"]h$]h&]uh1jahj2hMhj^ubjb)}(hBPF_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)}(hBPF_LINK_UPDATEh]hBPF_LINK_UPDATE}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM$hj2ubjy)}(hhh]j])}(hhh](jb)}(hQDescription Update the eBPF program in the specified *link_fd* to *new_prog_fd*. h](jh)}(h Descriptionh]h Description}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM hj2ubjy)}(hhh]j )}(hDUpdate the eBPF program in the specified *link_fd* to *new_prog_fd*.h](h)Update the eBPF program in the specified }(hj2hhhNhNubj )}(h *link_fd*h]hlink_fd}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj2ubh to }(hj2hhhNhNubj )}(h *new_prog_fd*h]h new_prog_fd}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj2ubh.}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj2ubah}(h]h ]h"]h$]h&]uh1jxhj2ubeh}(h]h ]h"]h$]h&]uh1jahj2hM hj2ubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hj?3hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj2hM$hj;3ubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hjP3hhhNhNubj )}(h*errno*h]herrno}(hjX3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjP3ubh is set appropriately.}(hjP3hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM#hjM3ubah}(h]h ]h"]h$]h&]uh1jxhj;3ubeh}(h]h ]h"]h$]h&]uh1jahj2hM$hj2ubeh}(h]h ]h"]h$]h&]uh1j\hj2ubah}(h]h ]h"]h$]h&]uh1jxhj2ubeh}(h]h ]h"]h$]h&]uh1jahj2hM$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)}(hBPF_LINK_GET_FD_BY_IDh]hBPF_LINK_GET_FD_BY_ID}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM-hj3ubjy)}(hhh]j])}(hhh](jb)}(hQDescription Open a file descriptor for the eBPF Link corresponding to *link_id*. h](jh)}(h Descriptionh]h Description}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM)hj3ubjy)}(hhh]j )}(hDOpen a file descriptor for the eBPF Link corresponding to *link_id*.h](h:Open a file descriptor for the eBPF Link corresponding to }(hj3hhhNhNubj )}(h *link_id*h]hlink_id}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj3ubh.}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM(hj3ubah}(h]h ]h"]h$]h&]uh1jxhj3ubeh}(h]h ]h"]h$]h&]uh1jahj3hM)hj3ubjb)}(hReturn A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj3hM-hj3ubjy)}(hhh]j )}(hxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).h](hZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, }(hj4hhhNhNubj )}(h*errno*h]herrno}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj4ubh is set appropriately).}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM,hj3ubah}(h]h ]h"]h$]h&]uh1jxhj3ubeh}(h]h ]h"]h$]h&]uh1jahj3hM-hj3ubeh}(h]h ]h"]h$]h&]uh1j\hj3ubah}(h]h ]h"]h$]h&]uh1jxhj3ubeh}(h]h ]h"]h$]h&]uh1jahj3hM-hj^ubjb)}(hXBPF_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)}(hBPF_LINK_GET_NEXT_IDh]hBPF_LINK_GET_NEXT_ID}(hjC4hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM: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 Descriptionh]h Description}(hj\4hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM6hjX4ubjy)}(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.}(hjn4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM1hjk4ubj )}(hLooks 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](h0Looks for the eBPF link with an id greater than }(hj}4hhhNhNubj )}(h *start_id*h]hstart_id}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}4ubh and updates }(hj}4hhhNhNubj )}(h *next_id*h]hnext_id}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}4ubh@ on success. If no other eBPF links remain with ids higher than }(hj}4hhhNhNubj )}(h *start_id*h]hstart_id}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}4ubh, returns -1 and sets }(hj}4hhhNhNubj )}(h*errno*h]herrno}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj}4ubh to }(hj}4hhhNhNubj)}(h **ENOENT**h]hENOENT}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}4ubh.}(hj}4hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM3hjk4ubeh}(h]h ]h"]h$]h&]uh1jxhjX4ubeh}(h]h ]h"]h$]h&]uh1jahjj4hM6hjU4ubjb)}(hrReturn Returns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jghjQ4hM:hj4ubjy)}(hhh]j )}(hjReturns zero on success. On error, or when no id remains, -1 is returned and *errno* is set appropriately.h](hMReturns zero on success. On error, or when no id remains, -1 is returned and }(hj5hhhNhNubj )}(h*errno*h]herrno}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj5ubh is set appropriately.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM9hj5ubah}(h]h ]h"]h$]h&]uh1jxhj4ubeh}(h]h ]h"]h$]h&]uh1jahjQ4hM:hjU4ubeh}(h]h ]h"]h$]h&]uh1j\hjR4ubah}(h]h ]h"]h$]h&]uh1jxhj?4ubeh}(h]h ]h"]h$]h&]uh1jahjQ4hM: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)}(hBPF_ENABLE_STATSh]hBPF_ENABLE_STATS}(hjJ5hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMMhjF5ubjy)}(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 Descriptionh]h Description}(hjc5hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMIhj_5ubjy)}(hhh](j )}(h)Enable eBPF runtime statistics gathering.h]h)Enable eBPF runtime statistics gathering.}(hju5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM>hjr5ubj )}(hRuntime statistics gathering for the eBPF runtime is disabled by default to minimize the corresponding performance overhead. This command enables statistics globally.h]hRuntime statistics gathering for the eBPF runtime is disabled by default to minimize the corresponding performance overhead. This command enables statistics globally.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM@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](hMultiple programs may independently enable statistics. After gathering the desired statistics, eBPF runtime statistics may be disabled again by calling }(hj5hhhNhNubj)}(h **close**h]hclose}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubh (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.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMDhjr5ubeh}(h]h ]h"]h$]h&]uh1jxhj_5ubeh}(h]h ]h"]h$]h&]uh1jahjq5hMIhj\5ubjb)}(hReturn A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jghjX5hMMhj5ubjy)}(hhh]j )}(hxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).h](hZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, }(hj5hhhNhNubj )}(h*errno*h]herrno}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj5ubh is set appropriately).}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMLhj5ubah}(h]h ]h"]h$]h&]uh1jxhj5ubeh}(h]h ]h"]h$]h&]uh1jahjX5hMMhj\5ubeh}(h]h ]h"]h$]h&]uh1j\hjY5ubah}(h]h ]h"]h$]h&]uh1jxhjF5ubeh}(h]h ]h"]h$]h&]uh1jahjX5hMMhj^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)}(hBPF_ITER_CREATEh]hBPF_ITER_CREATE}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM\hj6ubjy)}(hhh]j])}(hhh](jb)}(hXDescription 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 Descriptionh]h Description}(hj16hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMXhj-6ubjy)}(hhh](j )}(hCreate 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 }(hjC6hhhNhNubj )}(h *link_fd*h]hlink_fd}(hjK6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjC6ubh (as previously created using }(hjC6hhhNhNubj)}(h**BPF_LINK_CREATE**h]hBPF_LINK_CREATE}(hj]6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjC6ubhI) and return a file descriptor that can be used to trigger the iteration.}(hjC6hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMQhj@6ubj )}(hIf 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](hDIf the resulting file descriptor is pinned to the filesystem using }(hjv6hhhNhNubj)}(h**BPF_OBJ_PIN**h]h BPF_OBJ_PIN}(hj~6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv6ubh, then subsequent }(hjv6hhhNhNubj)}(h**read**h]hread}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv6ubho (2) syscalls for that path will trigger the iterator to read kernel state using the eBPF program attached to }(hjv6hhhNhNubj )}(h *link_fd*h]hlink_fd}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjv6ubh.}(hjv6hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMUhj@6ubeh}(h]h ]h"]h$]h&]uh1jxhj-6ubeh}(h]h ]h"]h$]h&]uh1jahj?6hMXhj*6ubjb)}(hReturn A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj&6hM\hj6ubjy)}(hhh]j )}(hxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).h](hZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, }(hj6hhhNhNubj )}(h*errno*h]herrno}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj6ubh is set appropriately).}(hj6hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM[hj6ubah}(h]h ]h"]h$]h&]uh1jxhj6ubeh}(h]h ]h"]h$]h&]uh1jahj&6hM\hj*6ubeh}(h]h ]h"]h$]h&]uh1j\hj'6ubah}(h]h ]h"]h$]h&]uh1jxhj6ubeh}(h]h ]h"]h$]h&]uh1jahj&6hM\hj^ubjb)}(hBPF_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)}(hBPF_LINK_DETACHh]hBPF_LINK_DETACH}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMehj7ubjy)}(hhh]j])}(hhh](jb)}(h_Description Forcefully detach the specified *link_fd* from its corresponding attachment point. h](jh)}(h Descriptionh]h Description}(hj87hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMahj47ubjy)}(hhh]j )}(hRForcefully detach the specified *link_fd* from its corresponding attachment point.h](h Forcefully detach the specified }(hjJ7hhhNhNubj )}(h *link_fd*h]hlink_fd}(hjR7hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjJ7ubh) from its corresponding attachment point.}(hjJ7hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhM`hjG7ubah}(h]h ]h"]h$]h&]uh1jxhj47ubeh}(h]h ]h"]h$]h&]uh1jahjF7hMahj17ubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hj{7hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj-7hMehjw7ubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hj7hhhNhNubj )}(h*errno*h]herrno}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj7ubh is set appropriately.}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMdhj7ubah}(h]h ]h"]h$]h&]uh1jxhjw7ubeh}(h]h ]h"]h$]h&]uh1jahj-7hMehj17ubeh}(h]h ]h"]h$]h&]uh1j\hj.7ubah}(h]h ]h"]h$]h&]uh1jxhj7ubeh}(h]h ]h"]h$]h&]uh1jahj-7hMehj^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)}(hBPF_PROG_BIND_MAPh]hBPF_PROG_BIND_MAP}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMthj7ubjy)}(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 Descriptionh]h Description}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMphj7ubjy)}(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.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMihj7ubj )}(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](hThe map identified by }(hj 8hhhNhNubj )}(h*map_fd*h]hmap_fd}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj 8ubh' is bound to the program identified by }(hj 8hhhNhNubj )}(h *prog_fd*h]hprog_fd}(hj#8hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj 8ubh and only released when }(hj 8hhhNhNubj )}(h *prog_fd*h]hprog_fd}(hj58hhhNhNubah}(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 8hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMkhj7ubeh}(h]h ]h"]h$]h&]uh1jxhj7ubeh}(h]h ]h"]h$]h&]uh1jahj7hMphj7ubjb)}(h[Return Returns zero on success. On error, -1 is returned and *errno* is set appropriately. h](jh)}(hReturnh]hReturn}(hj^8hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj7hMthjZ8ubjy)}(hhh]j )}(hSReturns zero on success. On error, -1 is returned and *errno* is set appropriately.h](h6Returns zero on success. On error, -1 is returned and }(hjo8hhhNhNubj )}(h*errno*h]herrno}(hjw8hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjo8ubh is set appropriately.}(hjo8hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMshjl8ubah}(h]h ]h"]h$]h&]uh1jxhjZ8ubeh}(h]h ]h"]h$]h&]uh1jahj7hMthj7ubeh}(h]h ]h"]h$]h&]uh1j\hj7ubah}(h]h ]h"]h$]h&]uh1jxhj7ubeh}(h]h ]h"]h$]h&]uh1jahj7hMthj^ubjb)}(hXBPF_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)}(hBPF_TOKEN_CREATEh]hBPF_TOKEN_CREATE}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj8ubjy)}(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 Descriptionh]h Description}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj8ubjy)}(hhh](j )}(hXCreate 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]hXCreate 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.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMxhj8ubj )}(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.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj8ubj )}(hXWhen 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]hXWhen 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.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj8ubeh}(h]h ]h"]h$]h&]uh1jxhj8ubeh}(h]h ]h"]h$]h&]uh1jahj8hMhj8ubjb)}(hReturn A new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj8hMhj9ubjy)}(hhh]j )}(hxA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, *errno* is set appropriately).h](hZA new file descriptor (a nonnegative integer), or -1 if an error occurred (in which case, }(hj+9hhhNhNubj )}(h*errno*h]herrno}(hj39hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj+9ubh is set appropriately).}(hj+9hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj(9ubah}(h]h ]h"]h$]h&]uh1jxhj9ubeh}(h]h ]h"]h$]h&]uh1jahj8hMhj8ubeh}(h]h ]h"]h$]h&]uh1j\hj8ubah}(h]h ]h"]h$]h&]uh1jxhj8ubeh}(h]h ]h"]h$]h&]uh1jahj8hMhj^ubjb)}(hXBPF_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)}(hBPF_PROG_STREAM_READ_BY_FDh]hBPF_PROG_STREAM_READ_BY_FD}(hjn9hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjj9ubjy)}(hhh]j])}(hhh](jb)}(hDescription 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 Descriptionh]h Description}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj9ubjy)}(hhh]j )}(hRead 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](hDRead data of a program’s BPF stream. The program is identified by }(hj9hhhNhNubj )}(h *prog_fd*h]hprog_fd}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9ubh&, and the stream is identified by the }(hj9hhhNhNubj )}(h *stream_id*h]h stream_id}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9ubh/. The data is copied to a buffer pointed to by }(hj9hhhNhNubj )}(h *stream_buf*h]h stream_buf}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9ubh#, and filled less than or equal to }(hj9hhhNhNubj )}(h*stream_buf_len*h]hstream_buf_len}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj9ubh bytes.}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj9ubah}(h]h ]h"]h$]h&]uh1jxhj9ubeh}(h]h ]h"]h$]h&]uh1jahj9hMhj9ubjb)}(hReturn Number of bytes read from the stream on success, or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jghj|9hMhj9ubjy)}(hhh]j )}(hzNumber 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:hhhNhNubj )}(h*errno*h]herrno}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:ubh is set appropriately).}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj:ubah}(h]h ]h"]h$]h&]uh1jxhj9ubeh}(h]h ]h"]h$]h&]uh1jahj|9hMhj9ubeh}(h]h ]h"]h$]h&]uh1j\hj}9ubah}(h]h ]h"]h$]h&]uh1jxhjj9ubeh}(h]h ]h"]h$]h&]uh1jahj|9hMhj^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)}(hBPF_PROG_ASSOC_STRUCT_OPSh]hBPF_PROG_ASSOC_STRUCT_OPS}(hjT:hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhjP:ubjy)}(hhh]j])}(hhh](jb)}(hDescription 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 Descriptionh]h Description}(hjm:hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhji:ubjy)}(hhh]j )}(hAssociate 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](hSAssociate a BPF program with a struct_ops map. The struct_ops map is identified by }(hj:hhhNhNubj )}(h*map_fd*h]hmap_fd}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:ubh& and the BPF program is identified by }(hj:hhhNhNubj )}(h *prog_fd*h]hprog_fd}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:ubh.}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj|:ubah}(h]h ]h"]h$]h&]uh1jxhji:ubeh}(h]h ]h"]h$]h&]uh1jahj{:hMhjf:ubjb)}(h^Return 0 on success or -1 if an error occurred (in which case, *errno* is set appropriately). h](jh)}(hReturnh]hReturn}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jghjb:hMhj:ubjy)}(hhh]j )}(hV0 on success or -1 if an error occurred (in which case, *errno* is set appropriately).h](h80 on success or -1 if an error occurred (in which case, }(hj:hhhNhNubj )}(h*errno*h]herrno}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:ubh is set appropriately).}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj:ubah}(h]h ]h"]h$]h&]uh1jxhj:ubeh}(h]h ]h"]h$]h&]uh1jahjb:hMhjf:ubeh}(h]h ]h"]h$]h&]uh1j\hjc:ubah}(h]h ]h"]h$]h&]uh1jxhjP:ubeh}(h]h ]h"]h$]h&]uh1jahjb:hMhj^ubjb)}(hXNOTES 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)}(hNOTESh]hNOTES}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jghc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj;ubjy)}(hhh](j )}(hAeBPF objects (maps and programs) can be shared between processes.h]hAeBPF objects (maps and programs) can be shared between processes.}(hj(;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj%;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](hAfter }(hj>;hhhNhNubj)}(h**fork**h]hfork}(hjF;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>;ubhN (2), the child inherits file descriptors referring to the same eBPF objects.}(hj>;hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj:;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](hCFile descriptors referring to eBPF objects can be transferred over }(hji;hhhNhNubj)}(h**unix**h]hunix}(hjq;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji;ubh (7) domain sockets.}(hji;hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhje;ubah}(h]h ]h"]h$]h&]uh1jhj7;ubj)}(htFile descriptors referring to eBPF objects can be duplicated in the usual way, using **dup**\ (2) and similar calls.h]j )}(htFile descriptors referring to eBPF objects can be duplicated in the usual way, using **dup**\ (2) and similar calls.h](hUFile descriptors referring to eBPF objects can be duplicated in the usual way, using }(hj;hhhNhNubj)}(h**dup**h]hdup}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubh (2) and similar calls.}(hj;hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj;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](hUFile descriptors referring to eBPF objects can be pinned to the filesystem using the }(hj;hhhNhNubj)}(h**BPF_OBJ_PIN**h]h BPF_OBJ_PIN}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubh command of }(hj;hhhNhNubj)}(h**bpf**h]hbpf}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubh (2).}(hj;hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj;ubah}(h]h ]h"]h$]h&]uh1jhj7;ubeh}(h]h ]h"]h$]h&]jj uh1hhj^;hMhj%;ubj )}(hAn 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]hAn 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;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/userspace-api/ebpf/syscall:19: ./include/uapi/linux/bpf.hhMhj%;ubeh}(h]h ]h"]h$]h&]uh1jxhj;ubeh}(h]h ]h"]h$]h&]uh1jahj$;hMhj^ubeh}(h]h ]h"]h$]h&]uh1j\hjhhhNhNubh)}(hLinks:h]hLinks:}hj<sbah}(h]h ]h"]h$]h&]hhuh1hhjhhhhhKubhtarget)}(h4.. _man-pages: https://www.kernel.org/doc/man-pages/h]h}(h] man-pagesah ]h"] man-pagesah$]h&]jjuh1j-<hKhjhhhhnj referencedKubj.<)}(h<.. _bpf(2): https://man7.org/linux/man-pages/man2/bpf.2.htmlh]h}(h]bpf-2ah ]h"]bpf(2)ah$]h&]jjuh1j-<hKhjhhhhj;<Kubeh}(h]bpf-subcommand-referenceah ]h"]bpf() subcommand referenceah$]h&]uh1hhhhhhhhKubeh}(h] ebpf-syscallah ]h"] ebpf syscallah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj{<error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}( man-pages]jabpf(2)]jaurefids}nameids}(jU<jR<jM<jJ<j8<j5<jE<jB<u nametypes}(jU<jM<j8<jE<uh}(jR<hjJ<jj5<j/<jB<j<<u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.