|
|
1.1 ! root 1: /* dsread.c - dsread */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <proc.h> ! 6: #include <disk.h> ! 7: ! 8: /*------------------------------------------------------------------------ ! 9: * dsread -- read a block from a disk device ! 10: *------------------------------------------------------------------------ ! 11: */ ! 12: dsread(devptr, buff, block) ! 13: struct devsw *devptr; ! 14: char *buff; ! 15: DBADDR block; ! 16: { ! 17: struct dreq *drptr; ! 18: int stat; ! 19: char ps; ! 20: ! 21: disable(ps); ! 22: drptr = (struct dreq *) getbuf(dskrbp); ! 23: drptr->drdba = block; ! 24: drptr->drpid = currpid; ! 25: drptr->drbuff = buff; ! 26: drptr->drop = DREAD; ! 27: if ( (stat=dskenq(drptr, devptr->dvioblk)) == DONQ) { ! 28: suspend(currpid); ! 29: stat = drptr->drstat; ! 30: } ! 31: freebuf(drptr); ! 32: restore(ps); ! 33: return(stat); ! 34: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.