Module Name: src
Committed By: rmind
Date: Thu Apr 16 14:56:41 UTC 2009
Modified Files:
src/sys/arch/arm/xscale: xscale_pmc.c
src/sys/kern: kern_proc.c
src/sys/sys: proc.h
Log Message:
- Manage pid_table with kmem(9).
- Remove M_PROC and unused M_SESSION.
To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/xscale/xscale_pmc.c
cvs rdiff -u -r1.149 -r1.150 src/sys/kern/kern_proc.c
cvs rdiff -u -r1.285 -r1.286 src/sys/sys/proc.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/arm/xscale/xscale_pmc.c
diff -u src/sys/arch/arm/xscale/xscale_pmc.c:1.12 src/sys/arch/arm/xscale/xscale_pmc.c:1.13
--- src/sys/arch/arm/xscale/xscale_pmc.c:1.12 Wed Oct 17 19:53:45 2007
+++ src/sys/arch/arm/xscale/xscale_pmc.c Thu Apr 16 14:56:41 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: xscale_pmc.c,v 1.12 2007/10/17 19:53:45 garbled Exp $ */
+/* $NetBSD: xscale_pmc.c,v 1.13 2009/04/16 14:56:41 rmind Exp $ */
/*
* Copyright (c) 2002 Wasabi Systems, Inc.
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xscale_pmc.c,v 1.12 2007/10/17 19:53:45 garbled Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xscale_pmc.c,v 1.13 2009/04/16 14:56:41 rmind Exp $");
#include <sys/param.h>
#include <sys/malloc.h>
@@ -190,7 +190,7 @@
p2->p_md.pmc_enabled = p1->p_md.pmc_enabled;
p2->p_md.pmc_state = malloc(sizeof(struct xscale_pmc_state),
- M_PROC, M_NOWAIT);
+ M_TEMP, M_NOWAIT);
if (p2->p_md.pmc_state == NULL) {
/* XXX
* Can't return failure at this point, so just disable
@@ -364,7 +364,7 @@
}
}
if (p->p_md.pmc_state)
- free(p->p_md.pmc_state, M_PROC);
+ free(p->p_md.pmc_state, M_TEMP);
p->p_md.pmc_state = NULL;
p->p_md.pmc_enabled = 0;
}
@@ -452,7 +452,7 @@
if (p->p_md.pmc_state == NULL) {
p->p_md.pmc_state = malloc(sizeof(struct xscale_pmc_state),
- M_PROC, M_WAITOK);
+ M_TEMP, M_WAITOK);
if (!p->p_md.pmc_state)
return ENOMEM;
}
Index: src/sys/kern/kern_proc.c
diff -u src/sys/kern/kern_proc.c:1.149 src/sys/kern/kern_proc.c:1.150
--- src/sys/kern/kern_proc.c:1.149 Thu Apr 16 00:17:19 2009
+++ src/sys/kern/kern_proc.c Thu Apr 16 14:56:41 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_proc.c,v 1.149 2009/04/16 00:17:19 rmind Exp $ */
+/* $NetBSD: kern_proc.c,v 1.150 2009/04/16 14:56:41 rmind Exp $ */
/*-
* Copyright (c) 1999, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.149 2009/04/16 00:17:19 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.150 2009/04/16 14:56:41 rmind Exp $");
#include "opt_kstack.h"
#include "opt_maxuprc.h"
@@ -78,7 +78,6 @@
#include <sys/file.h>
#include <ufs/ufs/quota.h>
#include <sys/uio.h>
-#include <sys/malloc.h>
#include <sys/pool.h>
#include <sys/pset.h>
#include <sys/mbuf.h>
@@ -214,7 +213,6 @@
int cmask = CMASK;
MALLOC_DEFINE(M_EMULDATA, "emuldata", "Per-process emulation data");
-MALLOC_DEFINE(M_PROC, "proc", "Proc structures");
MALLOC_DEFINE(M_SUBPROC, "subproc", "Proc sub-structures");
/*
@@ -242,16 +240,16 @@
procinit(void)
{
const struct proclist_desc *pd;
- int i;
+ u_int i;
#define LINK_EMPTY ((PID_MAX + INITIAL_PID_TABLE_SIZE) & ~(INITIAL_PID_TABLE_SIZE - 1))
for (pd = proclists; pd->pd_list != NULL; pd++)
LIST_INIT(pd->pd_list);
proc_lock = mutex_obj_alloc(MUTEX_DEFAULT, IPL_NONE);
+ pid_table = kmem_alloc(INITIAL_PID_TABLE_SIZE
+ * sizeof(struct pid_table), KM_SLEEP);
- pid_table = malloc(INITIAL_PID_TABLE_SIZE * sizeof *pid_table,
- M_PROC, M_WAITOK);
/* Set free list running through table...
Preset 'use count' above PID_MAX so we allocate pid 1 next. */
for (i = 0; i <= pid_tbl_mask; i++) {
@@ -484,20 +482,22 @@
static void
expand_pid_table(void)
{
- uint pt_size = pid_tbl_mask + 1;
+ size_t pt_size, tsz;
struct pid_table *n_pt, *new_pt;
struct proc *proc;
struct pgrp *pgrp;
- int i;
pid_t pid;
+ u_int i;
- new_pt = malloc(pt_size * 2 * sizeof *new_pt, M_PROC, M_WAITOK);
+ pt_size = pid_tbl_mask + 1;
+ tsz = pt_size * 2 * sizeof(struct pid_table);
+ new_pt = kmem_alloc(tsz, KM_SLEEP);
mutex_enter(proc_lock);
if (pt_size != pid_tbl_mask + 1) {
/* Another process beat us to it... */
mutex_exit(proc_lock);
- free(new_pt, M_PROC);
+ kmem_free(new_pt, tsz);
return;
}
@@ -540,7 +540,8 @@
break;
}
- /* Switch tables */
+ /* Save old table size and switch tables */
+ tsz = pt_size * sizeof(struct pid_table);
n_pt = pid_table;
pid_table = new_pt;
pid_tbl_mask = pt_size * 2 - 1;
@@ -556,7 +557,7 @@
pid_alloc_lim <<= 1; /* doubles number of free slots... */
mutex_exit(proc_lock);
- free(n_pt, M_PROC);
+ kmem_free(n_pt, tsz);
}
struct proc *
Index: src/sys/sys/proc.h
diff -u src/sys/sys/proc.h:1.285 src/sys/sys/proc.h:1.286
--- src/sys/sys/proc.h:1.285 Thu Apr 16 00:17:19 2009
+++ src/sys/sys/proc.h Thu Apr 16 14:56:41 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: proc.h,v 1.285 2009/04/16 00:17:19 rmind Exp $ */
+/* $NetBSD: proc.h,v 1.286 2009/04/16 14:56:41 rmind Exp $ */
/*-
* Copyright (c) 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -418,8 +418,6 @@
#ifdef _KERNEL
#include <sys/mallocvar.h>
MALLOC_DECLARE(M_EMULDATA);
-MALLOC_DECLARE(M_PROC);
-MALLOC_DECLARE(M_SESSION);
MALLOC_DECLARE(M_SUBPROC); /* XXX - only used by sparc/sparc64 */
/*