STRUCT DRM_PVR_IOCTL_GET_BO_MMAP_OFFSET_ARGS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct drm_pvr_ioctl_get_bo_mmap_offset_args β€” from the Kernel API Manual ✨

okay so bestie, we're in the Kernel API Manual today and this page is all about struct drm_pvr_ioctl_get_bo_mmap_offset_args. yes that's a whole mouthful, i know, breathe 🫢


🌸 NAME 🌸

struct drm_pvr_ioctl_get_bo_mmap_offset_args β€” literally just the arguments for %DRM_IOCTL_PVR_GET_BO_MMAP_OFFSET. that's it, that's the whole job πŸ’–


✨ SYNOPSIS ✨

struct drm_pvr_ioctl_get_bo_mmap_offset_args {
    __u32 handle;
    __u32 _padding_4;
    __u64 offset;
 };

look at her. three fields. immaculate vibes πŸ‘‘


πŸŽ€ Members πŸŽ€

  • handle β€” [IN] the GEM handle of the buffer object you wanna map. this is the one you actually care about, she's the main character πŸ’…
  • _padding_4 β€” Reserved. this field must be zeroed. no cap, do not put anything cute in here, just zeros πŸ™ˆ
  • offset β€” [OUT] the fake offset you're gonna use in the real mmap call. it's fake but it's iconic ✨

πŸ¦‹ Description πŸ¦‹

okay so here's the tea πŸ“ β€” like other DRM drivers, the "mmap" IOCTL doesn't actually map any memory. i know, shocking, the name is giving lies but stay with me. instead, it allocates a fake offset which refers to the specified buffer object. that offset can then be used with a real mmap call on the DRM device itself. so it's like a lil ticket stub you redeem later at the actual mmap counter πŸŽŸοΈπŸ’–


🌈 SEE ALSO 🌈

bestie the reading list is long, hydrate first 🧚 this struct does not exist in a vacuum, she has a whole extended universe:

  • Kernel file ./include/uapi/drm/pvr_drm.h PowerVR UAPI(9)
  • struct drm_pvr_obj_array(9)
  • DRM_PVR_OBJ_ARRAY(9)
  • PowerVR IOCTL interface(9)
  • PVR_IOCTL(9)
  • PowerVR IOCTL DEV_QUERY interface(9)
  • struct drm_pvr_dev_query_gpu_info(9)
  • struct drm_pvr_dev_query_runtime_info(9)
  • struct drm_pvr_dev_query_quirks(9)
  • struct drm_pvr_dev_query_enhancements(9)
  • enum drm_pvr_heap_id(9)
  • struct drm_pvr_heap(9)
  • struct drm_pvr_dev_query_heap_info(9)
  • enum drm_pvr_static_data_area_usage(9)
  • struct drm_pvr_static_data_area(9)
  • struct drm_pvr_dev_query_static_data_areas(9)
  • enum drm_pvr_dev_query(9)
  • struct drm_pvr_ioctl_dev_query_args(9)
  • PowerVR IOCTL CREATE_BO interface(9)
  • Flags for CREATE_BO(9)
  • struct drm_pvr_ioctl_create_bo_args(9)
  • PowerVR IOCTL GET_BO_MMAP_OFFSET interface(9)
  • PowerVR IOCTL CREATE_VM_CONTEXT and DESTROY_VM_CONTEXT interfaces(9)
  • struct drm_pvr_ioctl_create_vm_context_args(9)
  • struct drm_pvr_ioctl_destroy_vm_context_args(9)
  • PowerVR IOCTL VM_MAP and VM_UNMAP interfaces(9)
  • struct drm_pvr_ioctl_vm_map_args(9)
  • struct drm_pvr_ioctl_vm_unmap_args(9)
  • PowerVR IOCTL CREATE_CONTEXT and DESTROY_CONTEXT interfaces(9)
  • enum drm_pvr_ctx_priority(9)
  • enum drm_pvr_ctx_type(9)
  • struct drm_pvr_ioctl_create_context_args(9)
  • struct drm_pvr_ioctl_destroy_context_args(9)
  • PowerVR IOCTL CREATE_FREE_LIST and DESTROY_FREE_LIST interfaces(9)
  • struct drm_pvr_ioctl_create_free_list_args(9)
  • struct drm_pvr_ioctl_destroy_free_list_args(9)
  • PowerVR IOCTL CREATE_HWRT_DATASET and DESTROY_HWRT_DATASET interfaces(9)
  • struct drm_pvr_create_hwrt_geom_data_args(9)
  • struct drm_pvr_create_hwrt_rt_data_args(9)
  • struct drm_pvr_ioctl_create_hwrt_dataset_args(9)
  • struct drm_pvr_ioctl_destroy_hwrt_dataset_args(9)
  • PowerVR IOCTL SUBMIT_JOBS interface(9)
  • Flags for the drm_pvr_sync_op object.(9)
  • struct drm_pvr_sync_op(9)
  • Flags for SUBMIT_JOB ioctl geometry command.(9)
  • Flags for SUBMIT_JOB ioctl fragment command.(9)
  • Flags for SUBMIT_JOB ioctl compute command.(9)
  • Flags for SUBMIT_JOB ioctl transfer command.(9)
  • enum drm_pvr_job_type(9)
  • struct drm_pvr_hwrt_data_ref(9)
  • struct drm_pvr_job(9)
  • struct drm_pvr_ioctl_submit_jobs_args(9)

ngl the reserved field is the only trap here β€” _padding_4 must be zeroed, so don't get creative with it πŸ™

and that's the page!! this absolute legend of a manpage lives in ./include/uapi/drm, dated October 2026, and it's filed under the Kernel API Manual πŸŽ€ go read the rest of the PowerVR extended universe, mwah πŸ’œβœ¨

πŸ“¦ where this page comes from