-caddr_t cacur = (caddr_t)&cabase;
-caddr_t camax = (caddr_t)&cabase;
-int cax = 0;
-/*
- * This is a kernel-mode storage allocator.
- * It is very primitive, currently, in that
- * there is no way to give space back.
- * It serves, for the time being, the needs of
- * auto-configuration code and the like which
- * need to allocate some stuff at boot time.
- */
-caddr_t
-calloc(size)
- int size;
-{
- register caddr_t res;
- register int i;
-
- if (cacur+size >= (caddr_t)&calimit)
- panic("calloc");
- while (cacur+size > camax) {
- (void) vmemall(&camap[cax], CLSIZE, &proc[0], CSYS);
- vmaccess(&camap[cax], camax, CLSIZE);
- for (i = 0; i < CLSIZE; i++)
- clearseg(camap[cax++].pg_pfnum);
- camax += NBPG * CLSIZE;
- }
- res = cacur;
- cacur += size;
- return (res);