summaryrefslogtreecommitdiffstats
path: root/src/arch/i386/firmware/pcbios/smbios.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/i386/firmware/pcbios/smbios.c')
-rw-r--r--src/arch/i386/firmware/pcbios/smbios.c27
1 files changed, 8 insertions, 19 deletions
diff --git a/src/arch/i386/firmware/pcbios/smbios.c b/src/arch/i386/firmware/pcbios/smbios.c
index 78a74804..d8be6f8b 100644
--- a/src/arch/i386/firmware/pcbios/smbios.c
+++ b/src/arch/i386/firmware/pcbios/smbios.c
@@ -21,6 +21,7 @@
#include <stdio.h>
#include <errno.h>
#include <gpxe/uaccess.h>
+#include <gpxe/uuid.h>
#include <realmode.h>
#include <pnpbios.h>
#include <smbios.h>
@@ -301,34 +302,22 @@ int find_smbios_string ( struct smbios_strings *strings, unsigned int index,
}
/**
- * Find SMBIOS serial number
+ * Get UUID from SMBIOS
*
+ * @v uuid UUID to fill in
+ * @ret rc Return status code
*/
-int dump_smbios_info ( void ) {
+int smbios_get_uuid ( union uuid *uuid ) {
struct smbios_system_information sysinfo;
- struct smbios_strings strings;
- char buf[64];
int rc;
if ( ( rc = find_smbios_structure ( SMBIOS_TYPE_SYSTEM_INFORMATION,
&sysinfo, sizeof ( sysinfo ),
- &strings ) ) != 0 )
- return rc;
-
- DBG_HD ( &sysinfo, sizeof ( sysinfo ) );
-
- if ( ( rc = find_smbios_string ( &strings, sysinfo.manufacturer,
- buf, sizeof ( buf ) ) ) != 0 )
- return rc;
- DBG ( "Manufacturer: \"%s\"\n", buf );
-
- if ( ( rc = find_smbios_string ( &strings, sysinfo.product,
- buf, sizeof ( buf ) ) ) != 0 )
+ NULL ) ) != 0 )
return rc;
- DBG ( "Product: \"%s\"\n", buf );
- DBG ( "UUID:\n" );
- DBG_HD ( &sysinfo.uuid, sizeof ( sysinfo.uuid ) );
+ memcpy ( uuid, sysinfo.uuid, sizeof ( *uuid ) );
+ DBG ( "SMBIOS found UUID %s\n", uuid_ntoa ( uuid ) );
return 0;
}