60 lines
1.8 KiB
C
60 lines
1.8 KiB
C
|
|
||
|
/*
|
||
|
* 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
|