[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