|
|
1.1 ! root 1: /* dlcwrite.c - dlcwrite */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <slu11.h> ! 6: #include <proc.h> ! 7: #include <sleep.h> ! 8: #include <dlc.h> ! 9: ! 10: /*------------------------------------------------------------------------ ! 11: * dlcwrite -- write a block (frame) with byte-stuffing and EOB ! 12: *------------------------------------------------------------------------ ! 13: */ ! 14: dlcwrite(devptr, buff, count) ! 15: struct devsw *devptr; ! 16: char *buff; ! 17: int count; ! 18: { ! 19: char ps; ! 20: struct dlblk *dptr; ! 21: struct csr *cptr; ! 22: ! 23: if (count < 0) ! 24: return(SYSERR); ! 25: else if (count == 0) ! 26: return(OK); ! 27: disable(ps); ! 28: dptr = devptr->dvioblk; ! 29: if (dptr->dostate != DLOINIT) { ! 30: restore(ps); ! 31: return(SYSERR); ! 32: } ! 33: dptr->dostate = DLOREADY; ! 34: dptr->dostart = dptr->donext = buff; ! 35: dptr->dotot = dptr->docount = count; ! 36: dptr->doesc = FALSE; ! 37: (dptr->dioaddr)->ctstat = SLUENABLE; ! 38: dptr->doproc = currpid; ! 39: suspend(currpid); ! 40: dptr->dostate = DLOINIT; ! 41: restore(ps); ! 42: return(OK); ! 43: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.