STRUCT SCMI_EVENT_HANDLER(9)
π struct scmi_event_handler(9) π
okay so bestie, welcome to the Kernel API Manual β this is the page for struct scmi_event_handler, and it's literally the little bookkeeping babe that keeps track of event handler info. no cap, it's giving "backstage pass coordinator" energy. let's get into it π
β¨ NAME β¨
struct scmi_event_handler β Event handler information π«Ά
πΈ SYNOPSIS πΈ
struct scmi_event_handler {
u32 key;
refcount_t users;
struct scmi_registered_event *r_evt;
struct blocking_notifier_head chain;
struct hlist_node hash;
bool enabled;
};
like, that's the whole vibe. six fields, all iconic, each one doing its little job π
π Members π
key
The used hashkey π
users
A reference count for number of active users for this handler β yes it's counting how many besties are currently using it π
r_evt
A reference to the associated registered event; when this is NULL this handler is pending, which means that identifies a set of callbacks intended to be attached to an event which is still not known nor registered by any protocol at that point in time π«οΈ
ngl, NULL here = the handler is in its waiting-room era. it's got callbacks ready to go, but the event it's meant for isn't known or registered by any protocol yet. main character in limbo fr fr π
chain
The notification chain dedicated to this specific event tuple βοΈ
hash
The hlist_node used for collision handling π§©
enabled
A boolean which records if event's generation has been already enabled for this handler as a whole β
π Description π
So this structure collects all the information needed to process a received event identified by the tuple (proto_id, evt_id, src_id). those three lil ids? that's the whole identity, bestie π
These descriptors are stored in a per-protocol registered_events_handlers table using as a key a value derived from that tuple. so basically: tuple goes in, key comes out, table lookup happens, slay π«
π¦ SEE ALSO π¦
- The Kernel file
./drivers/firmware/arm_scmi/notify.cπ₯ Theory of operation(9)struct scmi_notify_instance(9)struct events_queue(9)struct scmi_event_header(9)struct scmi_registered_events_desc(9)struct scmi_registered_event(9)scmi_lookup_and_call_event_chain(9)scmi_process_event_header(9)scmi_process_event_payload(9)scmi_events_dispatcher(9)scmi_notify(9)scmi_kfifo_free(9)scmi_initialize_events_queue(9)scmi_allocate_registered_events_desc(9)scmi_register_protocol_events(9)scmi_deregister_protocol_events(9)scmi_allocate_event_handler(9)scmi_free_event_handler(9)scmi_bind_event_handler(9)scmi_valid_pending_handler(9)scmi_register_event_handler(9)__scmi_event_handler_get_ops(9)scmi_get_active_handler(9)__scmi_enable_evt(9)scmi_put_handler_unlocked(9)scmi_event_handler_enable_events(9)scmi_notifier_register(9)scmi_notifier_unregister(9)scmi_devm_notifier_register(9)scmi_devm_notifier_unregister(9)scmi_protocols_late_init(9)scmi_notification_init(9)scmi_notification_quiesce(9)scmi_notification_exit(9)
and that's the page!! tysm for reading, ily π«Ά this one lives under ./drivers/firmware/arm_scmi and it's dated October 2026 β go off, king π
β¨π·
π¦ 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