Module Name: src
Committed By: christos
Date: Mon Dec 12 20:35:36 UTC 2016
Modified Files:
src/bin/ps: print.c
Log Message:
Handle functions that use the offset from either kinfo_proc2/kinfo_lwp properly.
To generate a diff of this commit:
cvs rdiff -u -r1.126 -r1.127 src/bin/ps/print.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/bin/ps/print.c
diff -u src/bin/ps/print.c:1.126 src/bin/ps/print.c:1.127
--- src/bin/ps/print.c:1.126 Fri Dec 2 16:59:03 2016
+++ src/bin/ps/print.c Mon Dec 12 15:35:36 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: print.c,v 1.126 2016/12/02 21:59:03 christos Exp $ */
+/* $NetBSD: print.c,v 1.127 2016/12/12 20:35:36 christos Exp $ */
/*
* Copyright (c) 2000, 2007 The NetBSD Foundation, Inc.
@@ -63,7 +63,7 @@
#if 0
static char sccsid[] = "@(#)print.c 8.6 (Berkeley) 4/16/94";
#else
-__RCSID("$NetBSD: print.c,v 1.126 2016/12/02 21:59:03 christos Exp $");
+__RCSID("$NetBSD: print.c,v 1.127 2016/12/12 20:35:36 christos Exp $");
#endif
#endif /* not lint */
@@ -1342,17 +1342,16 @@ printval(void *bp, VAR *v, enum mode mod
void
pvar(struct pinfo *pi, VARENT *ve, enum mode mode)
{
- struct kinfo_proc2 *ki = pi->ki;
- VAR *v;
+ VAR *v = ve->var;
+ char *b = (v->flag & LWP) ? (char *)pi->li : (char *)pi->ki;
- v = ve->var;
- if (v->flag & UAREA && !ki->p_uvalid) {
+ if ((v->flag & UAREA) && !pi->ki->p_uvalid) {
if (mode == PRINTMODE)
(void)printf("%*s", v->width, "-");
return;
}
- (void)printval((char *)ki + v->off, v, mode);
+ (void)printval(b + v->off, v, mode);
}
void
@@ -1360,8 +1359,9 @@ putimeval(struct pinfo *pi, VARENT *ve,
{
VAR *v = ve->var;
struct kinfo_proc2 *k = pi->ki;
- ulong secs = *(uint32_t *)((char *)k + v->off);
- ulong usec = *(uint32_t *)((char *)k + v->off + sizeof (uint32_t));
+ char *b = (v->flag & LWP) ? (char *)pi->li : (char *)pi->ki;
+ ulong secs = *(uint32_t *)(b + v->off);
+ ulong usec = *(uint32_t *)(b + v->off + sizeof (uint32_t));
int fmtlen;
if (!k->p_uvalid) {