netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=226579933b07903b0d4649b31715c9245f4fbae5

commit 226579933b07903b0d4649b31715c9245f4fbae5
Author: Alastair Poole <[email protected]>
Date:   Sat May 16 11:57:57 2020 +0100

    FreeBSD: Don't duplicate code.
---
 src/bin/system/process.c | 238 +++++++++++++++++------------------------------
 1 file changed, 85 insertions(+), 153 deletions(-)

diff --git a/src/bin/system/process.c b/src/bin/system/process.c
index 8914b76..409660d 100644
--- a/src/bin/system/process.c
+++ b/src/bin/system/process.c
@@ -787,69 +787,6 @@ _pid_max(void)
    return pid_max;
 }
 
-static Eina_List *
-_process_list_freebsd_fallback_get(void)
-{
-   Eina_List *list;
-   struct rusage *usage;
-   struct kinfo_proc kp;
-   int mib[4];
-   size_t len;
-   static int pid_max, pagesize = 0;
-
-   if (!pagesize)
-     pagesize = getpagesize();
-
-   pid_max = _pid_max();
-
-   list = NULL;
-
-   len = sizeof(int);
-   if (sysctlnametomib("kern.proc.pid", mib, &len) == -1)
-     return NULL;
-
-   for (int i = 1; i <= pid_max; i++)
-     {
-        mib[3] = i;
-        len = sizeof(kp);
-        if (sysctl(mib, 4, &kp, &len, NULL, 0) == -1)
-          {
-             continue;
-          }
-
-        if (kp.ki_flag & P_KPROC)
-          continue;
-
-        Proc_Info *p = calloc(1, sizeof(Proc_Info));
-        if (!p) return NULL;
-
-        p->pid = kp.ki_pid;
-        p->uid = kp.ki_uid;
-        p->command = strdup(kp.ki_comm);
-        p->cpu_id = kp.ki_oncpu;
-        if (p->cpu_id == -1)
-          p->cpu_id = kp.ki_lastcpu;
-
-        usage = &kp.ki_rusage;
-
-        p->cpu_time = (usage->ru_utime.tv_sec * 1000000) +
-           usage->ru_utime.tv_usec + (usage->ru_stime.tv_sec * 1000000) +
-           usage->ru_stime.tv_usec;
-        p->cpu_time /= 10000;
-        p->state = _process_state_name(kp.ki_stat);
-        p->mem_virt = kp.ki_size;
-        p->mem_rss = kp.ki_rssize * pagesize;
-        p->mem_size = p->mem_virt;
-        p->nice = kp.ki_nice - NZERO;
-        p->priority = kp.ki_pri.pri_level - PZERO;
-        p->numthreads = kp.ki_numthreads;
-
-        list = eina_list_append(list, p);
-     }
-
-   return list;
-}
-
 static void
 _cmd_get(Proc_Info *p, struct kinfo_proc *kp)
 {
@@ -898,6 +835,84 @@ _cmd_get(Proc_Info *p, struct kinfo_proc *kp)
    p->command = strdup(name);
 }
 
+static Proc_Info *
+_proc_thread_info(struct kinfo_proc *kp, Eina_Bool is_thread)
+{
+   struct rusage *usage;
+   Proc_Info *p;
+   static int pagesize = 0;
+
+   if (!pagesize) pagesize = getpagesize();
+
+   p = calloc(1, sizeof(Proc_Info));
+   if (!p) return NULL;
+
+   p->pid = kp->ki_pid;
+   p->uid = kp->ki_uid;
+
+   if (!is_thread)
+     _cmd_get(p, kp);
+
+   p->cpu_id = kp->ki_oncpu;
+   if (p->cpu_id == -1)
+     p->cpu_id = kp->ki_lastcpu;
+
+   usage = &kp->ki_rusage;
+
+   p->cpu_time = (usage->ru_utime.tv_sec * 1000000) + usage->ru_utime.tv_usec +
+       (usage->ru_stime.tv_sec * 1000000) + usage->ru_stime.tv_usec;
+   p->cpu_time /= 10000;
+   p->state = _process_state_name(kp->ki_stat);
+   p->mem_virt = kp->ki_size;
+   p->mem_rss = kp->ki_rssize * pagesize;
+   p->mem_size = p->mem_virt;
+   p->nice = kp->ki_nice - NZERO;
+   p->priority = kp->ki_pri.pri_level - PZERO;
+   p->numthreads = kp->ki_numthreads;
+
+   p->tid = kp->ki_tid;
+   p->thread_name = strdup(kp->ki_tdname);
+
+   return p;
+}
+
+static Eina_List *
+_process_list_freebsd_fallback_get(void)
+{
+   Eina_List *list;
+   struct kinfo_proc kp;
+   int mib[4];
+   size_t len;
+   static int pid_max, pagesize = 0;
+
+   if (!pagesize)
+     pagesize = getpagesize();
+
+   pid_max = _pid_max();
+
+   list = NULL;
+
+   len = sizeof(int);
+   if (sysctlnametomib("kern.proc.pid", mib, &len) == -1)
+     return NULL;
+
+   for (int i = 1; i <= pid_max; i++)
+     {
+        mib[3] = i;
+        len = sizeof(kp);
+        if (sysctl(mib, 4, &kp, &len, NULL, 0) == -1)
+          continue;
+
+        if (kp.ki_flag & P_KPROC)
+          continue;
+
+        Proc_Info *p = _proc_thread_info(&kp, EINA_FALSE);
+        if (p)
+          list = eina_list_append(list, p);
+     }
+
+   return list;
+}
 
 static Eina_List *
 _process_list_freebsd_get(void)
@@ -905,7 +920,6 @@ _process_list_freebsd_get(void)
    kvm_t *kern;
    Eina_List *list = NULL;
    struct kinfo_proc *kps, *kp;
-   struct rusage *usage;
    char errbuf[_POSIX2_LINE_MAX];
    int pid_count;
    static int pagesize = 0;
@@ -930,31 +944,12 @@ _process_list_freebsd_get(void)
 
         kp = &kps[i];
 
-        Proc_Info *p = calloc(1, sizeof(Proc_Info));
-        if (!p) continue;
-        p->pid = kp->ki_pid;
-        p->uid = kp->ki_uid;
-
-        p->cpu_id = kp->ki_oncpu;
-        if (p->cpu_id == -1)
-          p->cpu_id = kp->ki_lastcpu;
-
-        _cmd_get(p, kp);
-
-        usage = &kp->ki_rusage;
-        p->cpu_time = (usage->ru_utime.tv_sec * 1000000) +
-           usage->ru_utime.tv_usec + (usage->ru_stime.tv_sec * 1000000) +
-           usage->ru_stime.tv_usec;
-        p->cpu_time /= 10000;
-        p->state = _process_state_name(kp->ki_stat);
-        p->mem_virt = kp->ki_size;
-        p->mem_rss = kp->ki_rssize * pagesize;
-        p->mem_size = p->mem_virt;
-        p->nice = kp->ki_nice - NZERO;
-        p->priority = kp->ki_pri.pri_level - PZERO;
-        p->numthreads = kp->ki_numthreads;
-
-        list = eina_list_append(list, p);
+        Proc_Info *p = _proc_thread_info(kp, EINA_FALSE);
+        if (p)
+          {
+             _cmd_get(p, kp);
+             list = eina_list_append(list, p);
+          }
      }
 
    kvm_close(kern);
@@ -965,7 +960,6 @@ _process_list_freebsd_get(void)
 static Proc_Info *
 _proc_info_by_pid_fallback(int pid)
 {
-   struct rusage *usage;
    struct kinfo_proc kp;
    int mib[4];
    size_t len;
@@ -983,69 +977,7 @@ _proc_info_by_pid_fallback(int pid)
    if (sysctl(mib, 4, &kp, &len, NULL, 0) == -1)
      return NULL;
 
-   Proc_Info *p = calloc(1, sizeof(Proc_Info));
-   if (!p) return NULL;
-
-   p->pid = kp.ki_pid;
-   p->uid = kp.ki_uid;
-   _cmd_get(p, &kp);
-   p->cpu_id = kp.ki_oncpu;
-   if (p->cpu_id == -1)
-     p->cpu_id = kp.ki_lastcpu;
-
-   usage = &kp.ki_rusage;
-
-   p->cpu_time = (usage->ru_utime.tv_sec * 1000000) + usage->ru_utime.tv_usec +
-      (usage->ru_stime.tv_sec * 1000000) + usage->ru_stime.tv_usec;
-   p->cpu_time /= 10000;
-   p->state = _process_state_name(kp.ki_stat);
-   p->mem_virt = kp.ki_size;
-   p->mem_rss = kp.ki_rssize * pagesize;
-   p->mem_size = p->mem_virt;
-   p->nice = kp.ki_nice - NZERO;
-   p->priority = kp.ki_pri.pri_level - PZERO;
-   p->numthreads = kp.ki_numthreads;
-   p->tid = kp.ki_tid;
-
-   return p;
-}
-
-static Proc_Info *
-_proc_thread_info(struct kinfo_proc *kp, Eina_Bool is_thread)
-{
-   struct rusage *usage;
-   Proc_Info *p;
-   static int pagesize = 0;
-
-   if (!pagesize) pagesize = getpagesize();
-
-   p = calloc(1, sizeof(Proc_Info));
-
-   p->pid = kp->ki_pid;
-   p->uid = kp->ki_uid;
-
-   if (!is_thread)
-     _cmd_get(p, kp);
-
-   p->cpu_id = kp->ki_oncpu;
-   if (p->cpu_id == -1)
-     p->cpu_id = kp->ki_lastcpu;
-
-   usage = &kp->ki_rusage;
-
-   p->cpu_time = (usage->ru_utime.tv_sec * 1000000) + usage->ru_utime.tv_usec +
-       (usage->ru_stime.tv_sec * 1000000) + usage->ru_stime.tv_usec;
-   p->cpu_time /= 10000;
-   p->state = _process_state_name(kp->ki_stat);
-   p->mem_virt = kp->ki_size;
-   p->mem_rss = kp->ki_rssize * pagesize;
-   p->mem_size = p->mem_virt;
-   p->nice = kp->ki_nice - NZERO;
-   p->priority = kp->ki_pri.pri_level - PZERO;
-   p->numthreads = kp->ki_numthreads;
-
-   p->tid = kp->ki_tid;
-   p->thread_name = strdup(kp->ki_tdname);
+   Proc_Info *p = _proc_thread_info(&kp, EINA_FALSE);
 
    return p;
 }

-- 


Reply via email to