Print this page
12061 Convert cb_ops(9S) to mandoc

Split Close
Expand all
Collapse all
          --- old/usr/src/man/man9s/cb_ops.9s.man.txt
          +++ new/usr/src/man/man9s/cb_ops.9s.man.txt
   1    1  CB_OPS(9S)                Data Structures for Drivers               CB_OPS(9S)
   2    2  
   3      -
   4      -
   5    3  NAME
   6      -       cb_ops - character/block entry points structure
        4 +     cb_ops - character/block entry points structure
   7    5  
   8    6  SYNOPSIS
   9      -       #include <sys/conf.h>
  10      -       #include <sys/ddi.h>
  11      -       #include <sys/sunddi.h>
        7 +     #include <sys/conf.h>
        8 +     #include <sys/ddi.h>
        9 +     #include <sys/sunddi.h>
  12   10  
  13      -
  14   11  INTERFACE LEVEL
  15      -       Solaris DDI specific (Solaris DDI)
       12 +     Solaris DDI specific (Solaris DDI)
  16   13  
  17   14  DESCRIPTION
  18      -       The cb_ops structure contains all entry points for drivers that support
  19      -       both character and block entry points. All leaf device drivers that
  20      -       support direct user process access to a device should declare a cb_ops
  21      -       structure.
       15 +     The cb_ops structure contains all entry points for drivers that support
       16 +     both character and block entry points.  All leaf device drivers that
       17 +     support direct user process access to a device should declare a cb_ops
       18 +     structure.
  22   19  
       20 +     All drivers that safely allow multiple threads of execution in the driver
       21 +     at the same time must set the D_MP flag in the cb_flag field.  See
       22 +     open(9E).
  23   23  
  24      -       All drivers that safely allow multiple threads of execution in the
  25      -       driver at the same time must set the D_MP flag in the cb_flag field.
  26      -       See open(9E).
       24 +     If the driver properly handles 64-bit offsets, it should also set the
       25 +     D_64BIT flag in the cb_flag field.  This specifies that the driver will
       26 +     use the uio_loffset field of the uio(9S) structure.
  27   27  
       28 +     If the driver returns EINTR from open(9E), it should also set the
       29 +     D_OPEN_RETURNS_EINTR flag in the cb_flag field.  This lets the framework
       30 +     know that it is safe for the driver to return EINTR when waiting, to
       31 +     provide exclusion for a last-reference close(9E) call to complete before
       32 +     calling open(9E).
  28   33  
  29      -       If the driver properly handles 64-bit offsets, it should also set the
  30      -       D_64BIT flag in the cb_flag field. This specifies that the driver will
  31      -       use the uio_loffset field of the uio(9S) structure.
       34 +     The mt-streams(9F) function describes other flags that can be set in the
       35 +     cb_flag field.
  32   36  
       37 +     The cb_rev is the cb_ops structure revision number.  This field must be
       38 +     set to CB_REV.
  33   39  
  34      -       If the driver returns EINTR from open(9E), it should also set the
  35      -       D_OPEN_RETURNS_EINTR flag in the cb_flag field. This lets the framework
  36      -       know that it is safe for the driver to return EINTR when waiting, to
  37      -       provide exclusion for a last-reference close(9E) call to complete
  38      -       before calling open(9E).
       40 +     Non-STREAMS drivers should set cb_str to NULL.
  39   41  
       42 +     The following DDI/DKI or DKI-only or DDI-only functions are provided in
       43 +     the character/block driver operations structure.
  40   44  
  41      -       The mt-streams(9F) function describes other flags that can be set in
  42      -       the cb_flag field.
       45 +     block/char    Function    Description
       46 +     b/c           XXopen      DDI/DKI
       47 +     b/c           XXclose     DDI/DKI
       48 +     b             XXstrategy  DDI/DKI
       49 +     b             XXprint     DDI/DKI
       50 +     b             XXdump      DDI(Sun)
       51 +     c             XXread      DDI/DKI
       52 +     c             XXwrite     DDI/DKI
       53 +     c             XXioctl     DDI/DKI
       54 +     c             XXdevmap    DDI(Sun)
       55 +     c             XXmmap      DKI
       56 +     c             XXsegmap    DKI
       57 +     c             XXchpoll    DDI/DKI
       58 +     c             XXprop_op   DDI(Sun)
       59 +     c             XXaread     DDI(Sun)
       60 +     c             XXawrite    DDI(Sun)
  43   61  
  44      -
  45      -       The cb_rev is the cb_ops structure revision number. This field must be
  46      -       set to CB_REV.
  47      -
  48      -
  49      -       Non-STREAMS drivers should set cb_str to NULL.
  50      -
  51      -
  52      -       The following DDI/DKI or DKI-only or DDI-only functions are provided in
  53      -       the character/block driver operations structure.
  54      -
  55      -
  56      -
  57      -
  58      -       block/char    Function    Description
  59      -       ----------------------------------------
  60      -       b/c          XXopen       DDI/DKI
  61      -       b/c          XXclose      DDI/DKI
  62      -       b            XXstrategy   DDI/DKI
  63      -       b            XXprint      DDI/DKI
  64      -       b            XXdump       DDI(Sun)
  65      -       c            XXread       DDI/DKI
  66      -       c            XXwrite      DDI/DKI
  67      -       c            XXioctl      DDI/DKI
  68      -       c            XXdevmap     DDI(Sun)
  69      -       c            XXmmap       DKI
  70      -       c            XXsegmap     DKI
  71      -       c            XXchpoll     DDI/DKI
  72      -       c            XXprop_op    DDI(Sun)
  73      -       c            XXaread      DDI(Sun)
  74      -       c            XXawrite     DDI(Sun)
  75      -
  76      -
  77   62  STRUCTURE MEMBERS
  78      -         int  (*cb_open)(dev_t *devp, int flag, int otyp, cred_t *credp);
  79      -         int  (*cb_close)(dev_t dev, int flag, int otyp, cred_t *credp);
  80      -         int  (*cb_strategy)(struct buf *bp);
  81      -         int  (*cb_print)(dev_t dev, char *str);
  82      -         int  (*cb_dump)(dev_t dev, caddr_t addr, daddr_t blkno, int nblk);
  83      -         int  (*cb_read)(dev_t dev, struct uio *uiop, cred_t *credp);
  84      -         int  (*cb_write)(dev_t dev, struct uio *uiop, cred_t *credp);
  85      -         int  (*cb_ioctl)(dev_t dev, int cmd, intptr_t arg, int mode,
  86      -                 cred_t *credp, int *rvalp);
  87      -         int  (*cb_devmap)(dev_t dev, devmap_cookie_t dhp, offset_t off,
  88      -                 size_t len, size_t *maplen, uint_t model);
  89      -         int  (*cb_mmap)(dev_t dev, off_t off, int prot);
  90      -         int  (*cb_segmap)(dev_t dev, off_t off, struct as *asp,
  91      -                 caddr_t *addrp, off_t len, unsigned int prot,
  92      -                 unsigned int maxprot, unsigned int flags, cred_t *credp);
  93      -         int  (*cb_chpoll)(dev_t dev, short events, int anyyet,
  94      -                 short *reventsp, struct pollhead **phpp);
  95      -         int  (*cb_prop_op)(dev_t dev, dev_info_t *dip,
  96      -                 ddi_prop_op_t prop_op, int mod_flags,
  97      -                 char *name, caddr_t valuep, int *length);
  98      -         struct streamtab *cb_str;   /* streams information */
  99      -         int  cb_flag;
 100      -         int  cb_rev;
 101      -         int  (*cb_aread)(dev_t dev, struct aio_req *aio, cred_t *credp);
 102      -         int  (*cb_awrite)(dev_t dev, struct aio_req *aio, cred_t *credp);
       63 +       int  (*cb_open)(dev_t *devp, int flag, int otyp, cred_t *credp);
       64 +       int  (*cb_close)(dev_t dev, int flag, int otyp, cred_t *credp);
       65 +       int  (*cb_strategy)(struct buf *bp);
       66 +       int  (*cb_print)(dev_t dev, char *str);
       67 +       int  (*cb_dump)(dev_t dev, caddr_t addr, daddr_t blkno, int nblk);
       68 +       int  (*cb_read)(dev_t dev, struct uio *uiop, cred_t *credp);
       69 +       int  (*cb_write)(dev_t dev, struct uio *uiop, cred_t *credp);
       70 +       int  (*cb_ioctl)(dev_t dev, int cmd, intptr_t arg, int mode,
       71 +              cred_t *credp, int *rvalp);
       72 +       int  (*cb_devmap)(dev_t dev, devmap_cookie_t dhp, offset_t off,
       73 +              size_t len, size_t *maplen, uint_t model);
       74 +       int  (*cb_mmap)(dev_t dev, off_t off, int prot);
       75 +       int  (*cb_segmap)(dev_t dev, off_t off, struct as *asp,
       76 +              caddr_t *addrp, off_t len, unsigned int prot,
       77 +              unsigned int maxprot, unsigned int flags, cred_t *credp);
       78 +       int  (*cb_chpoll)(dev_t dev, short events, int anyyet,
       79 +              short *reventsp, struct pollhead **phpp);
       80 +       int  (*cb_prop_op)(dev_t dev, dev_info_t *dip,
       81 +              ddi_prop_op_t prop_op, int mod_flags,
       82 +              char *name, caddr_t valuep, int *length);
       83 +       struct streamtab *cb_str;   /* streams information */
       84 +       int  cb_flag;
       85 +       int  cb_rev;
       86 +       int  (*cb_aread)(dev_t dev, struct aio_req *aio, cred_t *credp);
       87 +       int  (*cb_awrite)(dev_t dev, struct aio_req *aio, cred_t *credp);
 103   88  
 104      -
 105   89  SEE ALSO
 106      -       aread(9E), awrite(9E), chpoll(9E), close(9E), dump(9E), ioctl(9E),
 107      -       mmap(9E), open(9E), print(9E), prop_op(9E), read(9E), segmap(9E),
 108      -       strategy(9E), write(9E), nochpoll(9F), nodev(9F), nulldev(9F),
 109      -       dev_ops(9S), qinit(9S)
       90 +     aread(9E), awrite(9E), chpoll(9E), close(9E), dump(9E), ioctl(9E),
       91 +     mmap(9E), open(9E), print(9E), prop_op(9E), read(9E), segmap(9E),
       92 +     strategy(9E), write(9E), nochpoll(9F), nodev(9F), nulldev(9F),
       93 +     dev_ops(9S), qinit(9S)
 110   94  
       95 +     Writing Device Drivers.
 111   96  
 112      -       Writing Device Drivers
       97 +     STREAMS Programming Guide.
 113   98  
 114      -
 115      -       STREAMS Programming Guide
 116      -
 117      -
 118      -
 119      -                                April 24, 2008                      CB_OPS(9S)
       99 +illumos                          July 9, 2018                          illumos
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX