Messages in this thread | | | Subject | Re: [PATCH v3 3/3] samples/bpf: example of get selected PMU counter value | From | Alexei Starovoitov <> | Date | Thu, 23 Jul 2015 19:23:28 -0700 |
| |
On 7/23/15 6:54 PM, xiakaixu wrote: > 于 2015/7/24 6:59, Alexei Starovoitov 写道: >> On 7/23/15 2:42 AM, Kaixu Xia wrote: >>> This is a simple example and shows how to use the new ability >>> to get the selected Hardware PMU counter value. >>> >>> Signed-off-by: Kaixu Xia <xiakaixu@huawei.com> >> ... >>> +struct bpf_map_def SEC("maps") my_map = { >>> + .type = BPF_MAP_TYPE_PERF_EVENT_ARRAY, >>> + .key_size = sizeof(int), >>> + .value_size = sizeof(unsigned long), >>> + .max_entries = 32, >>> +}; >> >> wait. how did it work here? value_size should be u32. > > I tested the whole thing on ARM board. You are ringt, it > should be u32. > When create the array map, we choose the array->elem_size as > round_up(attr->value_size, 8), why 8?
because from user space point of view we're storing FDs which are u32, but kernel stores pointers. but round_up(attr->value_size, 8) is done because there can be 8 byte fields in there and we have 8-byte load/store insns. So whether pointer is 32 or 64-bit they still fit.
| |