V10/lsys/sys/conf.h
/*
* structures defining driver entry points
* tables of pointers to, e.g., struct bdevsw are declared in conf.c
* the structures themselves are defined in the drivers that use them
*
* the init macros are used just to check the number of arguments
*/
struct bdevsw
{
int (*d_open)();
int (*d_close)();
int (*d_strategy)();
int d_flags;
};
#ifdef KERNEL
extern struct bdevsw *bdevsw[];
extern struct bdevsw nullbdev;
extern int nblkdev;
#define bdinit(open, close, strat, flag) {open, close, strat, flag}
#endif
/*
* Character device switch.
*/
extern struct cdevsw
{
int (*d_open)();
int (*d_close)();
int (*d_read)();
int (*d_write)();
int (*d_ioctl)();
int (*d_reset)(); /* ??? */
struct streamtab *qinfo;
};
#ifdef KERNEL
extern struct cdevsw *cdevsw[];
extern struct cdevsw nullcdev;
extern int nchrdev;
#define cdinit(open, close, read, write, ioctl) {open, close, read, write, ioctl, nulldev, NULL}
#define cstrinit(stream) {nodev, nulldev, nodev, nodev, nodev, nulldev, stream}
#endif
/* file system types */
struct fstypsw {
int (*t_put)();
int (*t_updat)();
int (*t_read)();
int (*t_write)();
int (*t_trunc)();
int (*t_stat)();
int (*t_nami)();
int (*t_mount)();
int (*t_ioctl)();
struct inode * (*t_open)();
int (*t_dirread)();
};
#ifdef KERNEL
extern struct fstypsw *fstypsw[];
extern nfstyp;
#define fsinit(put, updat, read, write, trunc, stat, nami, mount, ioctl, open, dir) \
{put, updat, read, write, trunc, stat, nami, mount, ioctl, open, dir}
#endif
/*
* stream processor table
*/
struct streamtab {
struct qinit *rdinit;
struct qinit *wrinit;
};
#ifdef KERNEL
extern struct streamtab *streamtab[];
extern struct streamtab nullstream;
extern int nstreamtab;
#endif
/*
* Swap device information
*/
struct swdevt
{
dev_t sw_dev;
daddr_t sw_size;
int sw_freed;
};
#ifdef KERNEL
extern struct swdevt swdevt[];
int nswdevt;
extern struct inode *nullopen();
extern int nullnami();
extern int nulldev(), nodev();
#endif