up | Inhaltsverzeichniss | Kommentar

Manual page for cb_ops(9S)

cb_ops - character/block entry points structure

SYNOPSIS

#include <sys/conf.h>
#include <sys/ddi.h>
#include <sys/sunddi.h>

INTERFACE LEVEL

Solaris DDI specific (Solaris DDI).

DESCRIPTION

cb_ops contains all entry points for drivers that support both character and block entry points. All leaf device drivers supporting direct user process access to a device should declare a cb_ops structure.

All drivers which safely allow multiple threads of execution in the driver at the same time must set the D_MP flag in the cb_flag field.

If the driver properly handles 64-bit offsets, it should also set the D_64BIT flag in the cb_flag field. This specifies that the driver will use the uio_loffset field of the uio.9s structure.

mt-streams.9f describes other flags that may be set in the cb_flag field.

cb_rev is the cb_ops structure revision number. This field must be set to CB_REV.

Non-STREAMS drivers should set cb_str to NULL.

The following DDI/DKI or DKI-only or DDI-only functions are provided in the character/block driver operations structure.

block/char  Function    Description
b/c         XXopen      DDI/DKI
b/c         XXclose     DDI/DKI
b           XXstrategy  DDI/DKI
b           XXprint     DDI/DKI
b           XXdump      DDI(Sun)
c           XXread      DDI/DKI
c           XXwrite     DDI/DKI
c           XXioctl     DDI/DKI
c           XXdevmap    DDI(Sun)
c           XXmmap      DKI
c           XXsegmap    DKI
c           XXchpoll    DDI/DKI
c           XXprop_op   DDI(Sun)
c           XXaread     DDI(Sun)
c           XXawrite    DDI(Sun)

STRUCTURE MEMBERS

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)();
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 */
int     cb_flag;
int     cb_rev;
int     (*cb_aread)(dev_t dev, struct aio_req *aio, cred_t *credp);
int     (*cb_awrite)(dev_t dev, struct aio_req *aio, cred_t *credp);

SEE ALSO

aread.9e awrite.9e chpoll.9e close.9e dump.9e ioctl.9e mmap.9e open.9e print.9e prop_op.9e read.9e segmap.9e strategy.9e write.9e nochpoll.9f nodev.9f nulldev.9f dev_ops.9s qinit.9s

NOTES

The devmap entry point is not defined in this release and should be set to nodev.


index | Inhaltsverzeichniss | Kommentar

Created by unroff & hp-tools. © by Hans-Peter Bischof. All Rights Reserved (1997).

Last modified 21/April/97