From b69c6a2e11da0a5695b3c0601a53890fee7f7e04 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 20 Dec 2025 22:10:39 +0100 Subject: [PATCH] Add drm MODE_ADD_FB and MODE_RM_FB --- redox-ioctl/src/drm.rs | 16 +++++++++++++++- src/header/sys_ioctl/redox/drm.rs | 2 ++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/redox-ioctl/src/drm.rs b/redox-ioctl/src/drm.rs index 8cc5749b71..f3a35b212d 100644 --- a/redox-ioctl/src/drm.rs +++ b/redox-ioctl/src/drm.rs @@ -1,7 +1,7 @@ use alloc::vec::Vec; use core::{ cmp, - ffi::{c_char, c_int}, + ffi::{c_char, c_int, c_uint}, iter, mem, slice, }; @@ -112,6 +112,7 @@ define_ioctl_data! { } pub const MODE_GET_FB: u64 = 0xAD; +pub const MODE_ADD_FB: u64 = 0xAE; define_ioctl_data! { struct drm_mode_fb_cmd, DrmModeFbCmd { fb_id: u32, @@ -124,6 +125,19 @@ define_ioctl_data! { } } +pub const MODE_RM_FB: u64 = 0xAF; +define_ioctl_data! { + struct standin_for_uint, StandinForUint { + inner: c_uint, + } +} + +#[repr(transparent)] +#[allow(non_camel_case_types)] +pub struct standin_for_uint { + pub inner: c_uint, +} + pub const MODE_CREATE_DUMB: u64 = 0xB2; define_ioctl_data! { struct drm_mode_create_dumb, DrmModeCreateDumb { diff --git a/src/header/sys_ioctl/redox/drm.rs b/src/header/sys_ioctl/redox/drm.rs index 32c208c6b5..4c7fc9ca1f 100644 --- a/src/header/sys_ioctl/redox/drm.rs +++ b/src/header/sys_ioctl/redox/drm.rs @@ -98,6 +98,8 @@ pub(super) unsafe fn ioctl(fd: c_int, func: u8, buf: IoctlBuffer) -> Result dev.read_write_ioctl::(buf, MODE_GET_ENCODER), 0xA7 => dev.read_write_ioctl::(buf, MODE_GET_CONNECTOR), 0xAD => dev.read_write_ioctl::(buf, MODE_GET_FB), + 0xAE => dev.read_write_ioctl::(buf, MODE_ADD_FB), + 0xAF => dev.read_write_ioctl::(buf, MODE_RM_FB), 0xB2 => dev.read_write_ioctl::(buf, MODE_CREATE_DUMB), 0xB3 => dev.read_write_ioctl::(buf, MODE_MAP_DUMB), 0xB4 => dev.read_write_ioctl::(buf, MODE_DESTROY_DUMB),