1: /*
   2:  * generalized seek sort for disk
   3:  */
   4: 
   5: #include "../h/param.h"
   6: #include "../h/systm.h"
   7: #include "../h/buf.h"
   8: 
   9: #define b_cylin b_resid
  10: 
  11: disksort(dp, bp)
  12: register struct buf *dp, *bp;
  13: {
  14:     register struct buf *ap;
  15:     struct buf *tp;
  16: 
  17:     ap = dp->b_actf;
  18:     if(ap == NULL) {
  19:         dp->b_actf = bp;
  20:         dp->b_actl = bp;
  21:         bp->av_forw = NULL;
  22:         return;
  23:     }
  24:     tp = NULL;
  25:     for(; ap != NULL; ap = ap->av_forw) {
  26:         if ((bp->b_flags&B_READ) && (ap->b_flags&B_READ) == 0) {
  27:             if (tp == NULL)
  28:                 tp = ap;
  29:             break;
  30:         }
  31:         if ((bp->b_flags&B_READ) == 0 && (ap->b_flags&B_READ))
  32:             continue;
  33:         if(ap->b_cylin <= bp->b_cylin)
  34:             if(tp == NULL || ap->b_cylin >= tp->b_cylin)
  35:                 tp = ap;
  36:     }
  37:     if(tp == NULL)
  38:         tp = dp->b_actl;
  39:     bp->av_forw = tp->av_forw;
  40:     tp->av_forw = bp;
  41:     if(tp == dp->b_actl)
  42:         dp->b_actl = bp;
  43: }

Defined functions

disksort defined in line 11; used 1 times

Defined macros

b_cylin defined in line 9; used 4 times
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 598
Valid CSS Valid XHTML 1.0 Strict