1*858ea5e5SAndroid Build Coastguard Worker.. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*858ea5e5SAndroid Build Coastguard Worker 3*858ea5e5SAndroid Build Coastguard Worker================ 4*858ea5e5SAndroid Build Coastguard Workerbpftool-map 5*858ea5e5SAndroid Build Coastguard Worker================ 6*858ea5e5SAndroid Build Coastguard Worker------------------------------------------------------------------------------- 7*858ea5e5SAndroid Build Coastguard Workertool for inspection and simple manipulation of eBPF maps 8*858ea5e5SAndroid Build Coastguard Worker------------------------------------------------------------------------------- 9*858ea5e5SAndroid Build Coastguard Worker 10*858ea5e5SAndroid Build Coastguard Worker:Manual section: 8 11*858ea5e5SAndroid Build Coastguard Worker 12*858ea5e5SAndroid Build Coastguard Worker.. include:: substitutions.rst 13*858ea5e5SAndroid Build Coastguard Worker 14*858ea5e5SAndroid Build Coastguard WorkerSYNOPSIS 15*858ea5e5SAndroid Build Coastguard Worker======== 16*858ea5e5SAndroid Build Coastguard Worker 17*858ea5e5SAndroid Build Coastguard Worker **bpftool** [*OPTIONS*] **map** *COMMAND* 18*858ea5e5SAndroid Build Coastguard Worker 19*858ea5e5SAndroid Build Coastguard Worker *OPTIONS* := { |COMMON_OPTIONS| | { **-f** | **--bpffs** } | { **-n** | **--nomount** } } 20*858ea5e5SAndroid Build Coastguard Worker 21*858ea5e5SAndroid Build Coastguard Worker *COMMANDS* := 22*858ea5e5SAndroid Build Coastguard Worker { **show** | **list** | **create** | **dump** | **update** | **lookup** | **getnext** | 23*858ea5e5SAndroid Build Coastguard Worker **delete** | **pin** | **help** } 24*858ea5e5SAndroid Build Coastguard Worker 25*858ea5e5SAndroid Build Coastguard WorkerMAP COMMANDS 26*858ea5e5SAndroid Build Coastguard Worker============= 27*858ea5e5SAndroid Build Coastguard Worker 28*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map** { **show** | **list** } [*MAP*] 29*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map create** *FILE* **type** *TYPE* **key** *KEY_SIZE* **value** *VALUE_SIZE* \ 30*858ea5e5SAndroid Build Coastguard Worker| **entries** *MAX_ENTRIES* **name** *NAME* [**flags** *FLAGS*] [**inner_map** *MAP*] \ 31*858ea5e5SAndroid Build Coastguard Worker| [**offload_dev** *NAME*] 32*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map dump** *MAP* 33*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map update** *MAP* [**key** *DATA*] [**value** *VALUE*] [*UPDATE_FLAGS*] 34*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map lookup** *MAP* [**key** *DATA*] 35*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map getnext** *MAP* [**key** *DATA*] 36*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map delete** *MAP* **key** *DATA* 37*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map pin** *MAP* *FILE* 38*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map event_pipe** *MAP* [**cpu** *N* **index** *M*] 39*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map peek** *MAP* 40*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map push** *MAP* **value** *VALUE* 41*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map pop** *MAP* 42*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map enqueue** *MAP* **value** *VALUE* 43*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map dequeue** *MAP* 44*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map freeze** *MAP* 45*858ea5e5SAndroid Build Coastguard Worker| **bpftool** **map help** 46*858ea5e5SAndroid Build Coastguard Worker| 47*858ea5e5SAndroid Build Coastguard Worker| *MAP* := { **id** *MAP_ID* | **pinned** *FILE* | **name** *MAP_NAME* } 48*858ea5e5SAndroid Build Coastguard Worker| *DATA* := { [**hex**] *BYTES* } 49*858ea5e5SAndroid Build Coastguard Worker| *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* | **name** *PROG_NAME* } 50*858ea5e5SAndroid Build Coastguard Worker| *VALUE* := { *DATA* | *MAP* | *PROG* } 51*858ea5e5SAndroid Build Coastguard Worker| *UPDATE_FLAGS* := { **any** | **exist** | **noexist** } 52*858ea5e5SAndroid Build Coastguard Worker| *TYPE* := { **hash** | **array** | **prog_array** | **perf_event_array** | **percpu_hash** 53*858ea5e5SAndroid Build Coastguard Worker| | **percpu_array** | **stack_trace** | **cgroup_array** | **lru_hash** 54*858ea5e5SAndroid Build Coastguard Worker| | **lru_percpu_hash** | **lpm_trie** | **array_of_maps** | **hash_of_maps** 55*858ea5e5SAndroid Build Coastguard Worker| | **devmap** | **devmap_hash** | **sockmap** | **cpumap** | **xskmap** | **sockhash** 56*858ea5e5SAndroid Build Coastguard Worker| | **cgroup_storage** | **reuseport_sockarray** | **percpu_cgroup_storage** 57*858ea5e5SAndroid Build Coastguard Worker| | **queue** | **stack** | **sk_storage** | **struct_ops** | **ringbuf** | **inode_storage** 58*858ea5e5SAndroid Build Coastguard Worker| | **task_storage** | **bloom_filter** | **user_ringbuf** | **cgrp_storage** | **arena** } 59*858ea5e5SAndroid Build Coastguard Worker 60*858ea5e5SAndroid Build Coastguard WorkerDESCRIPTION 61*858ea5e5SAndroid Build Coastguard Worker=========== 62*858ea5e5SAndroid Build Coastguard Worker **bpftool map { show | list }** [*MAP*] 63*858ea5e5SAndroid Build Coastguard Worker Show information about loaded maps. If *MAP* is specified 64*858ea5e5SAndroid Build Coastguard Worker show information only about given maps, otherwise list all 65*858ea5e5SAndroid Build Coastguard Worker maps currently loaded on the system. In case of **name**, 66*858ea5e5SAndroid Build Coastguard Worker *MAP* may match several maps which will all be shown. 67*858ea5e5SAndroid Build Coastguard Worker 68*858ea5e5SAndroid Build Coastguard Worker Output will start with map ID followed by map type and 69*858ea5e5SAndroid Build Coastguard Worker zero or more named attributes (depending on kernel version). 70*858ea5e5SAndroid Build Coastguard Worker 71*858ea5e5SAndroid Build Coastguard Worker Since Linux 5.8 bpftool is able to discover information about 72*858ea5e5SAndroid Build Coastguard Worker processes that hold open file descriptors (FDs) against BPF 73*858ea5e5SAndroid Build Coastguard Worker maps. On such kernels bpftool will automatically emit this 74*858ea5e5SAndroid Build Coastguard Worker information as well. 75*858ea5e5SAndroid Build Coastguard Worker 76*858ea5e5SAndroid Build Coastguard Worker **bpftool map create** *FILE* **type** *TYPE* **key** *KEY_SIZE* **value** *VALUE_SIZE* **entries** *MAX_ENTRIES* **name** *NAME* [**flags** *FLAGS*] [**inner_map** *MAP*] [**offload_dev** *NAME*] 77*858ea5e5SAndroid Build Coastguard Worker Create a new map with given parameters and pin it to *bpffs* 78*858ea5e5SAndroid Build Coastguard Worker as *FILE*. 79*858ea5e5SAndroid Build Coastguard Worker 80*858ea5e5SAndroid Build Coastguard Worker *FLAGS* should be an integer which is the combination of 81*858ea5e5SAndroid Build Coastguard Worker desired flags, e.g. 1024 for **BPF_F_MMAPABLE** (see bpf.h 82*858ea5e5SAndroid Build Coastguard Worker UAPI header for existing flags). 83*858ea5e5SAndroid Build Coastguard Worker 84*858ea5e5SAndroid Build Coastguard Worker To create maps of type array-of-maps or hash-of-maps, the 85*858ea5e5SAndroid Build Coastguard Worker **inner_map** keyword must be used to pass an inner map. The 86*858ea5e5SAndroid Build Coastguard Worker kernel needs it to collect metadata related to the inner maps 87*858ea5e5SAndroid Build Coastguard Worker that the new map will work with. 88*858ea5e5SAndroid Build Coastguard Worker 89*858ea5e5SAndroid Build Coastguard Worker Keyword **offload_dev** expects a network interface name, 90*858ea5e5SAndroid Build Coastguard Worker and is used to request hardware offload for the map. 91*858ea5e5SAndroid Build Coastguard Worker 92*858ea5e5SAndroid Build Coastguard Worker **bpftool map dump** *MAP* 93*858ea5e5SAndroid Build Coastguard Worker Dump all entries in a given *MAP*. In case of **name**, 94*858ea5e5SAndroid Build Coastguard Worker *MAP* may match several maps which will all be dumped. 95*858ea5e5SAndroid Build Coastguard Worker 96*858ea5e5SAndroid Build Coastguard Worker **bpftool map update** *MAP* [**key** *DATA*] [**value** *VALUE*] [*UPDATE_FLAGS*] 97*858ea5e5SAndroid Build Coastguard Worker Update map entry for a given *KEY*. 98*858ea5e5SAndroid Build Coastguard Worker 99*858ea5e5SAndroid Build Coastguard Worker *UPDATE_FLAGS* can be one of: **any** update existing entry 100*858ea5e5SAndroid Build Coastguard Worker or add if doesn't exit; **exist** update only if entry already 101*858ea5e5SAndroid Build Coastguard Worker exists; **noexist** update only if entry doesn't exist. 102*858ea5e5SAndroid Build Coastguard Worker 103*858ea5e5SAndroid Build Coastguard Worker If the **hex** keyword is provided in front of the bytes 104*858ea5e5SAndroid Build Coastguard Worker sequence, the bytes are parsed as hexadecimal values, even if 105*858ea5e5SAndroid Build Coastguard Worker no "0x" prefix is added. If the keyword is not provided, then 106*858ea5e5SAndroid Build Coastguard Worker the bytes are parsed as decimal values, unless a "0x" prefix 107*858ea5e5SAndroid Build Coastguard Worker (for hexadecimal) or a "0" prefix (for octal) is provided. 108*858ea5e5SAndroid Build Coastguard Worker 109*858ea5e5SAndroid Build Coastguard Worker **bpftool map lookup** *MAP* [**key** *DATA*] 110*858ea5e5SAndroid Build Coastguard Worker Lookup **key** in the map. 111*858ea5e5SAndroid Build Coastguard Worker 112*858ea5e5SAndroid Build Coastguard Worker **bpftool map getnext** *MAP* [**key** *DATA*] 113*858ea5e5SAndroid Build Coastguard Worker Get next key. If *key* is not specified, get first key. 114*858ea5e5SAndroid Build Coastguard Worker 115*858ea5e5SAndroid Build Coastguard Worker **bpftool map delete** *MAP* **key** *DATA* 116*858ea5e5SAndroid Build Coastguard Worker Remove entry from the map. 117*858ea5e5SAndroid Build Coastguard Worker 118*858ea5e5SAndroid Build Coastguard Worker **bpftool map pin** *MAP* *FILE* 119*858ea5e5SAndroid Build Coastguard Worker Pin map *MAP* as *FILE*. 120*858ea5e5SAndroid Build Coastguard Worker 121*858ea5e5SAndroid Build Coastguard Worker Note: *FILE* must be located in *bpffs* mount. It must not 122*858ea5e5SAndroid Build Coastguard Worker contain a dot character ('.'), which is reserved for future 123*858ea5e5SAndroid Build Coastguard Worker extensions of *bpffs*. 124*858ea5e5SAndroid Build Coastguard Worker 125*858ea5e5SAndroid Build Coastguard Worker **bpftool** **map event_pipe** *MAP* [**cpu** *N* **index** *M*] 126*858ea5e5SAndroid Build Coastguard Worker Read events from a **BPF_MAP_TYPE_PERF_EVENT_ARRAY** map. 127*858ea5e5SAndroid Build Coastguard Worker 128*858ea5e5SAndroid Build Coastguard Worker Install perf rings into a perf event array map and dump 129*858ea5e5SAndroid Build Coastguard Worker output of any **bpf_perf_event_output**\ () call in the kernel. 130*858ea5e5SAndroid Build Coastguard Worker By default read the number of CPUs on the system and 131*858ea5e5SAndroid Build Coastguard Worker install perf ring for each CPU in the corresponding index 132*858ea5e5SAndroid Build Coastguard Worker in the array. 133*858ea5e5SAndroid Build Coastguard Worker 134*858ea5e5SAndroid Build Coastguard Worker If **cpu** and **index** are specified, install perf ring 135*858ea5e5SAndroid Build Coastguard Worker for given **cpu** at **index** in the array (single ring). 136*858ea5e5SAndroid Build Coastguard Worker 137*858ea5e5SAndroid Build Coastguard Worker Note that installing a perf ring into an array will silently 138*858ea5e5SAndroid Build Coastguard Worker replace any existing ring. Any other application will stop 139*858ea5e5SAndroid Build Coastguard Worker receiving events if it installed its rings earlier. 140*858ea5e5SAndroid Build Coastguard Worker 141*858ea5e5SAndroid Build Coastguard Worker **bpftool map peek** *MAP* 142*858ea5e5SAndroid Build Coastguard Worker Peek next value in the queue or stack. 143*858ea5e5SAndroid Build Coastguard Worker 144*858ea5e5SAndroid Build Coastguard Worker **bpftool map push** *MAP* **value** *VALUE* 145*858ea5e5SAndroid Build Coastguard Worker Push *VALUE* onto the stack. 146*858ea5e5SAndroid Build Coastguard Worker 147*858ea5e5SAndroid Build Coastguard Worker **bpftool map pop** *MAP* 148*858ea5e5SAndroid Build Coastguard Worker Pop and print value from the stack. 149*858ea5e5SAndroid Build Coastguard Worker 150*858ea5e5SAndroid Build Coastguard Worker **bpftool map enqueue** *MAP* **value** *VALUE* 151*858ea5e5SAndroid Build Coastguard Worker Enqueue *VALUE* into the queue. 152*858ea5e5SAndroid Build Coastguard Worker 153*858ea5e5SAndroid Build Coastguard Worker **bpftool map dequeue** *MAP* 154*858ea5e5SAndroid Build Coastguard Worker Dequeue and print value from the queue. 155*858ea5e5SAndroid Build Coastguard Worker 156*858ea5e5SAndroid Build Coastguard Worker **bpftool map freeze** *MAP* 157*858ea5e5SAndroid Build Coastguard Worker Freeze the map as read-only from user space. Entries from a 158*858ea5e5SAndroid Build Coastguard Worker frozen map can not longer be updated or deleted with the 159*858ea5e5SAndroid Build Coastguard Worker **bpf**\ () system call. This operation is not reversible, 160*858ea5e5SAndroid Build Coastguard Worker and the map remains immutable from user space until its 161*858ea5e5SAndroid Build Coastguard Worker destruction. However, read and write permissions for BPF 162*858ea5e5SAndroid Build Coastguard Worker programs to the map remain unchanged. 163*858ea5e5SAndroid Build Coastguard Worker 164*858ea5e5SAndroid Build Coastguard Worker **bpftool map help** 165*858ea5e5SAndroid Build Coastguard Worker Print short help message. 166*858ea5e5SAndroid Build Coastguard Worker 167*858ea5e5SAndroid Build Coastguard WorkerOPTIONS 168*858ea5e5SAndroid Build Coastguard Worker======= 169*858ea5e5SAndroid Build Coastguard Worker .. include:: common_options.rst 170*858ea5e5SAndroid Build Coastguard Worker 171*858ea5e5SAndroid Build Coastguard Worker -f, --bpffs 172*858ea5e5SAndroid Build Coastguard Worker Show file names of pinned maps. 173*858ea5e5SAndroid Build Coastguard Worker 174*858ea5e5SAndroid Build Coastguard Worker -n, --nomount 175*858ea5e5SAndroid Build Coastguard Worker Do not automatically attempt to mount any virtual file system 176*858ea5e5SAndroid Build Coastguard Worker (such as tracefs or BPF virtual file system) when necessary. 177*858ea5e5SAndroid Build Coastguard Worker 178*858ea5e5SAndroid Build Coastguard WorkerEXAMPLES 179*858ea5e5SAndroid Build Coastguard Worker======== 180*858ea5e5SAndroid Build Coastguard Worker**# bpftool map show** 181*858ea5e5SAndroid Build Coastguard Worker 182*858ea5e5SAndroid Build Coastguard Worker:: 183*858ea5e5SAndroid Build Coastguard Worker 184*858ea5e5SAndroid Build Coastguard Worker 10: hash name some_map flags 0x0 185*858ea5e5SAndroid Build Coastguard Worker key 4B value 8B max_entries 2048 memlock 167936B 186*858ea5e5SAndroid Build Coastguard Worker pids systemd(1) 187*858ea5e5SAndroid Build Coastguard Worker 188*858ea5e5SAndroid Build Coastguard WorkerThe following three commands are equivalent: 189*858ea5e5SAndroid Build Coastguard Worker 190*858ea5e5SAndroid Build Coastguard Worker| 191*858ea5e5SAndroid Build Coastguard Worker| **# bpftool map update id 10 key hex 20 c4 b7 00 value hex 0f ff ff ab 01 02 03 4c** 192*858ea5e5SAndroid Build Coastguard Worker| **# bpftool map update id 10 key 0x20 0xc4 0xb7 0x00 value 0x0f 0xff 0xff 0xab 0x01 0x02 0x03 0x4c** 193*858ea5e5SAndroid Build Coastguard Worker| **# bpftool map update id 10 key 32 196 183 0 value 15 255 255 171 1 2 3 76** 194*858ea5e5SAndroid Build Coastguard Worker 195*858ea5e5SAndroid Build Coastguard Worker**# bpftool map lookup id 10 key 0 1 2 3** 196*858ea5e5SAndroid Build Coastguard Worker 197*858ea5e5SAndroid Build Coastguard Worker:: 198*858ea5e5SAndroid Build Coastguard Worker 199*858ea5e5SAndroid Build Coastguard Worker key: 00 01 02 03 value: 00 01 02 03 04 05 06 07 200*858ea5e5SAndroid Build Coastguard Worker 201*858ea5e5SAndroid Build Coastguard Worker 202*858ea5e5SAndroid Build Coastguard Worker**# bpftool map dump id 10** 203*858ea5e5SAndroid Build Coastguard Worker 204*858ea5e5SAndroid Build Coastguard Worker:: 205*858ea5e5SAndroid Build Coastguard Worker 206*858ea5e5SAndroid Build Coastguard Worker key: 00 01 02 03 value: 00 01 02 03 04 05 06 07 207*858ea5e5SAndroid Build Coastguard Worker key: 0d 00 07 00 value: 02 00 00 00 01 02 03 04 208*858ea5e5SAndroid Build Coastguard Worker Found 2 elements 209*858ea5e5SAndroid Build Coastguard Worker 210*858ea5e5SAndroid Build Coastguard Worker**# bpftool map getnext id 10 key 0 1 2 3** 211*858ea5e5SAndroid Build Coastguard Worker 212*858ea5e5SAndroid Build Coastguard Worker:: 213*858ea5e5SAndroid Build Coastguard Worker 214*858ea5e5SAndroid Build Coastguard Worker key: 215*858ea5e5SAndroid Build Coastguard Worker 00 01 02 03 216*858ea5e5SAndroid Build Coastguard Worker next key: 217*858ea5e5SAndroid Build Coastguard Worker 0d 00 07 00 218*858ea5e5SAndroid Build Coastguard Worker 219*858ea5e5SAndroid Build Coastguard Worker| 220*858ea5e5SAndroid Build Coastguard Worker| **# mount -t bpf none /sys/fs/bpf/** 221*858ea5e5SAndroid Build Coastguard Worker| **# bpftool map pin id 10 /sys/fs/bpf/map** 222*858ea5e5SAndroid Build Coastguard Worker| **# bpftool map del pinned /sys/fs/bpf/map key 13 00 07 00** 223*858ea5e5SAndroid Build Coastguard Worker 224*858ea5e5SAndroid Build Coastguard WorkerNote that map update can also be used in order to change the program references 225*858ea5e5SAndroid Build Coastguard Workerhold by a program array map. This can be used, for example, to change the 226*858ea5e5SAndroid Build Coastguard Workerprograms used for tail-call jumps at runtime, without having to reload the 227*858ea5e5SAndroid Build Coastguard Workerentry-point program. Below is an example for this use case: we load a program 228*858ea5e5SAndroid Build Coastguard Workerdefining a prog array map, and with a main function that contains a tail call 229*858ea5e5SAndroid Build Coastguard Workerto other programs that can be used either to "process" packets or to "debug" 230*858ea5e5SAndroid Build Coastguard Workerprocessing. Note that the prog array map MUST be pinned into the BPF virtual 231*858ea5e5SAndroid Build Coastguard Workerfile system for the map update to work successfully, as kernel flushes prog 232*858ea5e5SAndroid Build Coastguard Workerarray maps when they have no more references from user space (and the update 233*858ea5e5SAndroid Build Coastguard Workerwould be lost as soon as bpftool exits). 234*858ea5e5SAndroid Build Coastguard Worker 235*858ea5e5SAndroid Build Coastguard Worker| 236*858ea5e5SAndroid Build Coastguard Worker| **# bpftool prog loadall tail_calls.o /sys/fs/bpf/foo type xdp** 237*858ea5e5SAndroid Build Coastguard Worker| **# bpftool prog --bpffs** 238*858ea5e5SAndroid Build Coastguard Worker 239*858ea5e5SAndroid Build Coastguard Worker:: 240*858ea5e5SAndroid Build Coastguard Worker 241*858ea5e5SAndroid Build Coastguard Worker 545: xdp name main_func tag 674b4b5597193dc3 gpl 242*858ea5e5SAndroid Build Coastguard Worker loaded_at 2018-12-12T15:02:58+0000 uid 0 243*858ea5e5SAndroid Build Coastguard Worker xlated 240B jited 257B memlock 4096B map_ids 294 244*858ea5e5SAndroid Build Coastguard Worker pinned /sys/fs/bpf/foo/xdp 245*858ea5e5SAndroid Build Coastguard Worker 546: xdp name bpf_func_process tag e369a529024751fc gpl 246*858ea5e5SAndroid Build Coastguard Worker loaded_at 2018-12-12T15:02:58+0000 uid 0 247*858ea5e5SAndroid Build Coastguard Worker xlated 200B jited 164B memlock 4096B 248*858ea5e5SAndroid Build Coastguard Worker pinned /sys/fs/bpf/foo/process 249*858ea5e5SAndroid Build Coastguard Worker 547: xdp name bpf_func_debug tag 0b597868bc7f0976 gpl 250*858ea5e5SAndroid Build Coastguard Worker loaded_at 2018-12-12T15:02:58+0000 uid 0 251*858ea5e5SAndroid Build Coastguard Worker xlated 200B jited 164B memlock 4096B 252*858ea5e5SAndroid Build Coastguard Worker pinned /sys/fs/bpf/foo/debug 253*858ea5e5SAndroid Build Coastguard Worker 254*858ea5e5SAndroid Build Coastguard Worker**# bpftool map** 255*858ea5e5SAndroid Build Coastguard Worker 256*858ea5e5SAndroid Build Coastguard Worker:: 257*858ea5e5SAndroid Build Coastguard Worker 258*858ea5e5SAndroid Build Coastguard Worker 294: prog_array name jmp_table flags 0x0 259*858ea5e5SAndroid Build Coastguard Worker key 4B value 4B max_entries 1 memlock 4096B 260*858ea5e5SAndroid Build Coastguard Worker owner_prog_type xdp owner jited 261*858ea5e5SAndroid Build Coastguard Worker 262*858ea5e5SAndroid Build Coastguard Worker| 263*858ea5e5SAndroid Build Coastguard Worker| **# bpftool map pin id 294 /sys/fs/bpf/bar** 264*858ea5e5SAndroid Build Coastguard Worker| **# bpftool map dump pinned /sys/fs/bpf/bar** 265*858ea5e5SAndroid Build Coastguard Worker 266*858ea5e5SAndroid Build Coastguard Worker:: 267*858ea5e5SAndroid Build Coastguard Worker 268*858ea5e5SAndroid Build Coastguard Worker Found 0 elements 269*858ea5e5SAndroid Build Coastguard Worker 270*858ea5e5SAndroid Build Coastguard Worker| 271*858ea5e5SAndroid Build Coastguard Worker| **# bpftool map update pinned /sys/fs/bpf/bar key 0 0 0 0 value pinned /sys/fs/bpf/foo/debug** 272*858ea5e5SAndroid Build Coastguard Worker| **# bpftool map dump pinned /sys/fs/bpf/bar** 273*858ea5e5SAndroid Build Coastguard Worker 274*858ea5e5SAndroid Build Coastguard Worker:: 275*858ea5e5SAndroid Build Coastguard Worker 276*858ea5e5SAndroid Build Coastguard Worker key: 00 00 00 00 value: 22 02 00 00 277*858ea5e5SAndroid Build Coastguard Worker Found 1 element 278