pvr_ioctl_ge..._mmap_offset(9)
π pvr_ioctl_get_bo_mmap_offset β the Kernel API Manual tea π«Ά
okay so bestie, welcome to the pvr_ioctl_ge..._mmap_offset(9) page (yes the title is long, she's dramatic, we love her). This is the Kernel API Manual and it's all about one very specific little ioctl. Strap in. β¨
β¨ NAME β¨
pvr_ioctl_get_bo_mmap_offset β it's the IOCTL that generates a "fake" offset, and you use that offset when you call mmap() from userspace to map the given GEM buffer object. That's literally her whole job. Iconic behavior, no notes. π
πΈ SYNOPSIS πΈ
int pvr_ioctl_get_bo_mmap_offset (struct drm_device *drm_dev , void
*raw_args , struct drm_file *file );
three params, one function, let's get into it π
π ARGUMENTS π
drm_dev[IN]β the DRM device. and honestly? she's unused. main character who doesn't show up to her own party π still gotta pass her tho.raw_args[IN/OUT]β the arguments passed to this IOCTL. this one must be of typestruct drm_pvr_ioctl_get_bo_mmap_offset_args. no substitutions, bestie, it's giving very specific.file[IN]β the DRM file private data. the private data, the lore, the backstory. π¦
π DESCRIPTION π
so the way this works: userspace calls in with DRM_IOCTL_PVR_GET_BO_MMAP_OFFSET, and this function answers the door.
but listen β and this is the important part β this IOCTL does *not* perform an mmap. not even a little. it just makes the fake offset, it does not do the mapping. if you want the full details, the docs on struct drm_pvr_ioctl_get_bo_mmap_offset_args have you covered. iykyk π§
lowkey the name is a trap, "mmap_offset" β "does the mmap". she's a provider of offsets, not a mapper. periodt.
π₯ RETURN π₯
0β on success π slay.-ENOENTβ if the handle does not reference a valid GEM buffer object. the handle is giving nothing, it's not valid, we're upset. π-EINVALβ if any padding fields instruct drm_pvr_ioctl_get_bo_mmap_offset_argsare not zero. zero them. all of them. π- any error returned by
drm_gem_create_mmap_offsetβ yeah, whatever that returns, that's what you get. no cap.
π SEE ALSO π
the whole friend group, assembled π«Ά:
- Kernel file
./drivers/gpu/drm/imagination/pvr_drv.c - PowerVR (Series 6 and later) and IMG Graphics Driver(9)
pvr_ioctl_create_bo(9)pvr_dev_query_gpu_info_get(9)pvr_dev_query_runtime_info_get(9)pvr_dev_query_quirks_get(9)pvr_dev_query_enhancements_get(9)pvr_ioctl_dev_query(9)pvr_ioctl_create_context(9)pvr_ioctl_destroy_context(9)pvr_ioctl_create_free_list(9)pvr_ioctl_destroy_free_list(9)pvr_ioctl_create_hwrt_dataset(9)pvr_ioctl_destroy_hwrt_dataset(9)pvr_ioctl_create_vm_context(9)pvr_ioctl_destroy_vm_context(9)pvr_ioctl_vm_map(9)pvr_ioctl_vm_unmap(9)pvr_drm_driver_open(9)pvr_drm_driver_postclose(9)
okay that's the whole page, you ate that π this lil gem dropped from ./drivers/gpu/drm/imagination, dated October 2026, and her full name is pvr_ioctl_ge..._mmap_offset(9) β go forth and map your buffers responsibly, bestie βπΈπ
π¦ 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