Diff for /wikisrc/users/mlelstv/disk-driver-template.mdwn between versions 1.8 and 1.12

version 1.8, 2016/11/28 06:11:23 version 1.12, 2016/12/08 11:39:34
Line 25  const struct bdevsw xxx_bdevsww= { Line 25  const struct bdevsw xxx_bdevsww= {
         .d_dump = xxxdump,          .d_dump = xxxdump,
         .d_psize = xxxsize,          .d_psize = xxxsize,
         .d_discard = xxxdiscard,          .d_discard = xxxdiscard,
         .d_flag = D_DISK          .d_flag = D_DISK | D_MPSAFE
 };  };
   
 const struct cdevsw xxx_cdevsw = {  const struct cdevsw xxx_cdevsw = {
Line 40  const struct cdevsw xxx_cdevsw = { Line 40  const struct cdevsw xxx_cdevsw = {
         .d_mmap = nommap,          .d_mmap = nommap,
         .d_kqfilter = nokqfilter,          .d_kqfilter = nokqfilter,
         .d_discard = xxxdiscard,          .d_discard = xxxdiscard,
         .d_flag = D_DISK          .d_flag = D_DISK | D_MPSAFE
 };  };
   
 static void     xxxminphys(struct buf *bp);  static void     xxxminphys(struct buf *bp);
Line 54  static const struct dkdriver xxxdkdriver Line 54  static const struct dkdriver xxxdkdriver
         .d_open = xxxopen,          .d_open = xxxopen,
         .d_close = xxxclose,          .d_close = xxxclose,
         .d_strategy = xxxstrategy,          .d_strategy = xxxstrategy,
         .d_iosize = xxx_iosize,  
         .d_minphys  = xxxminphys,          .d_minphys  = xxxminphys,
         .d_diskstart = xxx_diskstart,          .d_diskstart = xxx_diskstart,
         .d_dumpblocks = xxx_dumpblocks,          .d_discard = xxx_discard,
         .d_lastclose = xxx_lastclose,          .d_dumpblocks = xxx_dumpblocks, /* optional */
         .d_discard = xxx_discard          .d_iosize = xxx_iosize,         /* optional */
           .d_lastclose = xxx_lastclose,   /* optional */
           .d_firstopen = xxx_firstopen,   /* optional */
           .d_label = xxx_label,           /* optional */
 };  };
   
 static int      xxx_match(device_t, cfdata_t, void *);  static int      xxx_match(device_t, cfdata_t, void *);
 static void     xxx_attach(device_t, device_t, void *);  static void     xxx_attach(device_t, device_t, void *);
 static int      xxx_detach(device_t, int);  static int      xxx_detach(device_t, int);
   static int      xxx_activate(device_t, enum devact);
   
 struct xxx_softc {  struct xxx_softc {
         struct dk_softc         sc_dksc; /* generic disk interface */          struct dk_softc         sc_dksc; /* generic disk interface */
Line 343  xxx_detach(device_t self, int flags) Line 346  xxx_detach(device_t self, int flags)
         xxx_finish(self);          xxx_finish(self);
 #endif  #endif
 }  }
   
   static int
   xxx_activate(device_t self, enum devact act)
   {
           // switch (act) {
           // case DVACT_ACTIVATE:
           //      return 0;
           // case DVACT_DEACTIVATE:
           //      return 0;
           // }
   
           return EOPNOTSUPP;
   }
 </code></pre>  </code></pre>
   
 ----  ----
Line 448  static int Line 464  static int
 xxx_dumpblocks(device_t dv, void *va, daddr_t blkno, int nblk)  xxx_dumpblocks(device_t dv, void *va, daddr_t blkno, int nblk)
 {  {
         // issue polling I/O to dump a page          // issue polling I/O to dump a page
           // return error
 }  }
   
 static void  static void
Line 460  static int Line 477  static int
 xxx_discard(device_t dv, off_t pos, off_t len)  xxx_discard(device_t dv, off_t pos, off_t len)
 {  {
         // issue request to discard bytes          // issue request to discard bytes
           // return error
   }
   
   static void
   xxx_label(device_t dv, struct disklabel *lp)
   {
           // lp is initialized for generic disk
           // augment with driver specific information
 }  }
   
 </code></pre>  </code></pre>
   
 ----  ----
Line 479  xxxstrategy(struct buf *bp) Line 505  xxxstrategy(struct buf *bp)
         // wake up I/O thread          // wake up I/O thread
 }  }
   
 static int  
 xxx_diskstart(device_t dv, struct buf *bp)  
 {  
         // issue I/O for bp  
 }  
   
 static void  static void
 xxxdone(struct xxx_softc *sc, struct buf *bp)  xxxdone(struct xxx_softc *sc, struct buf *bp)
 {  {
Line 495  xxxdone(struct xxx_softc *sc, struct buf Line 515  xxxdone(struct xxx_softc *sc, struct buf
 }  }
   
 static void  static void
 xxx_IOTHREAD(struct dk_softc *dksc)  xxx_iothread(struct dk_softc *dksc)
 {  {
         while (!shutting_down) {          while (!shutting_down) {
                 if (dk_strategy_pending(dksc))                  if (dk_strategy_pending(dksc))

Removed from v.1.8  
changed lines
  Added in v.1.12


CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb