----- Original Message -----
Aaron and Buland,
I was just about to check this in when I thought that maybe it could
be a bit more informative than just "dmi_ident[#]: <string>", given
that the output could also incorporate the enum name/index, as is done
with a few other crash commands:
crash> dmi_field
enum dmi_field {
DMI_NONE = 0
DMI_BIOS_VENDOR = 1
DMI_BIOS_VERSION = 2
DMI_BIOS_DATE = 3
DMI_SYS_VENDOR = 4
DMI_PRODUCT_NAME = 5
DMI_PRODUCT_VERSION = 6
DMI_PRODUCT_SERIAL = 7
DMI_PRODUCT_UUID = 8
DMI_BOARD_VENDOR = 9
DMI_BOARD_NAME = 10
DMI_BOARD_VERSION = 11
DMI_BOARD_SERIAL = 12
DMI_BOARD_ASSET_TAG = 13
DMI_CHASSIS_VENDOR = 14
DMI_CHASSIS_TYPE = 15
DMI_CHASSIS_VERSION = 16
DMI_CHASSIS_SERIAL = 17
DMI_CHASSIS_ASSET_TAG = 18
DMI_STRING_MAX = 19
};
Although, gdb doesn't have the dmi_field enum data available like the
above in really old kernels, so in those rare cases it could only be
done as you have. Maybe there could be an index_to_DMI_field() function
that returns the string above, or just a number string if it can't do
the translation?
Dave
The attached patch is what I'm thinking. On a Lenovo laptop it looks like:
crash> sys -i
DMI_BIOS_VENDOR: LENOVO
DMI_BIOS_VERSION: G4ET37WW (1.12 )
DMI_BIOS_DATE: 05/29/2012
DMI_SYS_VENDOR: LENOVO
DMI_PRODUCT_NAME: 2429BQ1
DMI_PRODUCT_VERSION: ThinkPad T530
DMI_PRODUCT_SERIAL: R9R91HZ
DMI_PRODUCT_UUID: 568DFA01-5180-11CB-B851-BD06085ADDB0
DMI_BOARD_VENDOR: LENOVO
DMI_BOARD_NAME: 2429BQ1
DMI_BOARD_VERSION: Not Available
DMI_BOARD_SERIAL: 1ZLV127F17M
DMI_BOARD_ASSET_TAG: Not Available
DMI_CHASSIS_VENDOR: LENOVO
DMI_CHASSIS_TYPE: 10
DMI_CHASSIS_VERSION: Not Available
DMI_CHASSIS_SERIAL: R9R91HZ
DMI_CHASSIS_ASSET_TAG: RH0004111
crash>
A recent HP kernel looks like this though:
crash> sys -i
DMI_BIOS_VENDOR: Hewlett-Packard
DMI_BIOS_VERSION: 786F7 v01.05
DMI_BIOS_DATE: 04/25/2008
DMI_SYS_VENDOR: Hewlett-Packard
DMI_PRODUCT_NAME: HP xw4550 Workstation
DMI_PRODUCT_VERSION:
DMI_PRODUCT_SERIAL: BAL1010051
DMI_PRODUCT_UUID: 308A59FA-9B77-DE11-BBDA-C486CC82001C
DMI_BOARD_VENDOR: Hewlett-Packard
DMI_BOARD_NAME: 0AC8h
DMI_BOARD_VERSION:
DMI_BOARD_SERIAL: BAL1010051
DMI_BOARD_ASSET_TAG:
DMI_CHASSIS_VENDOR: Hewlett-Packard
DMI_CHASSIS_TYPE: 6
DMI_CHASSIS_VERSION:
DMI_CHASSIS_SERIAL: BAL1010051
DMI_CHASSIS_ASSET_TAG:
crash>
when the "empty" entries are not NULL pointers, but rather pointers
to NULL strings or strings with spaces in them:
crash> p dmi_ident
dmi_ident = $1 =
{0x0, 0xffffffff8203b000 "Hewlett-Packard", 0xffffffff8203b010 "786F7
v01.05", 0xffffffff8203b020 "04/25/2008", 0xffffffff8203b02c
"Hewlett-Packard", 0xffffffff8203b03c "HP xw4550 Workstation",
0xffffffff8203b054 " ", 0xffffffff8203b058 "BAL1010051",
0xffffffff8203b064 "308A59FA-9B77-DE11-BBDA-C486CC82001C", 0xffffffff8203b08c
"Hewlett-Packard", 0xffffffff8203b09c "0AC8h", 0xffffffff8203b0a4
"", 0xffffffff8203b0a8 "BAL1010051", 0xffffffff8203b0b4 "",
0xffffffff8203b0b8 "Hewlett-Packard", 0xffffffff8203b0c8 "6",
0xffffffff8203b0cc "", 0xffffffff8203b0d0 "BAL1010051",
0xffffffff8203b0dc " "}
crash>
Do you think those should should be just dropped, or shown as above?
Dave