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 *);

Reply via email to