STRUCT PERF_EVENT(9)
π struct perf_event(9) π¦
okay so bestie, this is from the Kernel API Manual β the page for struct perf_event(9) β and it's literally the kernel's whole representation of a performance event. no cap, this struct is a big icon and we are keeping every single field. πβ¨
πΈ NAME πΈ
struct perf_event β performance event kernel representation: that's the official tagline, and it's giving main character data structure energy. π
π¦ SYNOPSIS π¦
struct perf_event {
#ifdef CONFIG_PERF_EVENTS;
struct list_head event_entry;
struct list_head sibling_list;
struct list_head active_list;
struct rb_node group_node;
u64 group_index;
struct list_head migrate_entry;
struct hlist_node hlist_entry;
struct list_head active_entry;
int nr_siblings;
int event_caps;
int group_caps;
unsigned int group_generation;
struct perf_event *group_leader;
struct pmu *pmu;
void *pmu_private;
enum perf_event_state state;
unsigned int attach_state;
local64_t count;
atomic64_t child_count;
u64 total_time_enabled;
u64 total_time_running;
u64 tstamp;
struct perf_event_attr attr;
u16 header_size;
u16 id_header_size;
u16 read_size;
struct hw_perf_event hw;
struct perf_event_context *ctx;
struct perf_event_pmu_context *pmu_ctx;
atomic_long_t refcount;
atomic64_t child_total_time_enabled;
atomic64_t child_total_time_running;
struct mutex child_mutex;
struct list_head child_list;
struct perf_event *parent;
int oncpu;
int cpu;
struct list_head owner_entry;
struct task_struct *owner;
struct mutex mmap_mutex;
refcount_t mmap_count;
struct perf_buffer *rb;
struct list_head rb_entry;
unsigned long rcu_batches;
int rcu_pending;
wait_queue_head_t waitq;
struct fasync_struct *fasync;
unsigned int pending_wakeup;
unsigned int pending_kill;
unsigned int pending_disable;
unsigned long pending_addr;
struct irq_work pending_irq;
struct irq_work pending_disable_irq;
struct callback_head pending_task;
unsigned int pending_work;
atomic_t event_limit;
struct perf_addr_filters_head addr_filters;
struct perf_addr_filter_range *addr_filter_ranges;
unsigned long addr_filters_gen;
struct perf_event *aux_event;
void (*destroy)(struct perf_event *);
struct rcu_head rcu_head;
struct pid_namespace *ns;
u64 id;
atomic64_t lost_samples;
u64 (*clock)(void);
perf_overflow_handler_t overflow_handler;
void *overflow_handler_context;
struct bpf_prog *prog;
u64 bpf_cookie;
#ifdef CONFIG_EVENT_TRACING;
struct trace_event_call *tp_event;
struct event_filter *filter;
# ifdef CONFIG_FUNCTION_TRACER;
struct ftrace_ops ftrace_ops;
# endif;
#endif;
#ifdef CONFIG_CGROUP_PERF;
struct perf_cgroup *cgrp;
#endif;
#ifdef CONFIG_SECURITY;
void *security;
#endif;
struct list_head sb_list;
struct list_head pmu_list;
u32 orig_type;
#endif ;
};
π«Ά Members π«Ά
the original page has a Members heading here and then literally nothing under it β no member-by-member notes, no blurbs, just vibes. I'm not inventing any, bestie; every field is in the SYNOPSIS above and I kept it exact. π
π₯ SEE ALSO π₯
- Kernel file
./include/linux/perf_event.h struct hw_perf_event(9)struct pmu(9)struct perf_addr_filter(9)struct perf_addr_filters_head(9)struct perf_event_context(9)struct perf_ctx_data(9)
that's the whole page, bestie π«Ά source path ./include/linux, footer title struct perf_event(9), dated October 2026 β mwah πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms