Ausam/sys/iinit.h
/*
* iinit is called once (from main)
* very early in initialization.
* It reads the root's super block
* and initializes the current date
* from the last modified date.
*
* panic: iinit -- cannot read the super
* block. Usually because of an IO error.
*/
iinit()
{
register *cp, *bp;
(*bdevsw[rootdev.d_major].d_open)(rootdev, 1);
(*bdevsw[swapdev.d_major].d_open)(swapdev, 1); /* fix0xx */
bp = bread(rootdev, 1);
#ifndef QMOUNT
cp = getblk(NODEV);
#endif QMOUNT
if(u.u_error)
panic("iinit");
#ifndef QMOUNT
bcopy(bp->b_addr, cp->b_addr, 256);
brelse(bp);
mount[0].m_bufp = cp;
#else
mount[0].m_bufp = bp;
bp->b_flags =| B_MOUNT;
#endif QMOUNT
mount[0].m_dev = rootdev;
#ifndef MAPPED_BUFFERS
#ifndef QMOUNT
cp = cp->b_addr;
#else
cp = bp->b_addr;
#endif QMOUNT
cp->s_flock = 0;
cp->s_ilock = 0;
cp->s_ronly = 0;
time = cp->s_time; /* fix000 */
#else
bswtch( bp ); /* enable ka5 */
b.s_flock = 0;
b.s_ilock = 0;
b.s_ronly = 0;
b.s_ilowa = 0; /* fix026 */
time = b.s_time;
#endif MAPPED_BUFFERS
#ifdef QMOUNT
brelse( bp );
#endif QMOUNT
}