|
|
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.