€•ÕNŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ/translations/zh_CN/bpf/maps”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/zh_TW/bpf/maps”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/it_IT/bpf/maps”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ja_JP/bpf/maps”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ko_KR/bpf/maps”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/pt_BR/bpf/maps”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/sp_SP/bpf/maps”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒBPF maps”h]”hŒBPF maps”…””}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ6/var/lib/git/docbuild/linux/Documentation/bpf/maps.rst”h´KubhŒ paragraph”“”)”}”(hX«BPF 'maps' provide generic storage of different types for sharing data between kernel and user space. There are several storage types available, including hash, array, bloom filter and radix-tree. Several of the map types exist to support specific BPF helpers that perform actions based on the map contents. The maps are accessed from BPF programs via BPF helpers which are documented in the `man-pages`_ for `bpf-helpers(7)`_.”h]”(hXŒBPF ‘maps’ provide generic storage of different types for sharing data between kernel and user space. There are several storage types available, including hash, array, bloom filter and radix-tree. Several of the map types exist to support specific BPF helpers that perform actions based on the map contents. The maps are accessed from BPF programs via BPF helpers which are documented in the ”…””}”(hhÍh²hh³Nh´NubhŒ reference”“”)”}”(hŒ `man-pages`_”h]”hŒ man-pages”…””}”(hh×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ man-pages”Œrefuri”Œ%https://www.kernel.org/doc/man-pages/”uh1hÕhhÍŒresolved”KubhŒ for ”…””}”(hhÍh²hh³Nh´NubhÖ)”}”(hŒ`bpf-helpers(7)`_”h]”hŒbpf-helpers(7)”…””}”(hhîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œbpf-helpers(7)”hçŒ8https://man7.org/linux/man-pages/man7/bpf-helpers.7.html”uh1hÕhhÍhéKubhŒ.”…””}”(hhÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)”}”(hXBPF maps are accessed from user space via the ``bpf`` syscall, which provides commands to create maps, lookup elements, update elements and delete elements. More details of the BPF syscall are available in `ebpf-syscall`_ and in the `man-pages`_ for `bpf(2)`_.”h]”(hŒ.BPF maps are accessed from user space via the ”…””}”(hj h²hh³Nh´NubhŒliteral”“”)”}”(hŒ``bpf``”h]”hŒbpf”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ™ syscall, which provides commands to create maps, lookup elements, update elements and delete elements. More details of the BPF syscall are available in ”…””}”(hj h²hh³Nh´NubhÖ)”}”(hŒ`ebpf-syscall`_”h]”hŒ ebpf-syscall”…””}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ ebpf-syscall”hçŒ7https://docs.kernel.org/userspace-api/ebpf/syscall.html”uh1hÕhj héKubhŒ and in the ”…””}”(hj h²hh³Nh´NubhÖ)”}”(hŒ `man-pages`_”h]”hŒ man-pages”…””}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ man-pages”hçhèuh1hÕhj héKubhŒ for ”…””}”(hj h²hh³Nh´NubhÖ)”}”(hŒ `bpf(2)`_”h]”hŒbpf(2)”…””}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œbpf(2)”hçŒ0https://man7.org/linux/man-pages/man2/bpf.2.html”uh1hÕhj héKubhŒ.”…””}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hh·h²hubh¶)”}”(hhh]”(h»)”}”(hŒ Map Types”h]”hŒ Map Types”…””}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjih²hh³hÊh´KubhŒcompound”“”)”}”(hhh]”hŒtoctree”“”)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”hŒbpf/maps”Œentries”]”(NŒ bpf/map_array”†”NŒbpf/map_bloom_filter”†”NŒbpf/map_cgroup_storage”†”NŒbpf/map_cgrp_storage”†”NŒbpf/map_cpumap”†”NŒbpf/map_devmap”†”NŒ bpf/map_hash”†”NŒbpf/map_lpm_trie”†”NŒbpf/map_of_maps”†”NŒbpf/map_queue_stack”†”NŒbpf/map_sk_storage”†”NŒbpf/map_sockmap”†”NŒbpf/map_xskmap”†”eŒ includefiles”]”(jjj‘j“j•j—j™j›jjŸj¡j£j¥eŒmaxdepth”KŒcaption”NŒglob”ˆŒhidden”‰Œ includehidden”‰Œnumbered”KŒ titlesonly”‰Œ rawentries”]”uh1jh³hÊh´Khj|ubah}”(h]”h ]”Œtoctree-wrapper”ah"]”h$]”h&]”uh1jzhjih²hh³hÊh´Nubeh}”(h]”Œ map-types”ah ]”h"]”Œ map types”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)”}”(hhh]”(h»)”}”(hŒ Usage Notes”h]”hŒ Usage Notes”…””}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÁh²hh³hÊh´KubhŒindex”“”)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œbpf (C function)”Œc.bpf”hNt”auh1jÒhjÁh²hh³Nh´NubhŒdesc”“”)”}”(hhh]”(hŒdesc_signature”“”)”}”(hŒ4int bpf(int command, union bpf_attr *attr, u32 size)”h]”hŒdesc_signature_line”“”)”}”(hŒ4int bpf(int command, union bpf_attr *attr, u32 size)”h]”(hŒdesc_sig_keyword_type”“”)”}”(hŒint”h]”hŒint”…””}”(hjöh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jôhjðh²hh³hÊh´KubhŒdesc_sig_space”“”)”}”(hŒ ”h]”hŒ ”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jhjðh²hh³hÊh´KubhŒ desc_name”“”)”}”(hŒbpf”h]”hŒ desc_sig_name”“”)”}”(hŒbpf”h]”hŒbpf”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jhjðh²hh³hÊh´KubhŒdesc_parameterlist”“”)”}”(hŒ-(int command, union bpf_attr *attr, u32 size)”h]”(hŒdesc_parameter”“”)”}”(hŒ int command”h]”(jõ)”}”(hŒint”h]”hŒint”…””}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jôhj?ubj)”}”(hŒ ”h]”hŒ ”…””}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?ubj)”}”(hŒcommand”h]”hŒcommand”…””}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j)ah"]”h$]”h&]”uh1jhj?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj5j6uh1j=hj9ubj>)”}”(hŒunion bpf_attr *attr”h]”(hŒdesc_sig_keyword”“”)”}”(hŒunion”h]”hŒunion”…””}”(hjzh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jxhjtubj)”}”(hŒ ”h]”hŒ ”…””}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtubh)”}”(hhh]”j)”}”(hŒbpf_attr”h]”hŒbpf_attr”…””}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j)ah"]”h$]”h&]”uh1jhj—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”jœŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)”}”Œdata”]”j¶Œ ASTIdentifier”“”)”}”j±j sbŒc.bpf”†”asbuh1hhjtubj)”}”(hŒ ”h]”hŒ ”…””}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtubhŒdesc_sig_punctuation”“”)”}”(hŒ*”h]”hŒ*”…””}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jÑhjtubj)”}”(hŒattr”h]”hŒattr”…””}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j)ah"]”h$]”h&]”uh1jhjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj5j6uh1j=hj9ubj>)”}”(hŒu32 size”h]”(h)”}”(hhh]”j)”}”(hŒu32”h]”hŒu32”…””}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j)ah"]”h$]”h&]”uh1jhjûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¯Œreftype”j±Œ reftarget”jŒmodname”NŒ classname”Njµj¸)”}”j»]”j¿Œc.bpf”†”asbuh1hhj÷ubj)”}”(hŒ ”h]”hŒ ”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷ubj)”}”(hŒsize”h]”hŒsize”…””}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j)ah"]”h$]”h&]”uh1jhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj5j6uh1j=hj9ubeh}”(h]”h ]”h"]”h$]”h&]”j5j6uh1j7hjðh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j5j6Œ add_permalink”ˆuh1jîŒsphinx_line_type”Œ declarator”hjêh²hh³hÊh´Kubah}”(h]”jáah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jèh³hÊh´Khjåh²hubhŒ desc_content”“”)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jYhjåh²hh³hÊh´Kubeh}”(h]”h ]”(j¯Œfunction”eh"]”h$]”h&]”Œdomain”j¯Œobjtype”jgŒdesctype”jgŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jãh²hhjÁh³Nh´NubhÌ)”}”(hŒÎUse the ``bpf()`` system call to perform the operation specified by ``command``. The operation takes parameters provided in ``attr``. The ``size`` argument is the size of the ``union bpf_attr`` in ``attr``.”h]”(hŒUse the ”…””}”(hjqh²hh³Nh´Nubj)”}”(hŒ ``bpf()``”h]”hŒbpf()”…””}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqubhŒ3 system call to perform the operation specified by ”…””}”(hjqh²hh³Nh´Nubj)”}”(hŒ ``command``”h]”hŒcommand”…””}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqubhŒ-. The operation takes parameters provided in ”…””}”(hjqh²hh³Nh´Nubj)”}”(hŒ``attr``”h]”hŒattr”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqubhŒ. The ”…””}”(hjqh²hh³Nh´Nubj)”}”(hŒ``size``”h]”hŒsize”…””}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqubhŒ argument is the size of the ”…””}”(hjqh²hh³Nh´Nubj)”}”(hŒ``union bpf_attr``”h]”hŒunion bpf_attr”…””}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqubhŒ in ”…””}”(hjqh²hh³Nh´Nubj)”}”(hŒ``attr``”h]”hŒattr”…””}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqubhŒ.”…””}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K!hjÁh²hubhÌ)”}”(hŒ**BPF_MAP_CREATE**”h]”hŒstrong”“”)”}”(hjíh]”hŒBPF_MAP_CREATE”…””}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K%hjÁh²hubhÌ)”}”(hŒ>Create a map with the desired type and attributes in ``attr``:”h]”(hŒ5Create a map with the desired type and attributes in ”…””}”(hjh²hh³Nh´Nubj)”}”(hŒ``attr``”h]”hŒattr”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ:”…””}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K'hjÁh²hubhŒ literal_block”“”)”}”(hX€int fd; union bpf_attr attr = { .map_type = BPF_MAP_TYPE_ARRAY; /* mandatory */ .key_size = sizeof(__u32); /* mandatory */ .value_size = sizeof(__u32); /* mandatory */ .max_entries = 256; /* mandatory */ .map_flags = BPF_F_MMAPABLE; .map_name = "example_array"; }; fd = bpf(BPF_MAP_CREATE, &attr, sizeof(attr));”h]”hX€int fd; union bpf_attr attr = { .map_type = BPF_MAP_TYPE_ARRAY; /* mandatory */ .key_size = sizeof(__u32); /* mandatory */ .value_size = sizeof(__u32); /* mandatory */ .max_entries = 256; /* mandatory */ .map_flags = BPF_F_MMAPABLE; .map_name = "example_array"; }; fd = bpf(BPF_MAP_CREATE, &attr, sizeof(attr));”…””}”hj&sbah}”(h]”h ]”h"]”h$]”h&]”j5j6Œforce”‰Œlanguage”j¯Œhighlight_args”}”uh1j$h³hÊh´K)hjÁh²hubhÌ)”}”(hŒáReturns a process-local file descriptor on success, or negative error in case of failure. The map can be deleted by calling ``close(fd)``. Maps held by open file descriptors will be deleted automatically when a process exits.”h]”(hŒ|Returns a process-local file descriptor on success, or negative error in case of failure. The map can be deleted by calling ”…””}”(hj8h²hh³Nh´Nubj)”}”(hŒ ``close(fd)``”h]”hŒ close(fd)”…””}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubhŒX. Maps held by open file descriptors will be deleted automatically when a process exits.”…””}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K7hjÁh²hubhŒnote”“”)”}”(hŒUValid characters for ``map_name`` are ``A-Z``, ``a-z``, ``0-9``, ``'_'`` and ``'.'``.”h]”hÌ)”}”(hŒUValid characters for ``map_name`` are ``A-Z``, ``a-z``, ``0-9``, ``'_'`` and ``'.'``.”h]”(hŒValid characters for ”…””}”(hj^h²hh³Nh´Nubj)”}”(hŒ ``map_name``”h]”hŒmap_name”…””}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^ubhŒ are ”…””}”(hj^h²hh³Nh´Nubj)”}”(hŒ``A-Z``”h]”hŒA-Z”…””}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^ubhŒ, ”…””}”(hj^h²hh³Nh´Nubj)”}”(hŒ``a-z``”h]”hŒa-z”…””}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^ubhŒ, ”…””}”hj^sbj)”}”(hŒ``0-9``”h]”hŒ0-9”…””}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^ubhŒ, ”…””}”(hj^h²hh³Nh´Nubj)”}”(hŒ``'_'``”h]”hŒ'_'”…””}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^ubhŒ and ”…””}”(hj^h²hh³Nh´Nubj)”}”(hŒ``'.'``”h]”hŒ'.'”…””}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^ubhŒ.”…””}”(hj^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K;hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjÁh²hh³hÊh´NubhÌ)”}”(hŒ**BPF_MAP_LOOKUP_ELEM**”h]”jð)”}”(hjàh]”hŒBPF_MAP_LOOKUP_ELEM”…””}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K>hjÁh²hubhÌ)”}”(hŒ³Lookup key in a given map using ``attr->map_fd``, ``attr->key``, ``attr->value``. Returns zero and stores found elem into ``attr->value`` on success, or negative error on failure.”h]”(hŒ Lookup key in a given map using ”…””}”(hjõh²hh³Nh´Nubj)”}”(hŒ``attr->map_fd``”h]”hŒ attr->map_fd”…””}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõubhŒ, ”…””}”(hjõh²hh³Nh´Nubj)”}”(hŒ ``attr->key``”h]”hŒ attr->key”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõubhŒ, ”…””}”(hjõh²hh³Nh´Nubj)”}”(hŒ``attr->value``”h]”hŒ attr->value”…””}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõubhŒ*. Returns zero and stores found elem into ”…””}”(hjõh²hh³Nh´Nubj)”}”(hŒ``attr->value``”h]”hŒ attr->value”…””}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõubhŒ* on success, or negative error on failure.”…””}”(hjõh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K@hjÁh²hubhÌ)”}”(hŒ**BPF_MAP_UPDATE_ELEM**”h]”jð)”}”(hjMh]”hŒBPF_MAP_UPDATE_ELEM”…””}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KDhjÁh²hubhÌ)”}”(hŒœCreate or update key/value pair in a given map using ``attr->map_fd``, ``attr->key``, ``attr->value``. Returns zero on success or negative error on failure.”h]”(hŒ5Create or update key/value pair in a given map using ”…””}”(hjbh²hh³Nh´Nubj)”}”(hŒ``attr->map_fd``”h]”hŒ attr->map_fd”…””}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubhŒ, ”…””}”(hjbh²hh³Nh´Nubj)”}”(hŒ ``attr->key``”h]”hŒ attr->key”…””}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubhŒ, ”…””}”(hjbh²hh³Nh´Nubj)”}”(hŒ``attr->value``”h]”hŒ attr->value”…””}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubhŒ7. Returns zero on success or negative error on failure.”…””}”(hjbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KFhjÁh²hubhÌ)”}”(hŒ**BPF_MAP_DELETE_ELEM**”h]”jð)”}”(hj¨h]”hŒBPF_MAP_DELETE_ELEM”…””}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KIhjÁh²hubhÌ)”}”(hŒŠFind and delete element by key in a given map using ``attr->map_fd``, ``attr->key``. Returns zero on success or negative error on failure.”h]”(hŒ4Find and delete element by key in a given map using ”…””}”(hj½h²hh³Nh´Nubj)”}”(hŒ``attr->map_fd``”h]”hŒ attr->map_fd”…””}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ubhŒ, ”…””}”(hj½h²hh³Nh´Nubj)”}”(hŒ ``attr->key``”h]”hŒ attr->key”…””}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ubhŒ7. Returns zero on success or negative error on failure.”…””}”(hj½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KKhjÁh²hubhŒcomment”“”)”}”(hŒLinks:”h]”hŒLinks:”…””}”hjñsbah}”(h]”h ]”h"]”h$]”h&]”j5j6uh1jïhjÁh²hh³hÊh´KNubhŒtarget”“”)”}”(hŒ4.. _man-pages: https://www.kernel.org/doc/man-pages/”h]”h}”(h]”Œ man-pages”ah ]”h"]”Œ man-pages”ah$]”h&]”hçhèuh1jÿh´KOhjÁh²hh³hÊŒ referenced”Kubj)”}”(hŒ<.. _bpf(2): https://man7.org/linux/man-pages/man2/bpf.2.html”h]”h}”(h]”Œbpf-2”ah ]”h"]”Œbpf(2)”ah$]”h&]”hçj^uh1jÿh´KPhjÁh²hh³hÊj Kubj)”}”(hŒL.. _bpf-helpers(7): https://man7.org/linux/man-pages/man7/bpf-helpers.7.html”h]”h}”(h]”Œ bpf-helpers-7”ah ]”h"]”Œbpf-helpers(7)”ah$]”h&]”hçhþuh1jÿh´KQhjÁh²hh³hÊj Kubj)”}”(hŒI.. _ebpf-syscall: https://docs.kernel.org/userspace-api/ebpf/syscall.html”h]”h}”(h]”Œ ebpf-syscall”ah ]”h"]”Œ ebpf-syscall”ah$]”h&]”hçj5uh1jÿh´KRhjÁh²hh³hÊj Kubeh}”(h]”Œ usage-notes”ah ]”h"]”Œ usage notes”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubeh}”(h]”Œbpf-maps”ah ]”h"]”Œbpf maps”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jeŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”(Œ man-pages”]”(h×j:eŒbpf-helpers(7)”]”hîaŒ ebpf-syscall”]”j%aŒbpf(2)”]”jNauŒrefids”}”Œnameids”}”(j?j<j¾j»j7j4j jjjj#j j/j,uŒ nametypes”}”(j?‰j¾‰j7‰j ˆjˆj#ˆj/ˆuh}”(j<h·j»jij4jÁjájêjjjjj jj,j&uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.