Module Name: src
Committed By: christos
Date: Mon May 7 21:03:45 UTC 2018
Modified Files:
src/sys/kern: kern_exit.c kern_resource.c
src/sys/sys: resourcevar.h
Log Message:
Load the struct rusage text, data, and stack fields from the vmspace struct.
Before they were all 0. We update them when we call getrusage() or on
process exit() so that the children rusage is accounted for.
To generate a diff of this commit:
cvs rdiff -u -r1.270 -r1.271 src/sys/kern/kern_exit.c
cvs rdiff -u -r1.177 -r1.178 src/sys/kern/kern_resource.c
cvs rdiff -u -r1.56 -r1.57 src/sys/sys/resourcevar.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/kern/kern_exit.c
diff -u src/sys/kern/kern_exit.c:1.270 src/sys/kern/kern_exit.c:1.271
--- src/sys/kern/kern_exit.c:1.270 Tue Nov 7 14:44:04 2017
+++ src/sys/kern/kern_exit.c Mon May 7 17:03:45 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_exit.c,v 1.270 2017/11/07 19:44:04 christos Exp $ */
+/* $NetBSD: kern_exit.c,v 1.271 2018/05/07 21:03:45 christos Exp $ */
/*-
* Copyright (c) 1998, 1999, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_exit.c,v 1.270 2017/11/07 19:44:04 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_exit.c,v 1.271 2018/05/07 21:03:45 christos Exp $");
#include "opt_ktrace.h"
#include "opt_dtrace.h"
@@ -325,6 +325,7 @@ exit1(struct lwp *l, int exitcode, int s
* we run at this moment, nothing runs in userland
* anymore.
*/
+ ruspace(p); /* Update our vm resource use */
uvm_proc_exit(p);
/*
Index: src/sys/kern/kern_resource.c
diff -u src/sys/kern/kern_resource.c:1.177 src/sys/kern/kern_resource.c:1.178
--- src/sys/kern/kern_resource.c:1.177 Sun Apr 8 07:43:01 2018
+++ src/sys/kern/kern_resource.c Mon May 7 17:03:45 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_resource.c,v 1.177 2018/04/08 11:43:01 mlelstv Exp $ */
+/* $NetBSD: kern_resource.c,v 1.178 2018/05/07 21:03:45 christos Exp $ */
/*-
* Copyright (c) 1982, 1986, 1991, 1993
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_resource.c,v 1.177 2018/04/08 11:43:01 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_resource.c,v 1.178 2018/05/07 21:03:45 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -577,6 +577,7 @@ getrusage1(struct proc *p, int who, stru
switch (who) {
case RUSAGE_SELF:
mutex_enter(p->p_lock);
+ ruspace(p);
memcpy(ru, &p->p_stats->p_ru, sizeof(*ru));
calcru(p, &ru->ru_utime, &ru->ru_stime, NULL, NULL);
rulwps(p, ru);
@@ -595,6 +596,17 @@ getrusage1(struct proc *p, int who, stru
}
void
+ruspace(struct proc *p)
+{
+ struct vmspace *vm = p->p_vmspace;
+ struct rusage *ru = &p->p_stats->p_ru;
+
+ ru->ru_ixrss = vm->vm_tsize << (PAGE_SHIFT - 10);
+ ru->ru_idrss = vm->vm_dsize << (PAGE_SHIFT - 10);
+ ru->ru_isrss = vm->vm_ssize << (PAGE_SHIFT - 10);
+}
+
+void
ruadd(struct rusage *ru, struct rusage *ru2)
{
long *ip, *ip2;
Index: src/sys/sys/resourcevar.h
diff -u src/sys/sys/resourcevar.h:1.56 src/sys/sys/resourcevar.h:1.57
--- src/sys/sys/resourcevar.h:1.56 Sat Oct 17 20:28:15 2015
+++ src/sys/sys/resourcevar.h Mon May 7 17:03:45 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: resourcevar.h,v 1.56 2015/10/18 00:28:15 jmcneill Exp $ */
+/* $NetBSD: resourcevar.h,v 1.57 2018/05/07 21:03:45 christos Exp $ */
/*
* Copyright (c) 1991, 1993
@@ -115,6 +115,7 @@ void lim_setcorename(struct proc *, char
void lim_free(struct plimit *);
void resource_init(void);
+void ruspace(struct proc *);
void ruadd(struct rusage *, struct rusage *);
void rulwps(proc_t *, struct rusage *);
struct pstats *pstatscopy(struct pstats *);