git: 0ea19e39ff05 - stable/13 - ipmi,smbios: move smbios_walk_table to smbios.h
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 03 Mar 2022 14:20:40 UTC
The branch stable/13 has been updated by vangyzen:
URL: https://cgit.FreeBSD.org/src/commit/?id=0ea19e39ff050b3267d17a4d5209349b77e0b28c
commit 0ea19e39ff050b3267d17a4d5209349b77e0b28c
Author: Greg V <greg@unrelenting.technology>
AuthorDate: 2021-04-07 20:05:49 +0000
Commit: Eric van Gyzen <vangyzen@FreeBSD.org>
CommitDate: 2022-03-03 14:20:07 +0000
ipmi,smbios: move smbios_walk_table to smbios.h
This function will be used for exposing DMI info as sysctls in the
smbios module (in an upcoming review).
While here, add __packed to the structs.
Reviewed by: dab
MFC after: 1 week
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D29270
(cherry picked from commit f689cb23b2782d0d0f586bcfabbad68f728ed1df)
---
sys/dev/ipmi/ipmi_smbios.c | 29 -----------------------------
sys/dev/smbios/smbios.h | 31 +++++++++++++++++++++++++++++--
2 files changed, 29 insertions(+), 31 deletions(-)
diff --git a/sys/dev/ipmi/ipmi_smbios.c b/sys/dev/ipmi/ipmi_smbios.c
index 308a3b076ef7..a1b953365d7c 100644
--- a/sys/dev/ipmi/ipmi_smbios.c
+++ b/sys/dev/ipmi/ipmi_smbios.c
@@ -79,8 +79,6 @@ struct ipmi_entry {
#define SPACING_32 0x1
#define SPACING_16 0x2
-typedef void (*smbios_callback_t)(struct smbios_structure_header *, void *);
-
static struct ipmi_get_info ipmi_info;
static int ipmi_probed;
static struct mtx ipmi_info_mtx;
@@ -88,8 +86,6 @@ MTX_SYSINIT(ipmi_info, &ipmi_info_mtx, "ipmi info", MTX_DEF);
static void ipmi_smbios_probe(struct ipmi_get_info *);
static int smbios_cksum(struct smbios_eps *);
-static void smbios_walk_table(uint8_t *, int, smbios_callback_t,
- void *);
static void smbios_ipmi_info(struct smbios_structure_header *, void *);
static void
@@ -146,31 +142,6 @@ smbios_ipmi_info(struct smbios_structure_header *h, void *arg)
info->iface_type = s->interface_type;
}
-static void
-smbios_walk_table(uint8_t *p, int entries, smbios_callback_t cb, void *arg)
-{
- struct smbios_structure_header *s;
-
- while (entries--) {
- s = (struct smbios_structure_header *)p;
- cb(s, arg);
-
- /*
- * Look for a double-nul after the end of the
- * formatted area of this structure.
- */
- p += s->length;
- while (!(p[0] == 0 && p[1] == 0))
- p++;
-
- /*
- * Skip over the double-nul to the start of the next
- * structure.
- */
- p += 2;
- }
-}
-
/*
* Walk the SMBIOS table looking for an IPMI (type 38) entry. If we find
* one, return the parsed data in the passed in ipmi_get_info structure and
diff --git a/sys/dev/smbios/smbios.h b/sys/dev/smbios/smbios.h
index 6503cdb73c4c..ec216b676f2b 100644
--- a/sys/dev/smbios/smbios.h
+++ b/sys/dev/smbios/smbios.h
@@ -56,12 +56,39 @@ struct smbios_eps {
uint32_t structure_table_address;
uint16_t number_structures;
uint8_t BCD_revision;
-};
+} __packed;
struct smbios_structure_header {
uint8_t type;
uint8_t length;
uint16_t handle;
-};
+} __packed;
+
+typedef void (*smbios_callback_t)(struct smbios_structure_header *, void *);
+
+static inline void
+smbios_walk_table(uint8_t *p, int entries, smbios_callback_t cb, void *arg)
+{
+ struct smbios_structure_header *s;
+
+ while (entries--) {
+ s = (struct smbios_structure_header *)p;
+ cb(s, arg);
+
+ /*
+ * Look for a double-nul after the end of the
+ * formatted area of this structure.
+ */
+ p += s->length;
+ while (!(p[0] == 0 && p[1] == 0))
+ p++;
+
+ /*
+ * Skip over the double-nul to the start of the next
+ * structure.
+ */
+ p += 2;
+ }
+}
#endif /* _SMBIOS_H_ */