AUSAM/sys/cinit.h

Compare this file to the similar file:
Show the results in this format:



struct cblock {
	struct cblock *c_next;
#ifndef CBLOCK_16
	char info[6];
	};
	extern cblockm; extern cblockl;
#endif
#ifdef CBLOCK_16
	char info[14];
	};
	extern cblockm; extern cblockl;
#endif

/* The character lists-- space for (6 or 14)*NCLIST characters */
struct cblock cfree[NCLIST];
/* List head for unused character blocks. */
struct cblock *cfreelist;

/*
 * Initialize clist by freeing all character blocks, then count
 * number of character devices. (Once-only routine)
 */
cinit()
{
	register int ccp;
	register struct cblock *cp;
	register struct cdevsw *cdp;

	ccp = cfree;
	for (cp=(ccp+cblockm)&~cblockm; cp <= &cfree[NCLIST-1]; cp++) {
		cp->c_next = cfreelist;
		cfreelist = cp;
	}
	ccp = 0;
	for(cdp = cdevsw; cdp->d_open; cdp++)
		ccp++;
	nchrdev = ccp;
}