diff options
author | Ian Moffett <ian@osmora.org> | 2025-10-14 21:38:36 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-10-14 21:38:36 -0400 |
commit | d421a25891ba098ef5b6c67a0ef099351e20ff0a (patch) | |
tree | a82ac52fe59988f58a78e8ee06d8a6e29f540c98 /src/sys/dms | |
parent | eb92e07911b148e626fadd63ccd04af6a6c24484 (diff) |
kern: dms: Add DMS QUERY opcode for devinfo
Add a new QUERY operation code that is used to fetch information about a
specific disk.
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'src/sys/dms')
-rw-r--r-- | src/sys/dms/dms_engine.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/sys/dms/dms_engine.c b/src/sys/dms/dms_engine.c index 35388cc..d2506a3 100644 --- a/src/sys/dms/dms_engine.c +++ b/src/sys/dms/dms_engine.c @@ -34,11 +34,13 @@ #include <os/systm.h> #include <os/kalloc.h> #include <dms/dms.h> +#include <string.h> static ssize_t dms_io(struct dms_frame *dfp) { struct dms_disk *dp; + struct dms_diskinfo info; size_t len; ssize_t retval = -ENXIO; int error; @@ -81,6 +83,14 @@ dms_io(struct dms_frame *dfp) retval = dms_write(dp, kbuf, dfp->offset, dfp->len); break; + case DMS_OPC_QUERY: + memcpy(info.name, dp->name, sizeof(info.name)); + info.bsize = dp->bsize; + info.id = dp->id; + if (dfp->len > sizeof(info)) + dfp->len = sizeof(info); + retval = copyout(&info, dfp->buf, dfp->len); + break; } kfree(kbuf); |