- setredzone(p->p_addr, (caddr_t)&u);
- u.u_procp = p;
- u.u_cmask = CMASK;
- for (i = 1; i < sizeof(u.u_limit)/sizeof(u.u_limit[0]); i++)
- switch (i) {
-
- case LIM_STACK:
- u.u_limit[i] = 512*1024;
- continue;
- case LIM_DATA:
- u.u_limit[i] = ctob(MAXDSIZ);
- continue;
- default:
- u.u_limit[i] = INFINITY;
- continue;
- }
- p->p_maxrss = INFINITY/NBPG;
- clkstart();
+ bcopy("swapper", p->p_comm, sizeof ("swapper"));
+
+ /*
+ * Setup credentials
+ */
+ p->p_cred = &cred0;
+ p->p_ucred = crget();
+ p->p_ucred->cr_ngroups = 1; /* group 0 */
+
+ /*
+ * Create the file descriptor table for process 0.
+ */
+ fdp = &filedesc0;
+ p->p_fd = &fdp->fd_fd;
+ fdp->fd_fd.fd_refcnt = 1;
+ fdp->fd_fd.fd_cmask = cmask;
+ fdp->fd_fd.fd_ofiles = fdp->fd_dfiles;
+ fdp->fd_fd.fd_ofileflags = fdp->fd_dfileflags;
+ fdp->fd_fd.fd_nfiles = NDFILE;
+
+ /*
+ * Set initial limits
+ */
+ p->p_limit = &limit0;
+ for (i = 0; i < sizeof(p->p_rlimit)/sizeof(p->p_rlimit[0]); i++)
+ limit0.pl_rlimit[i].rlim_cur =
+ limit0.pl_rlimit[i].rlim_max = RLIM_INFINITY;
+ limit0.pl_rlimit[RLIMIT_OFILE].rlim_cur = NOFILE;
+ limit0.pl_rlimit[RLIMIT_NPROC].rlim_cur = MAXUPRC;
+ limit0.p_refcnt = 1;
+
+ /*
+ * Allocate a prototype map so we have something to fork
+ */
+ p->p_vmspace = &vmspace0;
+ vmspace0.vm_refcnt = 1;
+ pmap_pinit(&vmspace0.vm_pmap);
+ vm_map_init(&p->p_vmspace->vm_map, round_page(VM_MIN_ADDRESS),
+ trunc_page(VM_MAX_ADDRESS), TRUE);
+ vmspace0.vm_map.pmap = &vmspace0.vm_pmap;
+ p->p_addr = proc0paddr; /* XXX */
+
+ /*
+ * We continue to place resource usage info
+ * and signal actions in the user struct so they're pageable.
+ */
+ p->p_stats = &p->p_addr->u_stats;
+ p->p_sigacts = &p->p_addr->u_sigacts;
+
+ rqinit();
+
+ /*
+ * configure virtual memory system,
+ * set vm rlimits
+ */
+ vm_init_limits(p);
+
+ /*
+ * Initialize the file systems.
+ *
+ * Get vnodes for swapdev and rootdev.
+ */
+ vfsinit();
+ if (bdevvp(swapdev, &swapdev_vp) || bdevvp(rootdev, &rootvp))
+ panic("can't setup bdevvp's");
+
+ startrtclock();
+#if defined(vax)
+#include "kg.h"
+#if NKG > 0
+ startkgclock();
+#endif
+#endif