summaryrefslogtreecommitdiff
path: root/libps/procstat.c
diff options
context:
space:
mode:
authorThomas Bushnell <thomas@gnu.org>1997-05-23 17:22:46 +0000
committerThomas Bushnell <thomas@gnu.org>1997-05-23 17:22:46 +0000
commit36e59fa04c060732853c82aa0cd12f3418925a19 (patch)
treeff9d375839e0a7ef62031e9e205a587e50664d7a /libps/procstat.c
parentf443f27e4062cee3d0a8dd36eb4a03f76343e434 (diff)
Fri May 23 13:13:18 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* procstat.c (summarize_thread_basic_info): Don't include the kernel's idle threads in the summation. (summarize_thread_sched_info): Likewise. (summarize_thread_states): Likewise. (summarize_thread_waits): Likewise.
Diffstat (limited to 'libps/procstat.c')
-rw-r--r--libps/procstat.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/libps/procstat.c b/libps/procstat.c
index d25ace55..61371d34 100644
--- a/libps/procstat.c
+++ b/libps/procstat.c
@@ -1,6 +1,6 @@
/* The proc_stat type, which holds information about a hurd process.
- Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
Written by Miles Bader <miles@gnu.ai.mit.edu>
@@ -365,7 +365,8 @@ summarize_thread_basic_info (struct procinfo *pi)
bzero (tbi, sizeof *tbi);
for (i = 0; i < pi->nthreads; i++)
- if (! pi->threadinfos[i].died)
+ if (! pi->threadinfos[i].died
+ && ! (pi->threadinfos[i].pis_bi & TH_FLAGS_IDLE))
{
thread_basic_info_t bi = &pi->threadinfos[i].pis_bi;
int thread_run_state = bi->run_state;
@@ -452,7 +453,8 @@ summarize_thread_sched_info (struct procinfo *pi)
bzero (tsi, sizeof *tsi);
for (i = 0; i < pi->nthreads; i++)
- if (! pi->threadinfos[i].died)
+ if (! pi->threadinfos[i].died
+ && ! (pi->threadinfos[i].pis_bi.flags & TH_FLAGS_IDLE))
{
thread_sched_info_t si = &pi->threadinfos[i].pis_si;
tsi->base_priority += si->base_priority;
@@ -482,7 +484,8 @@ summarize_thread_states (struct procinfo *pi)
/* The union of all thread state bits... */
for (i = 0; i < pi->nthreads; i++)
- if (! pi->threadinfos[i].died)
+ if (! pi->threadinfos[i].died
+ && ! (pi->threadinfos[i].pis_bi.flags & TH_FLAGS_IDLE))
state |= thread_state (&pi->threadinfos[i].pis_bi);
return state;
@@ -507,7 +510,9 @@ summarize_thread_waits (struct procinfo *pi, char *waits, size_t waits_len,
{
int left = waits + waits_len - next_wait;
- if (strncmp (next_wait, "msgport", left) == 0
+ if (pi->threadinfos[i].pis_bi.flags & TH_FLAGS_IDLE)
+ ; /* kernel idle thread; ignore */
+ else if (strncmp (next_wait, "msgport", left) == 0
|| strncmp (next_wait, "itimer", left) == 0)
; /* libc internal threads; ignore. */
else if (*wait)