drm_crtc_send_vblank_event(9)
β¨ drm_crtc_send_vblank_event(9) β¨
okay bestie, so this is a page from the Kernel API Manual β yes, the actual kernel docs, we're being fancy today π
β and it's all about drm_crtc_send_vblank_event, which is literally the helper that sends a vblank event after a pageflip. no cap, that's the whole vibe. π¦
πΈ NAME πΈ
drm_crtc_send_vblank_event β the helper that sends your vblank event after a pageflip. it's giving "final step of the flip" energy β¨
π SYNOPSIS π
void drm_crtc_send_vblank_event (struct drm_crtc *crtc , struct
drm_pending_vblank_event *e );
like, it returns void. nothing back. it just does the thing and dips. iconic behavior honestly π
π ARGUMENTS π
crtcβ the source CRTC of the vblank event. aka the CRTC this whole event is coming from, main character of the operation πeβ the event to send. this is the actual vblank event that's gonna get yeeted off to userspace π«Ά
π¦ DESCRIPTION π¦
so what does it actually do? it updates the sequence # and the timestamp on the event for the most recently processed vblank, and then sends it to userspace. that's it. that's the job. and it ate π
β οΈ okay important: the caller must hold the event lock. not optional, not a suggestion, hold the lock bestie π
also, if you're in one of those "certain situations" and you're wondering if there's a different helper β yes queen, check out drm_crtc_arm_vblank_event π it's the helper you can use in certain situations, especially to send out events for atomic commit operations. so like, atomic commit girlies, that's your girl π
π₯ SEE ALSO π₯
bestie, this list is LONG, but we don't skip. every single one, in order, no cap:
Kernel file ./drivers/gpu/drm/drm_vblank.c vblank handling(9), drm_crtc_accurate_vblank_count(9), drm_vblank_init(9), drm_dev_has_vblank(9), drm_crtc_vblank_waitqueue(9), drm_calc_timestamping_constants(9), drm_crtc_vblank_helper_get_vblank_timestamp_internal(9), drm_crtc_vblank_helper_get_vblank_timestamp(9), drm_crtc_get_last_vbltimestamp(9), drm_crtc_vblank_count(9), drm_vblank_count_and_time(9), drm_crtc_vblank_count_and_time(9), drm_crtc_next_vblank_start(9), drm_crtc_arm_vblank_event(9), drm_crtc_vblank_get(9), drm_crtc_vblank_put(9), drm_crtc_wait_one_vblank(9), drm_crtc_vblank_off(9), drm_crtc_vblank_reset(9), drm_crtc_set_max_vblank_count(9), drm_crtc_vblank_on_config(9), drm_crtc_vblank_on(9), drm_crtc_vblank_restore(9), drm_handle_vblank(9), drm_crtc_handle_vblank(9), drm_crtc_vblank_start_timer(9), drm_crtc_vblank_cancel_timer(9), drm_crtc_vblank_get_vblank_timeout(9)
like I said. a whole friend group. go say hi to all of them π§
and that's the page, bestie!! π this little writeup lives in ./drivers/gpu/drm and the doc fairies stamped it October 2026 β so yeah, it's dated, but it's still serving. mwah, go flip some pages πβ¨
π¦ 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