[syslinux:lwip] dmi: add additional strings

syslinux-bot for H. Peter Anvin hpa at linux.intel.com
Tue Apr 26 17:42:02 PDT 2011


Commit-ID:  47eda5f32f0883c91788033536a9b1c706c9c0e6
Gitweb:     http://syslinux.zytor.com/commit/47eda5f32f0883c91788033536a9b1c706c9c0e6
Author:     H. Peter Anvin <hpa at linux.intel.com>
AuthorDate: Tue, 26 Apr 2011 16:07:03 -0700
Committer:  H. Peter Anvin <hpa at linux.intel.com>
CommitDate: Tue, 26 Apr 2011 16:07:03 -0700

dmi: add additional strings

Add additional strings, and create fallbacks when the strings are
empty.  Unfortunately we can't easily fall back for crap like "Insert
name of OEM here".

Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>


---
 com32/include/syslinux/sysappend.h |   11 +++++++----
 core/dmi.c                         |   24 ++++++++++++++----------
 2 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/com32/include/syslinux/sysappend.h b/com32/include/syslinux/sysappend.h
index b767bf2..8eb0916 100644
--- a/com32/include/syslinux/sysappend.h
+++ b/com32/include/syslinux/sysappend.h
@@ -38,10 +38,13 @@ enum syslinux_sysappend {
     SYSAPPEND_IP,		/* PXELINUX: ip= address */
     SYSAPPEND_BOOTIF,		/* PXELINUX: BOOTIF= address */
     SYSAPPEND_SYSUUID,		/* System UUID from PXE or DMI */
-    SYSAPPEND_SYSVENDOR,	/* System vendor from DMI */
-    SYSAPPEND_SYSPRODUCT,	/* System product from DMI */
-    SYSAPPEND_SYSVERSION,	/* System version from DMI */
-    SYSAPPEND_SYSSERIAL,	/* System serial from DMI */
+    SYSAPPEND_VENDOR,		/* System or MB vendor from DMI */
+    SYSAPPEND_PRODUCT,		/* System or MB product from DMI */
+    SYSAPPEND_VERSION,		/* System or MB version from DMI */
+    SYSAPPEND_SERIAL,		/* System or MB serial from DMI */
+    SYSAPPEND_SKU,		/* System SKU from DMI */
+    SYSAPPEND_FAMILY,		/* System family from DMI */
+    SYSAPPEND_ASSET,		/* MB asset tag from DMI */
     SYSAPPEND_MAX		/* Total number of strings */
 };
 
diff --git a/core/dmi.c b/core/dmi.c
index 9c9e0ab..66597af 100644
--- a/core/dmi.c
+++ b/core/dmi.c
@@ -225,10 +225,17 @@ struct sysappend_dmi_strings {
 };
 
 static const struct sysappend_dmi_strings dmi_strings[] = {
-    { "SYSVENDOR=",  SYSAPPEND_SYSVENDOR,  1, 0x04 },
-    { "SYSPRODUCT=", SYSAPPEND_SYSPRODUCT, 1, 0x05 },
-    { "SYSVERSION=", SYSAPPEND_SYSVERSION, 1, 0x06 },
-    { "SYSSERIAL=",  SYSAPPEND_SYSSERIAL,  1, 0x07 },
+    { "SYSVENDOR=",  SYSAPPEND_VENDOR,  1, 0x04 },
+    { "SYSPRODUCT=", SYSAPPEND_PRODUCT, 1, 0x05 },
+    { "SYSVERSION=", SYSAPPEND_VERSION, 1, 0x06 },
+    { "SYSSERIAL=",  SYSAPPEND_SERIAL,  1, 0x07 },
+    { "SYSSKU=",     SYSAPPEND_SKU,     1, 0x19 },
+    { "SYSFAMILY=",  SYSAPPEND_FAMILY,  1, 0x1a },
+    { "MBVENDOR=",   SYSAPPEND_VENDOR,  2, 0x04 },
+    { "MBPRODUCT=",  SYSAPPEND_PRODUCT, 2, 0x05 },
+    { "MBVERSION=",  SYSAPPEND_VERSION, 2, 0x06 },
+    { "MBSERIAL=",   SYSAPPEND_SERIAL,  2, 0x07 },
+    { "MBASSET=",    SYSAPPEND_ASSET,   2, 0x08 },
     { NULL, 0, 0, 0 }
 };
 
@@ -287,12 +294,9 @@ void dmi_init(void)
     sysappend_set_uuid(dmi_find_data(1, 0x08, 16));
 
     for (ds = dmi_strings; ds->prefix; ds++) {
-	const char *str = dmi_find_string(ds->index, ds->offset);
-
-	if (sysappend_strings[ds->sa]) {
-	    free((char *)sysappend_strings[ds->sa]);
-	    sysappend_strings[ds->sa] = NULL;
+	if (!sysappend_strings[ds->sa]) {
+	    const char *str = dmi_find_string(ds->index, ds->offset);
+	    sysappend_strings[ds->sa] = dmi_install_string(ds->prefix, str);
 	}
-	sysappend_strings[ds->sa] = dmi_install_string(ds->prefix, str);
     }
 }



More information about the Syslinux-commits mailing list