函数逻辑报告 |
Source Code:kernel\bpf\reuseport_array.c |
Create Date:2022-07-27 14:48:24 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:Called from syscall only.* The "nsk" in the fd refcnt.* The "osk" and "reuse" are protected by reuseport_lock.
函数原型:int bpf_fd_reuseport_array_update_elem(struct bpf_map *map, void *key, void *value, u64 map_flags)
返回类型:int
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct bpf_map * | map | |
| void * | key | |
| void * | value | |
| u64 | map_flags |
| 251 | array等于reuseport_array(map) |
| 258 | 如果map_flags大于update existing element 则返回:负EINVAL |
| 261 | 如果index大于等于max_entries则返回:负E2BIG |
| 264 | 如果value_size恒等于sizeof(u64)则 |
| 270 | 否则 |
| 274 | socket等于sockfd_lookup(fd, & err) |
| 279 | 如果非nsk则 |
| 292 | spin_lock_bh( & reuseport_lock) |
| 298 | write_lock_bh( & sk_callback_lock) |
| 305 | 如果err则转到:put_file_unlock |
| 309 | err等于reuseport_get_id(reuse) |
| 310 | 如果err小于0则转到:put_file_unlock |
| 313 | WRITE_ONCE(sk_user_data, & ptrs[index]) |
| 316 | err等于0 |
| 318 | put_file_unlock : |
| 319 | write_unlock_bh( & sk_callback_lock) |
| 321 | 如果free_osk则 |
| 322 | write_lock_bh( & sk_callback_lock) |
| 323 | WRITE_ONCE(sk_user_data, NULL) |
| 324 | write_unlock_bh( & sk_callback_lock) |
| 327 | spin_unlock_bh( & reuseport_lock) |
| 328 | put_file : |
| 330 | 返回:err |
| 名称 | 描述 |
|---|---|
| map_update_elem |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |