This patch adds the possibility to obtain raw_smp_processor_id() in eBPF. Currently, this is only possible in classic BPF where commit da2033c28226 ("filter: add SKF_AD_RXHASH and SKF_AD_CPU") has added facilities for this. Perhaps most importantly, this would also allow us to track per CPU statistics with eBPF maps, or to implement a poor-man's per CPU data structure through eBPF maps. Example function proto-type looks like: u32 (*smp_processor_id)(void) = (void *)BPF_FUNC_get_smp_processor_id;
Showing the changes to include/uapi (1 of 5 files). Show all
Unified · Split
| @@ -166,6 +166,7 @@ enum bpf_func_id { · 165 unmodified lines | |||
| 166 | BPF_FUNC_map_update_elem, /* int map_update_elem(&map, &key, &value, flags) */ | 166 | BPF_FUNC_map_update_elem, /* int map_update_elem(&map, &key, &value, flags) */ |
| 167 | BPF_FUNC_map_delete_elem, /* int map_delete_elem(&map, &key) */ | 167 | BPF_FUNC_map_delete_elem, /* int map_delete_elem(&map, &key) */ |
| 168 | BPF_FUNC_get_prandom_u32, /* u32 prandom_u32(void) */ | 168 | BPF_FUNC_get_prandom_u32, /* u32 prandom_u32(void) */ |
| 169 | BPF_FUNC_get_smp_processor_id, /* u32 raw_smp_processor_id(void) */ | ||
| 169 | __BPF_FUNC_MAX_ID, | 170 | __BPF_FUNC_MAX_ID, |
| 170 | }; | 171 | }; |
| 171 | 172 | ||