diff options
Diffstat (limited to 'libps')
-rw-r--r-- | libps/procstat.c | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/libps/procstat.c b/libps/procstat.c index 2794b994..9997fc3a 100644 --- a/libps/procstat.c +++ b/libps/procstat.c @@ -31,7 +31,7 @@ /* These directly correspond to the bits in a state, starting from 0. See ps.h for an explanation of what each of these means. */ -char *proc_stat_state_tags = "RTHDSIWN<Z+sfmpox"; +char *proc_stat_state_tags = "TZRHDSIN<u+sfmpox"; /* ---------------------------------------------------------------- */ @@ -45,31 +45,28 @@ thread_state(thread_basic_info_t bi) switch (bi->run_state) { case TH_STATE_RUNNING: - state |= PSTAT_STATE_RUNNING; - break; - case TH_STATE_STOPPED: - state |= PSTAT_STATE_STOPPED; + state |= PSTAT_STATE_T_RUN; break; case TH_STATE_UNINTERRUPTIBLE: - state |= PSTAT_STATE_WAIT; + state |= PSTAT_STATE_T_WAIT; break; case TH_STATE_HALTED: - state |= PSTAT_STATE_HALTED; + state |= PSTAT_STATE_T_HALT; + break; + case TH_STATE_STOPPED: + state |= PSTAT_STATE_T_HALT | PSTAT_STATE_T_UNCLEAN; break; case TH_STATE_WAITING: /* Act like unix: waits of less than 20 seconds means a process is `sleeping' and >= 20 seconds means it's `idle' */ - state |= bi->sleep_time < 20 ? PSTAT_STATE_SLEEPING : PSTAT_STATE_IDLE; + state |= bi->sleep_time < 20 ? PSTAT_STATE_T_SLEEP : PSTAT_STATE_T_IDLE; break; } if (bi->base_priority < 12) - state |= PSTAT_STATE_PRIORITY; + state |= PSTAT_STATE_T_NASTY; else if (bi->base_priority > 12) - state |= PSTAT_STATE_NICED; - - if (bi->flags & TH_FLAGS_SWAPPED) - state |= PSTAT_STATE_SWAPPED; + state |= PSTAT_STATE_T_NICE; return state; } @@ -333,21 +330,23 @@ proc_stat_set_flags (proc_stat_t ps, ps_flags_t flags) state |= thread_state(&pi->threadinfos[i].pis_bi); /* ... and process-only state bits. */ + if (pi_flags & PI_STOPPED) + state |= PSTAT_STATE_P_STOP; if (pi_flags & PI_ZOMBIE) - state |= PSTAT_STATE_ZOMBIE; + state |= PSTAT_STATE_P_ZOMBIE; if (pi_flags & PI_SESSLD) - state |= PSTAT_STATE_SESSLDR; + state |= PSTAT_STATE_P_SESSLDR; if (!(pi_flags & PI_EXECED)) - state |= PSTAT_STATE_FORKED; + state |= PSTAT_STATE_P_FORKED; if (pi_flags & PI_NOMSG) - state |= PSTAT_STATE_NOMSG; + state |= PSTAT_STATE_P_NOMSG; if (pi_flags & PI_NOPARENT) - state |= PSTAT_STATE_NOPARENT; + state |= PSTAT_STATE_P_NOPARENT; if (pi_flags & PI_ORPHAN) - state |= PSTAT_STATE_ORPHANED; + state |= PSTAT_STATE_P_ORPHAN; if ((have & PSTAT_EXEC_FLAGS) & (ps->exec_flags & EXEC_TRACED)) - state |= PSTAT_STATE_TRACED; + state |= PSTAT_STATE_P_TRACE; ps->state = state; have |= PSTAT_STATE; |