Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\bpf\hashtab.c Create Date:2022-07-28 13:10:07
Last Modify:2022-05-23 09:15:29 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:__htab_percpu_map_update_elem

Proto:static int __htab_percpu_map_update_elem(struct bpf_map *map, void *key, void *value, u64 map_flags, bool onallcpus)

Type:int

Parameter:

TypeParameterName
struct bpf_map *map
void *key
void *value
u64map_flags
boolonallcpus
979  htab = container_of - cast a member of a structure out to the containing structure*@ptr: the pointer to the member.*@type: the type of the container struct this is embedded in.*@member: the name of the member within the struct.(map, structbpf_htab, map)
980  l_new = NULL
987  If Value for the false possibility is greater at compile time(map_flags > update existing element ) Then Return -EINVAL
991  WARN_ON_ONCE(!_read_lock_held() - might we be in RCU read-side critical section?* If CONFIG_DEBUG_LOCK_ALLOC is selected, returns nonzero iff in an RCU* read-side critical section)
993  key_size = key_size
995  hash = htab_map_hash(key, key_size, hashrnd)
997  b = __select_bucket(htab, hash)
998  head = head
1001  raw_spin_lock_irqsave( & lock, flags)
1003  l_old = his lookup function can only be called with bucket lock taken
1005  ret = check_flags(htab, l_old, map_flags)
1006  If ret Then Go to err
1009  If l_old Then
1011  pcpu_copy_value(htab, htab_elem_get_ptr(l_old, key_size), value, onallcpus)
1013  Else
1014  l_new = alloc_htab_elem(htab, key, value, key_size, hash, true, onallcpus, NULL)
1016  If IS_ERR(l_new) Then
1017  ret = PTR_ERR(l_new)
1018  Go to err
1020  hlist_nulls_add_head_rcu*@n: the element to add to the hash list
1022  ret = 0
1023  err :
1024  raw_spin_unlock_irqrestore( & lock, flags)
1025  Return ret
Caller
NameDescribe
htab_percpu_map_update_elem
bpf_percpu_hash_update