函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\bpf\arraymap.c Create Date:2022-07-27 14:27:10
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:array_map_alloc

函数原型:static struct bpf_map *array_map_alloc(union bpf_attr *attr)

返回类型:struct bpf_map

参数:

类型参数名称
union bpf_attr *attr
77  percpu等于 one of enum bpf_map_type 恒等于BPF_MAP_TYPE_PERCPU_ARRAY
78  numa_node等于bpf_map_attr_numa_node(attr)
80  unpriv等于非操作权限检查
85  elem_size等于und_up - round up to next specified power of 2*@x: the value to round*@y: multiple to round up to (must be a power of 2)* Rounds @x up to next multiple of @y (which must be a power of 2).* To perform arbitrary rounding up, use roundup() below.( size of value in bytes , 8)
87  max_entries等于 max number of entries in a map
93  mask64等于fls_long(max_entries - 1)
94  mask64等于1ULL左移mask64
95  mask64减等于1
97  index_mask等于mask64
98  如果unpriv
102  max_entries等于index_mask加1
104  如果max_entries小于 max number of entries in a map 则返回:错误号
108  array_size等于array的长度
109  如果percpu
110  array_size加等于max_entries乘*的长度
111  否则
118  否则
119  array_size加等于max_entrieselem_size
124  cost等于array_size
125  如果percpucost加等于 max number of entries in a map elem_sizenum_possible_cpus()
128  ret等于bpf_map_charge_init( & mem, cost)
129  如果ret小于0则返回:错误号
133  如果 BPF_MAP_CREATE related * flags defined above.按位与Enable memory-mapping BPF map
137  data等于bpf_map_area_mmapable_alloc(array_size, numa_node)
138  如果非data
140  返回:错误号
142  array等于data align the pointer to the (next) page boundary (sizeof(structbpf_array))减offsetof(structbpf_array, value)
144  否则
145  array等于bpf_map_area_alloc(array_size, numa_node)
147  如果非array
148  bpf_map_charge_finish( & mem)
149  返回:错误号
151  index_mask等于index_mask
152  unpriv_array等于unpriv
155  bpf_map_init_from_attr( & map, attr)
156  bpf_map_charge_move( & memory, & mem)
157  elem_size等于elem_size
159  如果percpubpf_array_alloc_percpu(array)则
160  bpf_map_charge_finish( & memory)
161  bpf_map_area_free(array)
162  返回:错误号
165  返回:map
调用者
名称描述
prog_array_map_alloc
array_of_map_alloc