]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lscpu: (topology) add read_address()
authorKarel Zak <kzak@redhat.com>
Fri, 14 Aug 2020 10:10:26 +0000 (12:10 +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 61932cb0080b79a70949a8cb36dc2a8ae1aea5a9..3086d809353decc05f4bba026b03772a3fa02b2d 100644 (file)
@@ -49,7 +49,6 @@ struct lscpu_cputype {
        int     dispatching;    /* -1 if not evailable, DIST_* */
        int     freqboost;      /* -1 if not evailable */
 
-       int     *addresses;     /* physical cpu addresses */
        int     *configured;    /* cpu configured */
        int     physsockets;    /* Physical sockets (modules) */
        int     physchips;      /* Physical chips */
@@ -103,7 +102,7 @@ struct lscpu_cpu {
        int     drawerid;
 
        int     polarization;   /* POLAR_* */
-
+       int     address;        /* physical cpu address */
 };
 
 struct lscpu_arch {
index 036e1440c79221cd46b6af09db692779e2cfc46e..8450847bc9f3e1420ce5dde63a52a87d87f4cf81 100644 (file)
@@ -233,6 +233,18 @@ static int read_polarization(struct lscpu_cxt *cxt, struct lscpu_cpu *cpu)
        return 0;
 }
 
+static int read_address(struct lscpu_cxt *cxt, struct lscpu_cpu *cpu)
+{
+       struct path_cxt *sys = cxt->syscpu;
+       int num = cpu->logical_id;
+
+       if (ul_path_accessf(sys, F_OK, "cpu%d/address", num) != 0)
+               return 0;
+
+       ul_path_readf_s32(sys, &cpu->address, "cpu%d/address", num);
+       return 0;
+}
+
 int lscpu_read_topology(struct lscpu_cxt *cxt)
 {
        size_t i;
@@ -248,8 +260,10 @@ int lscpu_read_topology(struct lscpu_cxt *cxt)
                        continue;
 
                rc = read_ids(cxt, cpu);
-               if (rc == 0)
-                       read_polarization(cxt, cpu);
+               if (!rc)
+                       rc = read_polarization(cxt, cpu);
+               if (!rc)
+                       rc = read_address(cxt, cpu);
        }
 
        return rc;