Use a pool for proc structures.

This commit is contained in:
thorpej 1998-08-02 04:41:32 +00:00
parent 6f739e1a66
commit 0e28b643e9
5 changed files with 17 additions and 8 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: svr4_misc.c,v 1.60 1998/03/03 13:45:58 fvdl Exp $ */
/* $NetBSD: svr4_misc.c,v 1.61 1998/08/02 04:41:33 thorpej Exp $ */
/*
* Copyright (c) 1994 Christos Zoulas
@ -48,6 +48,7 @@
#include <sys/ioctl.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/pool.h>
#include <sys/mbuf.h>
#include <sys/mman.h>
#include <sys/mount.h>
@ -1306,7 +1307,7 @@ loop:
* release while still running in process context.
*/
cpu_wait(q);
FREE(q, M_PROC);
pool_put(&proc_pool, q);
nprocs--;
return 0;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: kern_exit.c,v 1.52 1998/07/31 22:50:49 perry Exp $ */
/* $NetBSD: kern_exit.c,v 1.53 1998/08/02 04:41:32 thorpej Exp $ */
/*
* Copyright (c) 1982, 1986, 1989, 1991, 1993
@ -60,6 +60,7 @@
#include <sys/vnode.h>
#include <sys/syslog.h>
#include <sys/malloc.h>
#include <sys/pool.h>
#include <sys/resourcevar.h>
#include <sys/ptrace.h>
#include <sys/acct.h>
@ -381,7 +382,7 @@ loop:
* release while still running in process context.
*/
cpu_wait(p);
FREE(p, M_PROC);
pool_put(&proc_pool, p);
nprocs--;
return (0);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: kern_fork.c,v 1.43 1998/06/25 21:17:16 thorpej Exp $ */
/* $NetBSD: kern_fork.c,v 1.44 1998/08/02 04:41:32 thorpej Exp $ */
/*
* Copyright (c) 1982, 1986, 1989, 1991, 1993
@ -49,6 +49,7 @@
#include <sys/filedesc.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/pool.h>
#include <sys/mount.h>
#include <sys/proc.h>
#include <sys/resourcevar.h>
@ -169,7 +170,7 @@ fork1(p1, flags, retval, rnewprocp)
*/
/* Allocate new proc. */
MALLOC(newproc, struct proc *, sizeof(struct proc), M_PROC, M_WAITOK);
newproc = pool_get(&proc_pool, PR_WAITOK);
/*
* Find an unused process ID. We remember a range of unused IDs

View File

@ -1,4 +1,4 @@
/* $NetBSD: kern_proc.c,v 1.23 1998/03/01 02:22:29 fvdl Exp $ */
/* $NetBSD: kern_proc.c,v 1.24 1998/08/02 04:41:32 thorpej Exp $ */
/*
* Copyright (c) 1982, 1986, 1989, 1991, 1993
@ -47,6 +47,7 @@
#include <ufs/ufs/quota.h>
#include <sys/uio.h>
#include <sys/malloc.h>
#include <sys/pool.h>
#include <sys/mbuf.h>
#include <sys/ioctl.h>
#include <sys/tty.h>
@ -73,6 +74,7 @@ struct pgrphashhead *pgrphashtbl;
u_long pgrphash;
struct proclist allproc;
struct proclist zombproc;
struct pool proc_pool;
static void orphanpg __P((struct pgrp *));
#ifdef DEBUG
@ -91,6 +93,8 @@ procinit()
pidhashtbl = hashinit(maxproc / 4, M_PROC, M_WAITOK, &pidhash);
pgrphashtbl = hashinit(maxproc / 4, M_PROC, M_WAITOK, &pgrphash);
uihashtbl = hashinit(maxproc / 16, M_PROC, M_WAITOK, &uihash);
pool_init(&proc_pool, sizeof(struct proc), 0, 0, 0, "procpl",
0, NULL, NULL, M_PROC);
}
/*

View File

@ -1,4 +1,4 @@
/* $NetBSD: proc.h,v 1.60 1998/05/02 18:41:47 christos Exp $ */
/* $NetBSD: proc.h,v 1.61 1998/08/02 04:41:32 thorpej Exp $ */
/*-
* Copyright (c) 1986, 1989, 1991, 1993
@ -303,6 +303,8 @@ extern struct proclist allproc; /* List of all processes. */
extern struct proclist zombproc; /* List of zombie processes. */
struct proc *initproc; /* Process slots for init, pager. */
extern struct pool proc_pool; /* memory pool for procs */
#define NQS 32 /* 32 run queues. */
int whichqs; /* Bit mask summary of non-empty Q's. */
struct prochd {