summaryrefslogtreecommitdiff
path: root/sys/dev/ramdisk.h
diff options
context:
space:
mode:
authorgwr <gwr@NetBSD.org>1995-10-08 23:30:57 +0000
committergwr <gwr@NetBSD.org>1995-10-08 23:30:57 +0000
commit9a79c5a0435d0128ace890a5719d3e216cb00aef (patch)
tree47b98893f7263a19675461994a225718a9507691 /sys/dev/ramdisk.h
parent03cd2cc0b339f57abbac7b5f4c56f7f5c9e544b5 (diff)
Machine-independent RAM-disk driver.
Diffstat (limited to 'sys/dev/ramdisk.h')
-rw-r--r--sys/dev/ramdisk.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/sys/dev/ramdisk.h b/sys/dev/ramdisk.h
new file mode 100644
index 00000000000..a055ad85a38
--- /dev/null
+++ b/sys/dev/ramdisk.h
@@ -0,0 +1,59 @@
+
+/*
+ * RAM-disk ioctl functions:
+ */
+
+#include <sys/ioccom.h>
+
+struct rd_conf {
+ caddr_t rd_addr;
+ size_t rd_size;
+ int rd_type;
+};
+
+#define RD_GETCONF _IOR('r', 0, struct rd_conf) /* get unit config */
+#define RD_SETCONF _IOW('r', 1, struct rd_conf) /* set unit config */
+
+/*
+ * There are three configurations supported for each unit,
+ * reflected in the value of the rd_type field:
+ */
+#define RD_UNCONFIGURED 0
+/*
+ * Not yet configured. Open returns ENXIO.
+ */
+#define RD_KMEM_FIXED 1
+/*
+ * Disk image resident in kernel (patched in or loaded).
+ * Requires that the function: rd_set_kmem() is called to
+ * attach the (initialized) kernel memory to be used by the
+ * device. This can be called by an "open hook" if this
+ * driver is compiled with the RD_OPEN_HOOK option.
+ * No attempt will be made to free this memory.
+ */
+#define RD_KMEM_ALLOCATED 2
+/*
+ * Small, wired-down chunk of kernel memory obtained from
+ * kmem_alloc(). The allocation is performed by an ioctl
+ * call on the "control" unit (regular unit + 16)
+ */
+#define RD_UMEM_SERVER 3
+/*
+ * Indirect access to user-space of a user-level server.
+ * (Like the MFS hack, but better! 8^) Device operates
+ * only while the server has the control device open and
+ * continues to service I/O requests. The process that
+ * does this setconf will become the I/O server.
+ * Support for this configuration type is optional:
+ * option RAMDISK_SERVER
+ */
+
+#ifdef _KERNEL
+/*
+ * If the option RAMDISK_HOOKS is on, then these functions are
+ * called by the ramdisk driver to allow machine-dependent to
+ * configure and/or load each ramdisk unit.
+ */
+extern void rd_attach_hook __P((int unit, struct rd_conf *));
+extern void rd_open_hook __P((int unit, struct rd_conf *));
+#endif