summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/include/sys/disk.h1
-rw-r--r--sys/kern/disk_engine.c12
2 files changed, 13 insertions, 0 deletions
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(&param);