On 8/4/15 1:58 AM, Kaixu Xia wrote:
diff --git a/kernel/bpf/arraymap.c b/kernel/bpf/arraymap.c
index 45df657..b1e98ff 100644
--- a/kernel/bpf/arraymap.c
+++ b/kernel/bpf/arraymap.c
@@ -273,3 +273,60 @@ static int __init register_prog_array_map(void)
        return 0;
  }
  late_initcall(register_prog_array_map);
+
+static void perf_event_array_map_free(struct bpf_map *map)
+{
+       bpf_fd_array_map_clear(map);
+       fd_array_map_free(map);
+}
+
+static void *perf_event_fd_array_get_ptr(struct bpf_map *map, int fd)
+{
+       struct perf_event *event;
+       struct perf_event_attr *attr;
+
+       event = perf_event_get(fd);
+       if (IS_ERR(event))
+               return event;
+
+       attr = perf_event_attrs(event);
+       if (IS_ERR(attr))
+               return attr;
+
+       if (attr->type != PERF_TYPE_RAW &&
+           attr->type != PERF_TYPE_HARDWARE) {
+               perf_event_release_kernel(event);
+               return ERR_PTR(-EINVAL);
+       }
+       return event;
+}

I'm not sure whether Peter wanted to see the above function to be
in events/core.c or not.
imo it's fine here, since perf_event_attr is an uapi struct.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to