diff options
| author | Karel Zak <kzak@redhat.com> | 2020-05-14 15:20:52 +0200 |
|---|---|---|
| committer | Karel Zak <kzak@redhat.com> | 2020-11-13 09:19:02 +0100 |
| commit | 504de58512129831398bcf4aba51f19a97b609d9 (patch) | |
| tree | d92472b33579dffd1178cf70c41c5d9af16ab22c /sys-utils/lscpu-api.h | |
| parent | a94bb4357eb45666089dd792b9dda936a3e81c02 (diff) | |
| download | util-linux-504de58512129831398bcf4aba51f19a97b609d9.tar.gz | |
lscpu: convert ARM decoding to new API
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'sys-utils/lscpu-api.h')
| -rw-r--r-- | sys-utils/lscpu-api.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/sys-utils/lscpu-api.h b/sys-utils/lscpu-api.h index 9bbd18d243..1d979e787d 100644 --- a/sys-utils/lscpu-api.h +++ b/sys-utils/lscpu-api.h @@ -191,9 +191,50 @@ int lscpu_add_cpu(struct lscpu_cxt *cxt, struct lscpu_cputype *ct); int lscpu_cpus_apply_type(struct lscpu_cxt *cxt, struct lscpu_cputype *type); +void lscpu_decode_arm(struct lscpu_cxt *cxt); + struct lscpu_cxt *lscpu_new_context(void); void lscpu_free_context(struct lscpu_cxt *cxt); int lookup(char *line, char *pattern, char **value); +/* + * Firmware stuff + */ +#define _PATH_SYS_DMI_TYPE4 "/sys/firmware/dmi/entries/4-0/raw" +#define _PATH_SYS_DMI "/sys/firmware/dmi/tables/DMI" + +struct lscpu_dmi_header +{ + uint8_t type; + uint8_t length; + uint16_t handle; + uint8_t *data; +}; + +static inline void to_dmi_header(struct lscpu_dmi_header *h, uint8_t *data) +{ + h->type = data[0]; + h->length = data[1]; + memcpy(&h->handle, data + 2, sizeof(h->handle)); + h->data = data; +} + +static inline char *dmi_string(const struct lscpu_dmi_header *dm, uint8_t s) +{ + char *bp = (char *)dm->data; + + if (!s || !bp) + return NULL; + + bp += dm->length; + while (s > 1 && *bp) { + bp += strlen(bp); + bp++; + s--; + } + + return !*bp ? NULL : bp; +} + #endif /* LSCPU_API_H */ |
