From 8a64c7d6a3ff2cc0cf87ba47cbbe1c4fe3aa170e Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Mon, 18 Aug 2025 03:06:14 +0000 Subject: kernel: disk: Add DISK_IO_QUERY op to disk engine This commit introduces the DISK_IO_QUERY opcode to the disk engine so that a user application may query specific devices. Signed-off-by: Ian Moffett --- sys/include/sys/disk.h | 1 + sys/kern/disk_engine.c | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/sys/include/sys/disk.h b/sys/include/sys/disk.h index a277797..4ad068b 100644 --- a/sys/include/sys/disk.h +++ b/sys/include/sys/disk.h @@ -78,6 +78,7 @@ _Static_assert((V_BSIZE & 1) == 0, "V_BSIZE must be a power of two"); /* Valid disk operations */ #define DISK_IO_READ 0x00 /* Read data from the disk */ #define DISK_IO_WRITE 0x01 /* Write data to disk */ +#define DISK_IO_QUERY 0x02 /* Query disk information */ /* * A disk identifier is a zero-based index into diff --git a/sys/kern/disk_engine.c b/sys/kern/disk_engine.c index a49c15f..1061165 100644 --- a/sys/kern/disk_engine.c +++ b/sys/kern/disk_engine.c @@ -172,6 +172,18 @@ disk_mux_io(diskid_t id, diskop_t opcode, struct disk_param *u_param) param.size ); break; + case DISK_IO_QUERY: + retval = disk_query( + id, + param.buf + ); + + /* Write back info to user program */ + error = copyout(param.buf, param.u_buf, param.size); + if (error < 0) { + retval = error; + } + break; } disk_param_free(¶m); -- cgit v1.2.3