static __u64 get_key32_value64_percpu(int fd, __u32 key) { /* For PERCPU maps, userspace gets a value per possible CPU */ unsigned int nr_cpus = bpf_num_possible_cpus(); __u64 values[nr_cpus]; __u64 sum = 0; int i; if ((bpf_map_lookup_elem(fd, &key, values)) != 0) { fprintf(stderr, "ERR: bpf_map_lookup_elem failed key:0x%X\n", key); return 0; } /* Sum values from each CPU */ for (i = 0; i < nr_cpus; i++) { sum += values[i]; } return sum; }