From 9a79c5a0435d0128ace890a5719d3e216cb00aef Mon Sep 17 00:00:00 2001 From: gwr Date: Sun, 8 Oct 1995 23:30:57 +0000 Subject: Machine-independent RAM-disk driver. --- sys/dev/ramdisk.h | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 sys/dev/ramdisk.h (limited to 'sys/dev/ramdisk.h') 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 + +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 -- cgit