于 2015/8/3 17:34, Peter Zijlstra 写道:
> On Thu, Jul 23, 2015 at 09:42:41AM +0000, Kaixu Xia wrote:
>> +static u64 bpf_perf_event_read(u64 r1, u64 index, u64 r3, u64 r4, u64 r5)
>> +{
>> +    struct bpf_map *map = (struct bpf_map *) (unsigned long) r1;
>> +    struct bpf_array *array = container_of(map, struct bpf_array, map);
>> +    struct perf_event *event;
>> +
>> +    if (index >= array->map.max_entries)
>> +            return -E2BIG;
>> +
>> +    event = array->events[index];
>> +    if (!event)
>> +            return -EBADF;
>> +
>> +    if (event->state != PERF_EVENT_STATE_ACTIVE)
>> +            return -ENOENT;
>> +
>> +    if (event->oncpu != raw_smp_processor_id() &&
>> +        event->ctx->task != current)
>> +            return -EINVAL;
>> +
>> +    if (event->attr.inherit)
>> +            return -EINVAL;
>> +
>> +    __perf_event_read(event);
>> +
>> +    return perf_event_count(event);
>> +}
> 
> Please no poking of event internal state outside of perf code.

Thanks for your review. I will move it to kernel/events/core.c.
> 
> .
> 


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to