]> granicus.if.org Git - procps-ng/commitdiff
library: correct the #define FALSE_THREADS, <PIDS> api
authorJim Warner <james.warner@comcast.net>
Tue, 13 Jun 2017 05:00:00 +0000 (00:00 -0500)
committerCraig Small <csmall@enc.com.au>
Tue, 4 Jul 2017 10:40:53 +0000 (20:40 +1000)
Awhile back, that former QUICK_THREADS #define evolved
into the development (only) FALSE_THREADS which can be
used to ensure a 'duplicate ENUM' convention is output
when certain string fields can't be easily duplicated.

Unfortunately, that original implementation was marred
with zeros being displayed for /proc/$$/meminfo fields
in all the child threads for a multi-threaded process.

So this commit corrects that zero memory field buglet.

Reference(s):
. QUICK_THREADS becomes FALSE_THREADS
commit c546d9dd4409ee11cd466c99a820a3b5dadfe3f4

Signed-off-by: Jim Warner <james.warner@comcast.net>
proc/readproc.c

index 9f4bdb3407853c662da1f4990db4b525b8139635..6ca96d0efec4f725ed1546ff3bbb5f6719b5ecb1 100644 (file)
@@ -989,11 +989,9 @@ static proc_t* simple_readtask(PROCTAB *restrict const PT, const proc_t *restric
         MK_THREAD(t);
 #endif
 
-#ifndef FALSE_THREADS
     if (flags & PROC_FILLMEM)                           // read /proc/#/task/#statm
         if (file2str(path, "statm", &ub) != -1)
             statm2proc(ub.buf, t);
-#endif
 
     if (flags & PROC_FILLSTATUS) {                      // read /proc/#/task/#/status
         if (file2str(path, "status", &ub) != -1) {
@@ -1029,10 +1027,6 @@ static proc_t* simple_readtask(PROCTAB *restrict const PT, const proc_t *restric
 
 #ifdef FALSE_THREADS
     if (!p) {
-        if (flags & PROC_FILLMEM)
-            if (file2str(path, "statm", &ub) != -1)
-                statm2proc(ub.buf, t);
-
         if (flags & PROC_FILLSUPGRP)
             supgrps_from_supgids(t);
 #endif
@@ -1056,31 +1050,22 @@ static proc_t* simple_readtask(PROCTAB *restrict const PT, const proc_t *restric
 
 #ifdef FALSE_THREADS
     } else {
-        if (t != p) {
-            t->size      = p->size;
-            t->resident  = p->resident;
-            t->share     = p->share;
-            t->trs       = p->trs;
-            t->lrs       = p->lrs;
-            t->drs       = p->drs;
-            t->dt        = p->dt;
-            t->cmdline   = NULL;
-            t->cmdline_v = NULL;
-            t->environ   = NULL;
-            t->environ_v = NULL;
-            t->cgname    = NULL;
-            t->cgroup    = NULL;
-            t->cgroup_v  = NULL;
-            t->supgid    = NULL;
-            t->supgrp    = NULL;
-            t->sd_mach   = NULL;
-            t->sd_ouid   = NULL;
-            t->sd_seat   = NULL;
-            t->sd_sess   = NULL;
-            t->sd_slice  = NULL;
-            t->sd_unit   = NULL;
-            t->sd_uunit  = NULL;
-        }
+        t->cmdline   = NULL;
+        t->cmdline_v = NULL;
+        t->environ   = NULL;
+        t->environ_v = NULL;
+        t->cgname    = NULL;
+        t->cgroup    = NULL;
+        t->cgroup_v  = NULL;
+        t->supgid    = NULL;
+        t->supgrp    = NULL;
+        t->sd_mach   = NULL;
+        t->sd_ouid   = NULL;
+        t->sd_seat   = NULL;
+        t->sd_sess   = NULL;
+        t->sd_slice  = NULL;
+        t->sd_unit   = NULL;
+        t->sd_uunit  = NULL;
     }
 #endif