From: Karel Zak Date: Fri, 14 Aug 2020 10:30:18 +0000 (+0200) Subject: lscpu: (topology) add read_mhz() X-Git-Tag: v2.37-rc1~342 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9d08a19d5452c51e175a0e7403d0900fa8bc55a2;p=thirdparty%2Futil-linux.git lscpu: (topology) add read_mhz() Signed-off-by: Karel Zak --- diff --git a/sys-utils/lscpu-api.h b/sys-utils/lscpu-api.h index a4afd29643..5c40c421cf 100644 --- a/sys-utils/lscpu-api.h +++ b/sys-utils/lscpu-api.h @@ -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; diff --git a/sys-utils/lscpu-topology.c b/sys-utils/lscpu-topology.c index 379c5b3282..93b5fd6083 100644 --- a/sys-utils/lscpu-topology.c +++ b/sys-utils/lscpu-topology.c @@ -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;