2017-07-26 3 views
0

Je veux écrire un module noyau Linux qui fait des choses en fonction du fournisseur de la carte et de la version du produit.Comment accéder à la table UEFI SMBIOS à partir de l'espace noyau Linux?

Dans l'espace utilisateur, je pouvais simplement lire les fichiers sous /sys/class/dmi/id/*, mais ils ne sont pas disponibles dans l'espace noyau. Je pense que je devrais collecter des données de la table UEFI SMBIOS.

Puis-je le faire sans coder en dur l'adresse mémoire exacte où chaque fournisseur utilise pour sauvegarder la table SMBIOS?

+1

est ici API DMI pour cela. Vérifiez, par exemple, 'dmi_first_match()'. La documentation est générée à partir de * Documentation/driver-api/firmware/other_interfaces.rst *. – 0andriy

Répondre

0

Je me suis débrouillé tout seul.

Il y a une bibliothèque pour accéder DMI et d'obtenir ces informations:

#include <linux/dmi.h> 

const char *board_vendor, *product_version; 
board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR); 
product_version = dmi_get_system_info(DMI_PRODUCT_VERSION);