STRUCT DRM_VBLANK_WORK(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ struct drm_vblank_work(9) πŸŽ€

okay bestie, so this is a struct drm_vblank_work β€” and honestly? it's giving delayed work item but make it fashion ✨. The whole vibe is: it just sits there patiently until a target vblank passes, and then it executes at realtime priority outside of IRQ context. Periodt. πŸ’…

it lives in the Kernel API Manual, and it's a struct, so buckle up πŸ¦‹


✨ SYNOPSIS ✨

struct drm_vblank_work {
    struct kthread_work base;
    struct drm_vblank_crtc *vblank;
    u64 count;
    int cancelling;
    struct list_head node;
 };

🌸 Members 🌸

  • base β€” the base kthread_work item which will be executed by drm_vblank_crtc.worker. drivers, do NOT touch this directly β€” like, hands off πŸ™ˆ β€” and instead rely on drm_vblank_work_init to initialize this. iykyk.
  • vblank β€” a pointer to the drm_vblank_crtc this work item belongs to. it's literally its home crtc 🏠
  • count β€” the target vblank this work will execute on. again: drivers should not modify this value directly, and instead use drm_vblank_work_schedule 🎯
  • cancelling β€” the number of drm_vblank_work_cancel_sync calls that are currently running. and here's the catch bestie: a work item cannot be rescheduled until all calls have finished. no cap, that's the rule ⚠️
  • node β€” the position of this work item in drm_vblank_crtc.pending_work. it's just chillin' in the queue πŸ“

πŸ’œ Description πŸ’œ

not much to say here besides see also, so here's the whole squad you should go look at πŸ‘‘:

  • drm_vblank_work_schedule
  • drm_vblank_work_init
  • drm_vblank_work_cancel_sync
  • drm_vblank_work_flush
  • drm_vblank_work_flush_all

🌈 SEE ALSO 🌈


and that's the whole thing, bestie, you ate that 🫢 this little page came straight out of ./include/drm, dated October 2026, and it's titled struct drm_vblank_work(9) β€” iconic, honestly πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from