|
|
1.1 ! root 1: /* ibput.c - ibput */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <io.h> ! 6: #include <disk.h> ! 7: #include <lfile.h> ! 8: #include <dir.h> ! 9: ! 10: /*------------------------------------------------------------------------ ! 11: * ibput -- write an iblock back to disk given its number ! 12: *------------------------------------------------------------------------ ! 13: */ ! 14: ibput(diskdev, inum, loc) ! 15: int diskdev; ! 16: IBADDR inum; ! 17: struct iblk *loc; ! 18: { ! 19: DBADDR dba; ! 20: char *buff; ! 21: char *to, *from; ! 22: int i; ! 23: int ibsem; ! 24: ! 25: dba = ibtodb(inum); ! 26: buff = getbuf(dskdbp); ! 27: ibsem = ((struct dsblk *)devtab[diskdev].dvioblk)->dibsem; ! 28: wait(ibsem); ! 29: read(diskdev, buff, dba); ! 30: to = buff + ibdisp(inum); ! 31: from = (char *)loc; ! 32: for (i=0 ; i<sizeof(struct iblk) ; i++) ! 33: *to++ = *from++; ! 34: write(diskdev, buff, dba); ! 35: signal(ibsem); ! 36: return(OK); ! 37: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.