STRUCT DRM_PVR_OBJ_ARRAY(9)
π struct drm_pvr_obj_array
okay bestie, welcome to the Kernel API Manual β¨ β yes we're reading kernel docs together, this is our bonding era π«Ά. Today's main character is a little struct that carries arrays of objects across the ioctl boundary, and honestly? it ate.
πΈ NAME
struct drm_pvr_obj_array β the container we use to pass arrays of objects. that's it, that's the whole vibe π
β¨ SYNOPSIS
struct drm_pvr_obj_array {
__u32 stride;
__u32 count;
__u64 array;
};
like, three fields, zero drama. iconic behavior π
π¦ Members
strideβ the stride of the object struct. it's literally the versioning mechanism, no cap πcountβ how many objects are in the array. bestie counted them herself πarrayβ a user pointer to an array of objects. user pointer, ok? noted π
π Description
so here's the lore, babes π: it is not unusual to have to extend objects to pass new parameters β growth is natural, we love a glow-up β and the DRM ioctl infrastructure is supporting that by padding ioctl arguments with zeros when the data passed by userspace is smaller than the struct defined in the drm_ioctl_desc, thus keeping things backward compatible. yes. that whole sentence. it slays π«Ά
This type is just applying the same concepts to indirect objects passed through arrays referenced from the main ioctl arguments structure: the stride basically defines the size of the object passed by userspace, which allows the kernel driver to pad with zeros when it's smaller than the size of the object it expects. so stride is doing the lord's work, fr fr π
Use DRM_PVR_OBJ_ARRAY to fill object array fields, unless you have a very good reason not to. like genuinely. a very good one. we're watching ππ
bestie note: use the macro. i'm not gonna say what happens if you don't because the manpage doesn't, and i don't invent lore π
π§ SEE ALSO
the whole friend group, assembled πΈ:
- Kernel file
./include/uapi/drm/pvr_drm.hPowerVR UAPI(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)
struct drm_pvr_ioctl_get_bo_mmap_offset_args(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_opobject.(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)
that's the whole page, bestie, go forth and pass your object arrays correctly πβ¨
source: ./include/uapi/drm Β· dated October 2026 Β· from the Kernel API Manual β mwah, catch you in the next manpage ππ
π¦ 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