From 96f0fb14a1ab5aa984a73d5f62fe81d1f8445c0f Mon Sep 17 00:00:00 2001 From: tsubai Date: Fri, 5 Mar 1999 06:10:48 +0000 Subject: [PATCH] Add RSS accounting. --- sys/arch/powerpc/include/pmap.h | 5 ++++- sys/arch/powerpc/powerpc/db_trace.c | 4 +++- sys/arch/powerpc/powerpc/pmap.c | 6 +++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/sys/arch/powerpc/include/pmap.h b/sys/arch/powerpc/include/pmap.h index e85273863136..2745cf344e48 100644 --- a/sys/arch/powerpc/include/pmap.h +++ b/sys/arch/powerpc/include/pmap.h @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.h,v 1.10 1999/02/26 14:40:45 tsubai Exp $ */ +/* $NetBSD: pmap.h,v 1.11 1999/03/05 06:10:48 tsubai Exp $ */ /*- * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -54,6 +54,7 @@ typedef u_int sr_t; struct pmap { sr_t pm_sr[16]; /* segments used in this pmap */ int pm_refs; /* ref count */ + struct pmap_statistics pm_stats; /* pmap statistics */ }; typedef struct pmap *pmap_t; @@ -70,6 +71,8 @@ extern struct pmap kernel_pmap_; #define pmap_phys_address(x) (x) +#define pmap_resident_count(pmap) ((pmap)->pm_stats.resident_count) + void pmap_bootstrap __P((u_int kernelstart, u_int kernelend)); paddr_t pmap_extract __P((struct pmap *, vaddr_t)); void ptemodify __P((paddr_t, u_int, u_int)); diff --git a/sys/arch/powerpc/powerpc/db_trace.c b/sys/arch/powerpc/powerpc/db_trace.c index 3c8e3dd23071..4d7e64d24e4c 100644 --- a/sys/arch/powerpc/powerpc/db_trace.c +++ b/sys/arch/powerpc/powerpc/db_trace.c @@ -1,4 +1,4 @@ -/* $NetBSD: db_trace.c,v 1.2 1998/02/23 03:23:05 mycroft Exp $ */ +/* $NetBSD: db_trace.c,v 1.3 1999/03/05 06:10:48 tsubai Exp $ */ /* $OpenBSD: db_trace.c,v 1.3 1997/03/21 02:10:48 niklas Exp $ */ /* @@ -30,6 +30,8 @@ #include #include +#include + #include #include diff --git a/sys/arch/powerpc/powerpc/pmap.c b/sys/arch/powerpc/powerpc/pmap.c index 83a176df8844..7efb7e8d3029 100644 --- a/sys/arch/powerpc/powerpc/pmap.c +++ b/sys/arch/powerpc/powerpc/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.16 1999/02/26 14:40:45 tsubai Exp $ */ +/* $NetBSD: pmap.c,v 1.17 1999/03/05 06:10:48 tsubai Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -1053,6 +1053,7 @@ pmap_enter(pm, va, pa, prot, wired) } s = splimp(); + pm->pm_stats.resident_count++; /* * Try to insert directly into HTAB. */ @@ -1095,6 +1096,7 @@ pmap_remove(pm, va, endva) asm volatile ("sync"); tlbie(va); tlbsync(); + pm->pm_stats.resident_count--; } for (ptp = ptable + (idx ^ ptab_mask) * 8, i = 8; --i >= 0; ptp++) if (ptematch(ptp, sr, va, PTE_VALID | PTE_HID)) { @@ -1103,6 +1105,7 @@ pmap_remove(pm, va, endva) asm volatile ("sync"); tlbie(va); tlbsync(); + pm->pm_stats.resident_count--; } for (po = potable[idx].lh_first; po; po = npo) { npo = po->po_list.le_next; @@ -1111,6 +1114,7 @@ pmap_remove(pm, va, endva) &po->po_pte); LIST_REMOVE(po, po_list); pofree(po, 1); + pm->pm_stats.resident_count--; } } va += NBPG;