diff options
| -rw-r--r-- | sys-utils/lscpu-api.h | 3 | ||||
| -rw-r--r-- | sys-utils/lscpu-topology.c | 18 |
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; |
