netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=67561639fd2286b01548d432704c13fc50f84aab

commit 67561639fd2286b01548d432704c13fc50f84aab
Author: Alastair Poole <nets...@gmail.com>
Date:   Mon May 17 15:55:50 2021 +0100

    cores: cores morez lawz.
---
 src/bin/evisum_watcher.c   |  8 +++--
 src/bin/next/machine.h     | 34 ++++++++++++---------
 src/bin/next/machine/cpu.x | 73 ++++++++++++++++++++++------------------------
 3 files changed, 61 insertions(+), 54 deletions(-)

diff --git a/src/bin/evisum_watcher.c b/src/bin/evisum_watcher.c
index 81f6536..621f3ce 100644
--- a/src/bin/evisum_watcher.c
+++ b/src/bin/evisum_watcher.c
@@ -17,15 +17,19 @@ main(int argc, char **argv)
 
    puts("CORES:");
 
+   printf("total: %i online %i\n", cores_count(), cores_online_count());
+
    cores = cores_find();
+   cores_topology(cores);
    for (int i = 0; i < 10; i++)
      {
         cores_check(cores);
         EINA_LIST_FOREACH(cores, l, core)
           {
-             printf("core %i = %1.2f%%\n", core->id, core->percent);
+             printf("core %i = %1.2f%%\t%1.2fMHz %iC\n", core->id, 
core->percent,
+                    (double) core_id_frequency(core->id) / 1000, 
core_id_temperature(core->id));
           }
-       usleep(1000000);
+        usleep(1000000);
      }
    EINA_LIST_FREE(cores, core)
      free(core);
diff --git a/src/bin/next/machine.h b/src/bin/next/machine.h
index d0674d2..d3871a0 100644
--- a/src/bin/next/machine.h
+++ b/src/bin/next/machine.h
@@ -13,6 +13,7 @@ typedef struct
    unsigned long idle;
    float         percent;
    int           id;
+   int           top_id;
 } Cpu_Core;
 
 #define MEM_VIDEO_CARD_MAX 8
@@ -107,12 +108,6 @@ sensors_find(void);
 void
 memory_info(Meminfo *memory);
 
-void
-cores_check(Eina_List *cores);
-
-Eina_List *
-cores_find(void);
-
 void
 sensor_free(Sensor *sensor);
 
@@ -122,24 +117,35 @@ sensor_check(Sensor *sensor);
 Eina_List *
 network_interfaces_find(void);
 
+Eina_List *
+cores_find(void);
+
+void
+cores_check(Eina_List *cores);
 
-// XXX
 int
-system_cpu_frequency_get(void);
+cores_count(void);
 
 int
-system_cpu_n_frequency_get(int n);
+cores_online_count(void);
+
+void
+cores_topology(Eina_List *cores);
 
 int
-system_cpu_n_temperature_get(int n);
+cores_frequency(void);
 
 int
-system_cpu_temperature_min_max_get(int *min, int *max);
+core_id_frequency(int d);
 
 int
-system_cpu_frequency_min_max_get(int *min, int *max);
+core_id_temperature(int id);
+
+int
+cores_temperature_min_max(int *min, int *max);
+
+int
+cores_frequency_min_max(int *min, int *max);
 
-void
-system_cpu_topology_get(int *ids, int ncpus);
 
 #endif
diff --git a/src/bin/next/machine/cpu.x b/src/bin/next/machine/cpu.x
index 66c7253..9d2d712 100644
--- a/src/bin/next/machine/cpu.x
+++ b/src/bin/next/machine/cpu.x
@@ -4,8 +4,8 @@
 # define CPU_STATES      5
 #endif
 
-static int
-cpu_count(void)
+int
+cores_count(void)
 {
    static int cores = 0;
 
@@ -45,13 +45,7 @@ cpu_count(void)
 }
 
 int
-system_cpu_count_get(void)
-{
-   return cpu_count();
-}
-
-int
-system_cpu_online_count_get(void)
+cores_online_count(void)
 {
 #if defined(__OpenBSD__)
    static int cores = 0;
@@ -63,11 +57,11 @@ system_cpu_online_count_get(void)
 
    len = sizeof(cores);
    if (sysctl(mib, 2, &cores, &len, NULL, 0) < 0)
-     return cpu_count();
+     return cores_count();
 
    return cores;
 #else
-   return cpu_count();
+   return cores_count();
 #endif
 }
 
@@ -201,14 +195,14 @@ cores_check(Eina_List *cores)
    mach_msg_type_number_t count;
    processor_cpu_load_info_t load;
    mach_port_t mach_port;
-   unsigned int cpu_count;
+   unsigned int cores_count;
    int i;
 
-   cpu_count = eina_list_count(cores);
+   cores_count = eina_list_count(cores);
 
    count = HOST_CPU_LOAD_INFO_COUNT;
    mach_port = mach_host_self();
-   if (host_processor_info(mach_port, PROCESSOR_CPU_LOAD_INFO, &cpu_count,
+   if (host_processor_info(mach_port, PROCESSOR_CPU_LOAD_INFO, &cores_count,
                 (processor_info_array_t *)&load, &count) != KERN_SUCCESS)
      exit(-1);
 
@@ -247,7 +241,7 @@ cores_find(void)
    Cpu_Core *core;
    int i, ncpu;
 
-   ncpu = cpu_count();
+   ncpu = cores_count();
    for (i = 0; i < ncpu; i++)
      {
         core = calloc(1, sizeof(Cpu_Core));
@@ -263,7 +257,7 @@ static char _core_temps[256][512];
 static char _hwmon_path[256];
 
 int
-_cpu_n_temperature_read(int n)
+_core_n_temperature_read(int n)
 {
    int temp = -1;
 #if defined(__linux__)
@@ -304,9 +298,9 @@ static void
 _coretemp_init(void)
 {
    char buf[4096];
-   int cpu_count = system_cpu_count_get();
+   int count = cores_count();
 
-   for (int j = 0; j < cpu_count; j++)
+   for (int j = 0; j < count; j++)
      {
         snprintf(buf, sizeof(buf), 
"/sys/devices/system/cpu/cpu%i/topology/core_id", j);
         char *b = file_contents(buf);
@@ -322,16 +316,16 @@ _coretemp_init(void)
 static void
 _generic_init(void)
 {
-   int i, cpu_count = system_cpu_count_get();
+   int i, count = cores_count();
 
-   for (i = 0; i < cpu_count; i++)
+   for (i = 0; i < count; i++)
      snprintf(_core_temps[i], sizeof(_core_temps[i]), "%s/temp1_input", 
_hwmon_path);
 }
 
 #endif
 
 int
-system_cpu_n_temperature_get(int n)
+core_id_temperature(int id)
 {
 #if defined(__linux__)
    static int init = 0;
@@ -396,7 +390,7 @@ system_cpu_n_temperature_get(int n)
 
    if (!_hwmon_path[0]) return -1;
 
-   return _cpu_n_temperature_read(n);
+   return _core_n_temperature_read(id);
 #elif defined(__FreeBSD__) || defined(__DragonFly__)
    static int init = 0;
 
@@ -406,13 +400,13 @@ system_cpu_n_temperature_get(int n)
         init = 1;
      }
 
-    return _cpu_n_temperature_read(n);
+    return _core_n_temperature_read(n);
 #endif
    return -1;
 }
 
 int
-system_cpu_temperature_min_max_get(int *min, int *max)
+cores_temperature_min_max(int *min, int *max)
 {
 
    *min = _cpu_temp_min;
@@ -422,7 +416,7 @@ system_cpu_temperature_min_max_get(int *min, int *max)
 }
 
 int
-system_cpu_n_frequency_get(int n)
+core_id_frequency(int id)
 {
 #if defined(__linux__)
    int freq = -1;
@@ -430,7 +424,7 @@ system_cpu_n_frequency_get(int n)
    char buf[4096];
    int tmp;
 
-   snprintf(buf, sizeof(buf), 
"/sys/devices/system/cpu/cpu%d/cpufreq/scaling_cur_freq", n);
+   snprintf(buf, sizeof(buf), 
"/sys/devices/system/cpu/cpu%d/cpufreq/scaling_cur_freq", id);
    f = fopen(buf, "r");
    if (f)
      {
@@ -446,14 +440,14 @@ system_cpu_n_frequency_get(int n)
 
    return freq;
 #elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
-   return system_cpu_frequency_get();
+   return core_frequency();
 #endif
 
    return -1;
 }
 
 int
-system_cpu_frequency_min_max_get(int *min, int *max)
+cores_frequency_min_max(int *min, int *max)
 {
    int freq_min = 0x7fffffff, freq_max = 0;
 #if defined(__linux__)
@@ -537,7 +531,7 @@ system_cpu_frequency_min_max_get(int *min, int *max)
 }
 
 int
-system_cpu_frequency_get(void)
+cores_frequency(void)
 {
    int freq = -1;
 
@@ -592,7 +586,8 @@ system_cpu_frequency_get(void)
 
 #if defined(__linux__)
 
-typedef struct {
+typedef struct
+{
    short id;
    short core_id;
 } core_top_t;
@@ -611,31 +606,33 @@ _cmp(const void *a, const void *b)
 #endif
 
 void
-system_cpu_topology_get(int *ids, int ncpu)
+cores_topology(Eina_List *cores)
 {
 #if defined(__linux__)
    char buf[4096];
-   core_top_t *cores = malloc(ncpu * sizeof(core_top_t));
+   int ncpu = eina_list_count(cores);
+   core_top_t *cores_top = malloc(ncpu * sizeof(core_top_t));
 
    for (int i = 0; i < ncpu; i++)
      {
-        cores[i].id = i;
-        cores[i].core_id = i;
+        cores_top[i].id = i;
+        cores_top[i].core_id = i;
         snprintf(buf, sizeof(buf), 
"/sys/devices/system/cpu/cpu%i/topology/core_id", i);
         char *b = file_contents(buf);
         if (b)
           {
-             cores[i].core_id = atoi(b);
+             cores_top[i].core_id = atoi(b);
              free(b);
           }
      }
 
-   qsort(cores, ncpu, sizeof(core_top_t), _cmp);
+   qsort(cores_top, ncpu, sizeof(core_top_t), _cmp);
 
    for (int i = 0; i < ncpu; i++)
      {
-        ids[i] = cores[i].id;
+        Cpu_Core *core = eina_list_nth(cores, i);
+        core->top_id = cores_top[i].id;
      }
-   free(cores);
+   free(cores_top);
 #endif
 }

-- 


Reply via email to