netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=8c2d84560588f71e1a1771905f1a54f90c79b845

commit 8c2d84560588f71e1a1771905f1a54f90c79b845
Author: Alastair Poole <nets...@gmail.com>
Date:   Sat Mar 20 10:05:13 2021 +0000

    proclist: WCHAN for Open/FreeBSD.
    
    Don't know of any distribution actually exposing /proc/<pid>/wchan
    reliably.
---
 src/bin/ui/evisum_ui.c       | 3 +++
 src/bin/ui/evisum_ui.h       | 1 +
 src/bin/ui/ui_process_list.c | 7 ++++++-
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/bin/ui/evisum_ui.c b/src/bin/ui/evisum_ui.c
index 1c4a1b2..cdb6786 100644
--- a/src/bin/ui/evisum_ui.c
+++ b/src/bin/ui/evisum_ui.c
@@ -656,6 +656,9 @@ _ui_init_system_probe(Evisum_Ui *ui)
 #if defined(__FreeBSD__)
    ui->mem.zfs_mounted = file_system_in_use("ZFS");
 #endif
+#if !defined(__linux__)
+   ui->proc.has_wchan = 1;
+#endif
 }
 
 void
diff --git a/src/bin/ui/evisum_ui.h b/src/bin/ui/evisum_ui.h
index 9d8ebe3..b6bffc1 100644
--- a/src/bin/ui/evisum_ui.h
+++ b/src/bin/ui/evisum_ui.h
@@ -32,6 +32,7 @@ typedef struct _Evisum_Ui
       Eina_Bool     restart;
 
       Eina_Bool     has_kthreads;
+      Eina_Bool     has_wchan;
 
       int           poll_delay;
       int           sort_type;
diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c
index ed9aa63..af196e8 100644
--- a/src/bin/ui/ui_process_list.c
+++ b/src/bin/ui/ui_process_list.c
@@ -719,9 +719,14 @@ _content_get(void *data, Evas_Object *obj, const char 
*source)
 
    if (_field_enabled(PROC_FIELD_STATE))
      {
+        Evisum_Ui *ui = pd->ui;
+
         evas_object_geometry_get(pd->btn_state, NULL, NULL, &w, NULL);
         lb = evas_object_data_get(it->obj, "state");
-        snprintf(buf, sizeof(buf), "%s", proc->state);
+        if ((ui->proc.has_wchan) && (proc->state[0] == 's' && proc->state[1] 
== 'l'))
+          snprintf(buf, sizeof(buf), "%s", proc->wchan);
+        else
+          snprintf(buf, sizeof(buf), "%s", proc->state);
         if (strcmp(buf, elm_object_text_get(lb)))
           elm_object_text_set(lb, buf);
         _field_adjust(pd, PROC_FIELD_STATE, lb, w);

-- 


Reply via email to