]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lscpu: (topology) add read_mhz()
authorKarel Zak <kzak@redhat.com>
Fri, 14 Aug 2020 10:30:18 +0000 (12:30 +0200)
committerKarel Zak <kzak@redhat.com>
Fri, 13 Nov 2020 08:19:02 +0000 (09:19 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
sys-utils/lscpu-api.h
sys-utils/lscpu-topology.c

index a4afd29643c14d78e68f76405ec439830d653d9f..5c40c421cf9555c0c69341248513d910eb9ff586 100644 (file)
@@ -90,10 +90,12 @@ struct lscpu_cpu {
        struct lscpu_cputype *type;
 
        int logical_id;
-       char    *mhz;
 
-       char    *dynamic_mhz;
-       char    *static_mhz;
+       char    *mhz;           /* max freq from cpuinfo */
+       char    *dynamic_mhz;   /* from cpuinf for s390 */
+       char    *static_mhz;    /* from cpuinf for s390 */
+       float   mhz_max_freq;   /* realtime freq from /sys/.../cpuinfo_max_freq */
+       float   mhz_min_freq;   /* realtime freq from /sys/.../cpuinfo_min_freq */
 
        int     coreid;
        int     socketid;
index 379c5b3282381c1d784a178ea4727826cba6edb0..93b5fd60839f2ee38b51806993fa8b63ed787405 100644 (file)
@@ -257,6 +257,19 @@ static int read_configure(struct lscpu_cxt *cxt, struct lscpu_cpu *cpu)
        return 0;
 }
 
+static int read_mhz(struct lscpu_cxt *cxt, struct lscpu_cpu *cpu)
+{
+       struct path_cxt *sys = cxt->syscpu;
+       int num = cpu->logical_id;
+       int mhz;
+
+       if (ul_path_readf_s32(sys, &mhz, "cpu%d/cpufreq/cpuinfo_max_freq", num) == 0)
+               cpu->mhz_max_freq = (float) mhz / 1000;
+       if (ul_path_readf_s32(sys, &mhz, "cpu%d/cpufreq/cpuinfo_min_freq", num) == 0)
+               cpu->mhz_min_freq = (float) mhz / 1000;
+       return 0;
+}
+
 int lscpu_read_topology(struct lscpu_cxt *cxt)
 {
        size_t i;
@@ -278,6 +291,8 @@ int lscpu_read_topology(struct lscpu_cxt *cxt)
                        rc = read_address(cxt, cpu);
                if (!rc)
                        rc = read_configure(cxt, cpu);
+               if (!rc)
+                       rc = read_mhz(cxt, cpu);
        }
 
        return rc;