include/linux/dmi.h
Source file repositories/reference/linux-study-clean/include/linux/dmi.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/dmi.h- Extension
.h- Size
- 4915 bytes
- Lines
- 178
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/list.hlinux/kobject.hlinux/mod_devicetable.h
Detected Declarations
struct dmi_headerstruct dmi_devicestruct dmi_a_info_entrystruct dmi_a_infostruct dmi_dev_onboardenum dmi_device_typeenum dmi_entry_typefunction dmi_check_systemfunction dmi_get_system_infofunction dmi_find_devicefunction dmi_setupfunction dmi_get_bios_yearfunction dmi_name_in_vendorsfunction dmi_name_in_serialfunction dmi_walkfunction dmi_matchfunction dmi_memdev_namefunction dmi_memdev_typefunction dmi_memdev_handlefunction dmi_first_matchfunction dmi_string_nosave
Annotated Snippet
struct dmi_header {
u8 type;
u8 length;
u16 handle;
} __packed;
struct dmi_device {
struct list_head list;
int type;
const char *name;
void *device_data; /* Type specific data */
};
#define DMI_A_INFO_ENT_MIN_SIZE 0x6
struct dmi_a_info_entry {
u8 length;
u16 handle;
u8 offset;
u8 str_num;
u8 value[];
} __packed;
#define DMI_A_INFO_MIN_SIZE 0xB
struct dmi_a_info {
struct dmi_header header;
u8 count;
} __packed;
#ifdef CONFIG_DMI
struct dmi_dev_onboard {
struct dmi_device dev;
int instance;
int segment;
int bus;
int devfn;
};
extern struct kobject *dmi_kobj;
extern int dmi_check_system(const struct dmi_system_id *list);
const struct dmi_system_id *dmi_first_match(const struct dmi_system_id *list);
extern const char * dmi_get_system_info(int field);
extern const struct dmi_device * dmi_find_device(int type, const char *name,
const struct dmi_device *from);
extern void dmi_setup(void);
extern bool dmi_get_date(int field, int *yearp, int *monthp, int *dayp);
extern int dmi_get_bios_year(void);
extern int dmi_name_in_vendors(const char *str);
extern int dmi_name_in_serial(const char *str);
extern int dmi_available;
extern int dmi_walk(void (*decode)(const struct dmi_header *, void *),
void *private_data);
extern bool dmi_match(enum dmi_field f, const char *str);
extern void dmi_memdev_name(u16 handle, const char **bank, const char **device);
extern u64 dmi_memdev_size(u16 handle);
extern u8 dmi_memdev_type(u16 handle);
extern u16 dmi_memdev_handle(int slot);
const char *dmi_string_nosave(const struct dmi_header *dm, u8 s);
#else
static inline int dmi_check_system(const struct dmi_system_id *list) { return 0; }
static inline const char * dmi_get_system_info(int field) { return NULL; }
static inline const struct dmi_device * dmi_find_device(int type, const char *name,
const struct dmi_device *from) { return NULL; }
static inline void dmi_setup(void) { }
static inline bool dmi_get_date(int field, int *yearp, int *monthp, int *dayp)
{
if (yearp)
*yearp = 0;
if (monthp)
*monthp = 0;
if (dayp)
*dayp = 0;
return false;
}
static inline int dmi_get_bios_year(void) { return -ENXIO; }
static inline int dmi_name_in_vendors(const char *s) { return 0; }
static inline int dmi_name_in_serial(const char *s) { return 0; }
#define dmi_available 0
static inline int dmi_walk(void (*decode)(const struct dmi_header *, void *),
void *private_data) { return -ENXIO; }
static inline bool dmi_match(enum dmi_field f, const char *str)
{ return false; }
static inline void dmi_memdev_name(u16 handle, const char **bank,
const char **device) { }
static inline u64 dmi_memdev_size(u16 handle) { return ~0ul; }
static inline u8 dmi_memdev_type(u16 handle) { return 0x0; }
static inline u16 dmi_memdev_handle(int slot) { return 0xffff; }
static inline const struct dmi_system_id *
Annotation
- Immediate include surface: `linux/list.h`, `linux/kobject.h`, `linux/mod_devicetable.h`.
- Detected declarations: `struct dmi_header`, `struct dmi_device`, `struct dmi_a_info_entry`, `struct dmi_a_info`, `struct dmi_dev_onboard`, `enum dmi_device_type`, `enum dmi_entry_type`, `function dmi_check_system`, `function dmi_get_system_info`, `function dmi_find_device`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.