master
h 62 lines 1.73 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #ifndef NETDATA_STATUS_FILE_DMI_H
4 #define NETDATA_STATUS_FILE_DMI_H
5
6 #include "libnetdata/libnetdata.h"
7
8 #define safecpy(dst, src) do { \
9 _Static_assert(sizeof(dst) != sizeof(char *), \
10 "safecpy: dst must not be a pointer, but a buffer (e.g., char dst[SIZE])"); \
11 \
12 strcatz(dst, 0, src, sizeof(dst)); \
13 } while (0)
14
15 typedef struct dmi_info {
16 struct {
17 char vendor[64];
18 char serial[64]; // System serial number
19 char uuid[64]; // System UUID (hardware identifier)
20 char asset_tag[64]; // System asset tag
21 } sys;
22
23 struct {
24 char name[64];
25 char version[64];
26 char sku[64];
27 char family[64];
28 } product;
29
30 struct {
31 char name[64];
32 char version[64];
33 char vendor[64];
34 char serial[64]; // Board serial number
35 char asset_tag[64]; // Board asset tag
36 } board;
37
38 struct {
39 char type[16];
40 char vendor[64];
41 char version[64];
42 char serial[64]; // Chassis serial number
43 char asset_tag[64]; // Chassis asset tag
44 } chassis;
45
46 struct {
47 char date[16];
48 char release[64];
49 char version[64];
50 char vendor[64];
51 } bios;
52 } DMI_INFO;
53
54 #include "status-file.h"
55
56 // Initialize DMI_INFO structure
57 void dmi_info_init(DMI_INFO *dmi);
58
59 // Platform-specific function to get DMI info
60 void os_dmi_info_get(DMI_INFO *dmi);
61
62 #endif //NETDATA_STATUS_FILE_DMI_H