|
|
Xinu for VAX
/* ibput.c - ibput */
#include <conf.h>
#include <kernel.h>
#include <io.h>
#include <disk.h>
#include <lfile.h>
#include <dir.h>
/*------------------------------------------------------------------------
* ibput -- write an iblock back to disk given its number
*------------------------------------------------------------------------
*/
ibput(diskdev, inum, loc)
int diskdev;
IBADDR inum;
struct iblk *loc;
{
DBADDR dba;
char *buff;
char *to, *from;
int i;
int ibsem;
dba = ibtodb(inum);
buff = getbuf(dskdbp);
ibsem = ((struct dsblk *)devtab[diskdev].dvioblk)->dibsem;
wait(ibsem);
read(diskdev, buff, dba);
to = buff + ibdisp(inum);
from = (char *)loc;
for (i=0 ; i<sizeof(struct iblk) ; i++)
*to++ = *from++;
write(diskdev, buff, dba);
signal(ibsem);
return(OK);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.