STRUCT DRM_EVENT(9)
β¨ struct drm_event(9) β¨
okay bestie, welcome to the struct drm_event page from the Kernel API Manual π
this is the little header that makes DRM events happen, and honestly? it's giving main character energy for something so smol π
πΈ NAME πΈ
struct drm_event β the header for DRM events π¦
β SYNOPSIS β
struct drm_event {
__u32 type;
__u32 length;
};
like, that's it. two fields. iconic minimalism π
π«Ά Members π«Ά
typeβ the event type, i.e. what kind of event this lil guy is πlengthβ the total number of payload bytes, including the header itself π₯ (yes bestie, header counts too, don't forget it)
π Description π
so here's the tea β this struct is a header for events that get written back to user-space on the DRM FD, fr fr.
and a read on the DRM FD will always only return complete events β no cap π like, say your read buffer is 100 bytes large and there are two 64 byte events pending. only one of them comes back. the other one waits its turn, lowkey patient of it π
now the type numbering, because this part matters:
- event types
0-0x7fffffffare generic DRM events β¨ 0x80000000and up are chipset specific π
and the generic DRM events include DRM_EVENT_VBLANK, DRM_EVENT_FLIP_COMPLETE and DRM_EVENT_CRTC_SEQUENCE π slay.
π¦ SEE ALSO π¦
everything below is exactly what the page points you at β go read them, iykyk π§
- Kernel file
./tools/perf/trace/beauty/include/uapi/drm/drm.hstruct drm_gem_close(9),struct drm_gem_flink(9),struct drm_gem_open(9),struct drm_gem_change_handle(9),DRM_CAP_DUMB_BUFFER(9),DRM_CAP_VBLANK_HIGH_CRTC(9),DRM_CAP_DUMB_PREFERRED_DEPTH(9),DRM_CAP_DUMB_PREFER_SHADOW(9),DRM_CAP_PRIME(9),DRM_PRIME_CAP_IMPORT(9),DRM_PRIME_CAP_EXPORT(9),DRM_CAP_TIMESTAMP_MONOTONIC(9),DRM_CAP_ASYNC_PAGE_FLIP(9),DRM_CAP_CURSOR_WIDTH(9),DRM_CAP_CURSOR_HEIGHT(9),DRM_CAP_ADDFB2_MODIFIERS(9),DRM_CAP_PAGE_FLIP_TARGET(9),DRM_CAP_CRTC_IN_VBLANK_EVENT(9),DRM_CAP_SYNCOBJ(9),DRM_CAP_SYNCOBJ_TIMELINE(9),DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP(9),DRM_CLIENT_CAP_STEREO_3D(9),DRM_CLIENT_CAP_UNIVERSAL_PLANES(9),DRM_CLIENT_CAP_ATOMIC(9),DRM_CLIENT_CAP_ASPECT_RATIO(9),DRM_CLIENT_CAP_WRITEBACK_CONNECTORS(9),DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT(9),DRM_CLIENT_CAP_PLANE_COLOR_PIPELINE(9),struct drm_syncobj_eventfd(9),DRM_IOCTL_GEM_CLOSE(9),DRM_IOCTL_PRIME_HANDLE_TO_FD(9),DRM_IOCTL_PRIME_FD_TO_HANDLE(9),DRM_IOCTL_MODE_RMFB(9),DRM_IOCTL_MODE_CREATE_DUMB(9),DRM_IOCTL_MODE_GETFB2(9),DRM_IOCTL_SYNCOBJ_EVENTFD(9),DRM_IOCTL_MODE_CLOSEFB(9),DRM_IOCTL_SET_CLIENT_NAME(9),DRM_IOCTL_GEM_CHANGE_HANDLE(9),DRM_EVENT_VBLANK(9),DRM_EVENT_FLIP_COMPLETE(9),DRM_EVENT_CRTC_SEQUENCE(9)
and that's the whole vibe check bestie π this page came from ./tools/perf/trace/beauty/incl... and it's dated October 2026 β so go forth, read your complete events, and stan a two-field struct πβπ
π¦ 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