/* * (C) 1984 UniSoft Corp. of Berkeley CA * * UniPlus Source Code. This program is proprietary * with Unisoft Corporation and is not to be reproduced * or used in any manner except as authorized in * writing by Unisoft. * * reinit.c - reinitialize parts of data segment for restarting unix */ #include "sys/param.h" #include "sys/config.h" #include "sys/types.h" #include "sys/systm.h" #include "sys/dir.h" #include "sys/signal.h" #include "sys/user.h" #include "sys/errno.h" #include "sys/file.h" #include "sys/tty.h" #include "sys/termio.h" #include "sys/conf.h" #include "sys/sysinfo.h" #include "sys/var.h" #include "sys/reg.h" #include "setjmp.h" #include "sys/kb.h" #include "sys/sysmacros.h" #include "sys/iobuf.h" #include "sys/map.h" #define CMAPSIZ 50 /* also in conf.c */ #define SMAPSIZ 50 /* also in conf.c */ extern mpid; /* used by newproc to decide whether first "init" or not */ extern struct iostat prostat[]; extern struct iobuf protab; extern struct iostat snstat[]; extern struct iobuf sntab; extern struct iostat cvstat[]; extern struct iobuf cvtab; extern char *kb_keytab; extern char ToLA[]; extern char kb_altkp; extern int (*te_putc)(); extern int vt_putc(); extern char vt_tabset[]; /* * reinit - called from RESTART console ioctl call in sunix */ reinit() { extern int teslotsused; register i; mpid = 0; retabinit(&protab, PR0, prostat); retabinit(&sntab, SN1, snstat); retabinit(&cvtab, CV2, cvstat); kb_keytab = ToLA; kb_shft = kb_lock = kb_altkp = 0; te_putc = vt_putc; for (i = 0 ; i < 88 ; i++ ) vt_tabset[i] = 0; remapinit(&coremap[0], CMAPSIZ); remapinit(&swapmap[0], SMAPSIZ); /* * reset tecmar four port card */ teslotsused = 0; } retabinit(tab, dev, stat) register struct iobuf *tab; struct iostat stat[]; { tab->b_flags = 0; tab->b_forw = 0; tab->b_back = 0; tab->b_actf = 0; tab->b_actl = 0; tab->b_dev = makedev(dev, 0); tab->b_active = 0; tab->b_errcnt = 0; tab->io_erec = 0; tab->io_nreg = 0; tab->io_addr = 0; tab->io_stp = stat; tab->io_start = 0; tab->io_s1 = 0; tab->io_s2 = 0; } remapinit(map, szmap) struct map *map; { map->m_size = szmap - 2; map->m_addr = 0; for (map++, szmap--; szmap > 0; map++, szmap--) { map->m_size = 0; map->m_addr = 0; } }