aboutsummaryrefslogtreecommitdiffstats
path: root/sys-utils/lscpu-api.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys-utils/lscpu-api.h')
-rw-r--r--sys-utils/lscpu-api.h41
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 */