svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
cb_ops(9s)
Kernel & Driver Data Structures cb_ops(9S)
NAME
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
The cb_ops structure contains all entry points for drivers that support
both character and block entry points. All leaf device drivers that
support direct user process access to a device should declare a cb_ops
structure.
All drivers that safely allow multiple threads of execution in the
driver at the same time must set the D_MP flag in the cb_flag field.
See open(9E).
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.
If the driver returns EINTR from open(9E), it should also set the
D_OPEN_RETURNS_EINTR flag in the cb_flag field. This lets the framework
know that it is safe for the driver to return EINTR when waiting, to
provide exclusion for a last-reference close(9E) call to complete
before calling open(9E).
The mt-streams(9F) function describes other flags that can be set in
the cb_flag field.
The 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.
tab(); lw(1.7i) lw(1.98i) lw(1.82i) lw(1.7i) lw(1.98i) lw(1.82i)
block/charFunctionDescription _ b/cXXopenDDI/DKI b/cXXcloseDDI/DKI
bXXstrategyDDI/DKI bXXprintDDI/DKI bXXdumpDDI(Sun) cXXreadDDI/DKI
cXXwriteDDI/DKI cXXioctlDDI/DKI cXXdevmapDDI(Sun) cXXmmapDKI
cXXsegmapDKI cXXchpollDDI/DKI cXXprop_opDDI(Sun) cXXareadDDI(Sun)
cXXawriteDDI(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, intptr_t arg, int mode,
cred_t *credp, int *rvalp);
int (*cb_devmap)(dev_t dev, devmap_cookie_t dhp, offset_t off,
size_t len, size_t *maplen, uint_t model);
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)
Writing Device Drivers in Oracle Solaris 11.4
STREAMS Programming Guide
Oracle Solaris 11.4 24 Apr 2008 cb_ops(9S)