Function report |
Source Code:kernel\bpf\hashtab.c |
Create Date:2022-07-28 13:09:23 |
Last Modify:2022-05-23 09:15:29 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:htab_map_alloc
Proto:static struct bpf_map *htab_map_alloc(union bpf_attr *attr)
Type:struct bpf_map
Parameter:
Type | Parameter | Name |
---|---|---|
union bpf_attr * | attr |
297 | percpu = one of enum bpf_map_type == BPF_MAP_TYPE_PERCPU_HASH || one of enum bpf_map_type == BPF_MAP_TYPE_LRU_PERCPU_HASH |
299 | lru = one of enum bpf_map_type == BPF_MAP_TYPE_LRU_HASH || one of enum bpf_map_type == BPF_MAP_TYPE_LRU_PERCPU_HASH |
307 | prealloc = Not ( BPF_MAP_CREATE related * flags defined above. & lags for BPF_MAP_CREATE command ) |
312 | htab = kzalloc - allocate memory. The memory is set to zero.*@size: how many bytes of memory are required.*@flags: the type of memory to allocate (see kmalloc). |
316 | bpf_map_init_from_attr( & map, attr) |
318 | If percpu_lru Then |
335 | If percpu Then size of each element in bytes += size of * |
342 | If number of hash buckets == 0 || number of hash buckets > U32_MAX / sizeof(structbucket) Then Go to free_htab |
346 | cost = number of hash buckets * sizeof(structbucket) + size of each element in bytes * max_entries |
352 | Else cost += size of each element in bytes * num_possible_cpus() |
356 | err = bpf_map_charge_init( & memory, cost) |
361 | buckets = bpf_map_area_alloc( number of hash buckets * sizeof(structbucket), numa_node) |
364 | If Not buckets Then Go to free_charge |
367 | If map_flags & Zero-initialize hash function seed. This should only be used for testing. Then hashrnd = 0 |
369 | Else hashrnd = get_random_int() |
372 | When i < number of hash buckets cycle |
373 | INIT_HLIST_NULLS_HEAD( & head, i) |
374 | raw_spin_lock_init( & lock) |
377 | If prealloc Then |
378 | err = prealloc_init(htab) |
379 | If err Then Go to free_buckets |
386 | err = alloc_extra_elems(htab) |
387 | If err Then Go to free_prealloc |
392 | Return map |
394 | free_prealloc : |
395 | prealloc_destroy(htab) |
396 | free_buckets : |
397 | bpf_map_area_free(buckets) |
398 | free_charge : |
399 | bpf_map_charge_finish( & memory) |
400 | free_htab : |
Name | Describe |
---|---|
htab_of_map_alloc |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |