aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys-utils/lscpu-api.h3
-rw-r--r--sys-utils/lscpu-topology.c18
2 files changed, 17 insertions, 4 deletions
diff --git a/sys-utils/lscpu-api.h b/sys-utils/lscpu-api.h
index 61932cb008..3086d80935 100644
--- a/sys-utils/lscpu-api.h
+++ b/sys-utils/lscpu-api.h
@@ -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 {
diff --git a/sys-utils/lscpu-topology.c b/sys-utils/lscpu-topology.c
index 036e1440c7..8450847bc9 100644
--- a/sys-utils/lscpu-topology.c
+++ b/sys-utils/lscpu-topology.c
@@ -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;