cb_ops(9s) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

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)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3