netstar pushed a commit to branch master. http://git.enlightenment.org/apps/evisum.git/commit/?id=325216853d4999ac3a37fc1e7a2c4e585f740094
commit 325216853d4999ac3a37fc1e7a2c4e585f740094 Author: Alastair Poole <nets...@gmail.com> Date: Tue Feb 2 21:55:40 2021 +0000 procs: sttates --- src/bin/system/process.c | 55 +++++++++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/src/bin/system/process.c b/src/bin/system/process.c index f9d75fe..19f7009 100644 --- a/src/bin/system/process.c +++ b/src/bin/system/process.c @@ -65,40 +65,48 @@ struct _States const char *name; }; -static const States _states[] = +static const char * _states[255]; + +static void +_states_init(void) { #if defined(__linux__) - { 'd', "dsleep" }, - { 'i', "idle" }, - { 'r', "run" }, - { 's', "sleep" }, - { 't', "stop" }, - { 'x', "dead" }, - { 'z', "zombie" }, + _states['D'] = "dsleep"; + _states['I'] = "idle"; + _states['R'] = "run"; + _states['S'] = "sleep"; + _states['T'] = "stop"; + _states['X'] = "dead"; + _states['Z'] = "zombie"; #else - { SIDL, "idle"}, - { SRUN, "run" }, - { SSLEEP, "sleep" }, - { SSTOP, "stop" }, + _states[SIDL] = "idle"; + _states[SRUN] = "run";, + _states[SSLEEP] = "sleep"; + _states[SSTOP] = "stop"; #if !defined(__MacOS__) #if !defined(__OpenBSD__) - { SWAIT, "wait" }, - { SLOCK, "lock" }, - { SZOMB, "zombie" }, + _states[SWAIT] = "wait"; + _states[SLOCK] = "lock";, + _states[SZOMB] = "zombie"; #endif #if defined(__OpenBSD__) - { SDEAD, "dead" }, - { SONPROC, "onproc"}, + _states[SDEAD] = "dead"; + _states[SONPROC] = "onproc"}; #endif #endif #endif -}; - +} static const char * _process_state_name(char state) { - return _states[tolower(state)].name; + static int init = 0; + if (!init) + { + _states_init(); + init = 1; + } + return _states[toupper(state)]; } #if defined(__linux__) @@ -298,6 +306,7 @@ static Eina_List * _process_list_linux_get(void) { Eina_List *files, *list; + const char *state; char *n; char buf[4096]; Stat st; @@ -328,7 +337,7 @@ _process_list_linux_get(void) p->cpu_id = st.psr; p->start = st.start_time; p->run_time = st.run_time; - state = _process_state_name(kp->ki_stat); + state = _process_state_name(st.state); snprintf(p->state, sizeof(p->state), "%s", state); p->cpu_time = st.utime + st.stime; p->nice = st.nice; @@ -349,6 +358,7 @@ static void _proc_thread_info(Proc_Info *p) { Eina_List *files; + const char *state; char *n; char buf[4096]; Stat st; @@ -366,7 +376,8 @@ _proc_thread_info(Proc_Info *p) Proc_Info *t = calloc(1, sizeof(Proc_Info)); if (!t) continue; t->cpu_id = st.psr; - t->state = _process_state_name(st.state); + state = _process_state_name(st.state); + snprintf(t->state, sizeof(t->state), "%s", state); t->cpu_time = st.utime + st.stime; t->nice = st.nice; t->priority = st.pri; --