The cb_ops(9S) structure is the SunOS 5 version of the cdevsw and bdevsw tables of previous versions of UNIX System V. It contains character and block device information and the driver entry points for non-STREAMS drivers.
struct cb_ops {
int *cb_open)(dev_t *devp, int flag, int otyp,
cred_t *credp);
int (*cb_close)(dev_t dev, int flag, int otyp,
cred_t *credp);
int (*cb_strategy)(struct buf *bp);
int (*cb_print)(dev_t dev, char *str);
int (*cb_dump)(dev_t dev, caddr_t addr,daddr_t blkno,
int nblk);
int (*cb_read)(dev_t dev, struct uio *uiop, cred_t *credp);
int (*cb_write)(dev_t dev, struct uio *uiop, cred_t *credp);
int (*cb_ioctl)(dev_t dev, int cmd, int arg, int mode,
cred_t *credp, int *rvalp);
int (*cb_devmap)(dev_t dev, dev_info_t *dip,
ddi_devmap_data_t *dvdp, ddi_devmap_cmd_t cmd,
off_t offset, unsigned int len, unsigned int prot,
cred_t *credp);
int (*cb_mmap)(dev_t dev, off_t off, int prot);
int (*cb_segmap)(dev_t dev, off_t off, struct as *asp,
caddr_t *addrp, off_t len, unsigned int prot,
unsigned int maxprot, unsigned int flags,
cred_t *credp);
int (*cb_chpoll)(dev_t dev, short events, int anyyet,
short *reventsp, struct pollhead **phpp);
int (*cb_prop_op)(dev_t dev, dev_info_t *dip,
ddi_prop_op_t prop_op, int mod_flags, char *name,
caddr_t valuep, int *length);
struct streamtab *cb_str; /* streams information */
/*
* The cb_flag fields are here to tell the system a bit about
* the device. The bit definitions are in <sys/conf.h>.
*/
int cb_flag; /* driver compatibility flag */
};
|