summaryrefslogtreecommitdiff
path: root/src/sys/dms
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-10-14 21:38:36 -0400
committerIan Moffett <ian@osmora.org>2025-10-14 21:38:36 -0400
commitd421a25891ba098ef5b6c67a0ef099351e20ff0a (patch)
treea82ac52fe59988f58a78e8ee06d8a6e29f540c98 /src/sys/dms
parenteb92e07911b148e626fadd63ccd04af6a6c24484 (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.c10
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);