STRUCT DRM_PENDING_EVENT(9)
π NAME π
ok okay so this page is struct drm_pending_event(9) from the Kernel API Manual, and it's literally just about struct drm_pending_event β an event that's queued up so userspace can come read it π
β¨ SYNOPSIS β¨
here's the whole struct bestie, no notes, look at her:
struct drm_pending_event {
struct completion *completion;
void (*completion_release)(struct completion *completion);
struct drm_event *event;
struct dma_fence *fence;
struct drm_file *file_priv;
struct list_head link;
struct list_head pending_link;
};
π«Ά Members π«Ά
okay so let's go member by member, i got you:
completionβ optional pointer to a kernel internal completion that gets signalled whendrm_send_eventis called. lowkey iconic for internally synchronizing with nonblocking operations π«completion_releaseβ optional callback, and rn it's only used by the atomic modeset helpers to clean up the reference count for the structure thatcompletionis stored in. niche but essential fr freventβ pointer to the actual event that should get sent to userspace, to be read usingdrm_read. can be optional tho, because nowadays events are also used to signal kernel internal threads withcompletionor DMA transactions usingfenceπfenceβ optional DMA fence that unblocks other hardware transactions which depend on the nonblocking DRM operation this event represents. it's giving traffic controller πfile_privβ thestruct drm_filewhere the event should be delivered to. only set wheneventis set, periodt πlinkβ a double-linked list to keep track of this event. the driver can use it up to the point where it callsdrm_send_eventβ after that, this list entry is owned by the core for its own book-keeping, so hands off bestie πpending_linkβ the entry ondrm_file.pending_event_list, tracking all the pending events forfile_priv, so everything can be unwound correctly when userspace closes the file before the event is delivered. very "i'll remember this" of it π
πΈ Description πΈ
so this whole thing represents a DRM event, right? drivers can use it as a generic completion mechanism, and it's got range β it supports kernel-internal struct completion, struct dma_fence, and the DRM-specific struct drm_event delivery mechanism. versatile queen β¨
π¦ SEE ALSO π¦
go read up on these, all in the kernel file ./include/drm/drm_file.h:
struct drm_minor(9)struct drm_file(9)drm_is_primary_client(9)drm_is_render_client(9)drm_is_accel_client(9)struct drm_memory_stats(9)
and that's the whole page, bestie, you ate that π
this one lives in ./include/drm and the version vibes are dated October 2026 β mwah, go read some kernel source, ily π«Άπ
π¦ 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