STRUCT PERF_EVENT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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