coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
smbios.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <smbios.h>
4 #include <string.h>
5 #include <types.h>
6 
7 #include "eeprom.h"
8 
9 const char *smbios_system_serial_number(void)
10 {
11  const size_t offset = offsetof(struct eeprom_layout, system_serial_number);
12  static char serial_no[HERMES_SERIAL_NUMBER_LENGTH] = { 0 };
13 
14  if (eeprom_read_buffer(serial_no, offset, sizeof(serial_no)) == 0)
15  return serial_no;
16  else
17  return CONFIG_MAINBOARD_SERIAL_NUMBER;
18 }
19 
21 {
22  const size_t offset = offsetof(struct eeprom_layout, board_serial_number);
23  static char serial_no[HERMES_SERIAL_NUMBER_LENGTH] = { 0 };
24 
25  if (eeprom_read_buffer(serial_no, offset, sizeof(serial_no)) == 0)
26  return serial_no;
27  else
28  return CONFIG_MAINBOARD_SERIAL_NUMBER;
29 }
30 
31 const char *smbios_mainboard_version(void)
32 {
33  static char version_str[8] = { 0 };
34 
35  snprintf(version_str, sizeof(version_str), "HSI %u", get_bmc_hsi());
36 
37  return version_str;
38 }
#define offsetof(TYPE, MEMBER)
Definition: helpers.h:84
const char * smbios_mainboard_serial_number(void)
Definition: smbios.c:89
const char * smbios_mainboard_version(void)
Definition: smbios.c:65
const char * smbios_system_serial_number(void)
Definition: smbios.c:42
uint8_t get_bmc_hsi(void)
Definition: eeprom.c:91
bool eeprom_read_buffer(void *blob, size_t read_offset, size_t size)
Definition: eeprom.c:103
static size_t offset
Definition: flashconsole.c:16
#define HERMES_SERIAL_NUMBER_LENGTH
Definition: eeprom.h:70
int snprintf(char *buf, size_t size, const char *fmt,...)
Note: This file is only for POSIX compatibility, and is meant to be chain-included via string....
Definition: vsprintf.c:35