diff options
Diffstat (limited to 'contrib/syslinux-4.02/com32/lua/src/dmi.c')
-rw-r--r-- | contrib/syslinux-4.02/com32/lua/src/dmi.c | 301 |
1 files changed, 301 insertions, 0 deletions
diff --git a/contrib/syslinux-4.02/com32/lua/src/dmi.c b/contrib/syslinux-4.02/com32/lua/src/dmi.c new file mode 100644 index 0000000..d030533 --- /dev/null +++ b/contrib/syslinux-4.02/com32/lua/src/dmi.c @@ -0,0 +1,301 @@ +#include <stdlib.h> +#include <string.h> + +#define ldmilib_c /* Define the library */ + +/* Include the Lua API header files */ +#include "lua.h" +#include "lauxlib.h" +#include "lualib.h" +#include "dmi/dmi.h" + +static int dmi_gettable(lua_State *L) +{ + s_dmi dmi; + + lua_newtable(L); + + if ( ! dmi_iterate(&dmi) ) { + printf("No DMI Structure found\n"); + return -1; + } + + parse_dmitable(&dmi); + + /* bios */ + lua_pushstring(L, "bios.vendor"); + lua_pushstring(L, dmi.bios.vendor); + lua_settable(L,-3); + + lua_pushstring(L, "bios.version"); + lua_pushstring(L, dmi.bios.version); + lua_settable(L,-3); + + lua_pushstring(L, "bios.release_date"); + lua_pushstring(L, dmi.bios.release_date); + lua_settable(L,-3); + + lua_pushstring(L, "bios.bios_revision"); + lua_pushstring(L, dmi.bios.bios_revision); + lua_settable(L,-3); + + lua_pushstring(L, "bios.firmware_revision"); + lua_pushstring(L, dmi.bios.firmware_revision); + lua_settable(L,-3); + + lua_pushstring(L, "bios.address"); + lua_pushnumber(L, dmi.bios.address); + lua_settable(L,-3); + + lua_pushstring(L, "bios.runtime_size"); + lua_pushnumber(L, dmi.bios.runtime_size); + lua_settable(L,-3); + + lua_pushstring(L, "bios.runtime_size_unit"); + lua_pushstring(L, dmi.bios.runtime_size_unit); + lua_settable(L,-3); + + lua_pushstring(L, "bios.rom_size"); + lua_pushnumber(L, dmi.bios.rom_size); + lua_settable(L,-3); + + lua_pushstring(L, "bios.rom_size_unit"); + lua_pushstring(L, dmi.bios.rom_size_unit); + lua_settable(L,-3); + + /* system */ + lua_pushstring(L, "system.manufacturer"); + lua_pushstring(L, dmi.system.manufacturer); + lua_settable(L,-3); + + lua_pushstring(L, "system.product_name"); + lua_pushstring(L, dmi.system.product_name); + lua_settable(L,-3); + + lua_pushstring(L, "system.version"); + lua_pushstring(L, dmi.system.version); + lua_settable(L,-3); + + lua_pushstring(L, "system.serial"); + lua_pushstring(L, dmi.system.serial); + lua_settable(L,-3); + + lua_pushstring(L, "system.uuid"); + lua_pushstring(L, dmi.system.uuid); + lua_settable(L,-3); + + lua_pushstring(L, "system.wakeup_type"); + lua_pushstring(L, dmi.system.wakeup_type); + lua_settable(L,-3); + + lua_pushstring(L, "system.sku_number"); + lua_pushstring(L, dmi.system.sku_number); + lua_settable(L,-3); + + lua_pushstring(L, "system.family"); + lua_pushstring(L, dmi.system.family); + lua_settable(L,-3); + + /* base_board */ + lua_pushstring(L, "base_board.manufacturer"); + lua_pushstring(L, dmi.base_board.manufacturer); + lua_settable(L,-3); + + lua_pushstring(L, "base_board.product_name"); + lua_pushstring(L, dmi.base_board.product_name); + lua_settable(L,-3); + + lua_pushstring(L, "base_board.version"); + lua_pushstring(L, dmi.base_board.version); + lua_settable(L,-3); + + lua_pushstring(L, "base_board.serial"); + lua_pushstring(L, dmi.base_board.serial); + lua_settable(L,-3); + + lua_pushstring(L, "base_board.asset_tag"); + lua_pushstring(L, dmi.base_board.asset_tag); + lua_settable(L,-3); + + lua_pushstring(L, "base_board.location"); + lua_pushstring(L, dmi.base_board.location); + lua_settable(L,-3); + + lua_pushstring(L, "base_board.type"); + lua_pushstring(L, dmi.base_board.type); + lua_settable(L,-3); + + /* chassis */ + lua_pushstring(L, "chassis.manufacturer"); + lua_pushstring(L, dmi.chassis.manufacturer); + lua_settable(L,-3); + + lua_pushstring(L, "chassis.type"); + lua_pushstring(L, dmi.chassis.type); + lua_settable(L,-3); + + lua_pushstring(L, "chassis.lock"); + lua_pushstring(L, dmi.chassis.lock); + lua_settable(L,-3); + + lua_pushstring(L, "chassis.version"); + lua_pushstring(L, dmi.chassis.version); + lua_settable(L,-3); + + lua_pushstring(L, "chassis.serial"); + lua_pushstring(L, dmi.chassis.serial); + lua_settable(L,-3); + + lua_pushstring(L, "chassis.asset_tag"); + lua_pushstring(L, dmi.chassis.asset_tag); + lua_settable(L,-3); + + lua_pushstring(L, "chassis.boot_up_state"); + lua_pushstring(L, dmi.chassis.boot_up_state); + lua_settable(L,-3); + + lua_pushstring(L, "chassis.power_supply_state"); + lua_pushstring(L, dmi.chassis.power_supply_state); + lua_settable(L,-3); + + lua_pushstring(L, "chassis.thermal_state"); + lua_pushstring(L, dmi.chassis.thermal_state); + lua_settable(L,-3); + + lua_pushstring(L, "chassis.security_status"); + lua_pushstring(L, dmi.chassis.security_status); + lua_settable(L,-3); + + lua_pushstring(L, "chassis.oem_information"); + lua_pushstring(L, dmi.chassis.oem_information); + lua_settable(L,-3); + + lua_pushstring(L, "chassis.height"); + lua_pushnumber(L, dmi.chassis.height); + lua_settable(L,-3); + + lua_pushstring(L, "chassis.nb_power_cords"); + lua_pushnumber(L, dmi.chassis.nb_power_cords); + lua_settable(L,-3); + + /* processor */ + lua_pushstring(L, "processor.socket_designation"); + lua_pushstring(L, dmi.processor.socket_designation); + lua_settable(L,-3); + + lua_pushstring(L, "processor.type"); + lua_pushstring(L, dmi.processor.type); + lua_settable(L,-3); + + lua_pushstring(L, "processor.family"); + lua_pushstring(L, dmi.processor.family); + lua_settable(L,-3); + + lua_pushstring(L, "processor.manufacturer"); + lua_pushstring(L, dmi.processor.manufacturer); + lua_settable(L,-3); + + lua_pushstring(L, "processor.version"); + lua_pushstring(L, dmi.processor.version); + lua_settable(L,-3); + + lua_pushstring(L, "processor.external_clock"); + lua_pushnumber(L, dmi.processor.external_clock); + lua_settable(L,-3); + + lua_pushstring(L, "processor.max_speed"); + lua_pushnumber(L, dmi.processor.max_speed); + lua_settable(L,-3); + + lua_pushstring(L, "processor.current_speed"); + lua_pushnumber(L, dmi.processor.current_speed); + lua_settable(L,-3); + + lua_pushstring(L, "processor.signature.type"); + lua_pushnumber(L, dmi.processor.signature.type); + lua_settable(L,-3); + + lua_pushstring(L, "processor.signature.family"); + lua_pushnumber(L, dmi.processor.signature.family); + lua_settable(L,-3); + + lua_pushstring(L, "processor.signature.model"); + lua_pushnumber(L, dmi.processor.signature.model); + lua_settable(L,-3); + + lua_pushstring(L, "processor.signature.stepping"); + lua_pushnumber(L, dmi.processor.signature.stepping); + lua_settable(L,-3); + + lua_pushstring(L, "processor.signature.minor_stepping"); + lua_pushnumber(L, dmi.processor.signature.minor_stepping); + lua_settable(L,-3); + + lua_pushstring(L, "processor.voltage_mv"); + lua_pushnumber(L, dmi.processor.voltage_mv); + lua_settable(L,-3); + + lua_pushstring(L, "processor.status"); + lua_pushstring(L, dmi.processor.status); + lua_settable(L,-3); + + lua_pushstring(L, "processor.upgrade"); + lua_pushstring(L, dmi.processor.upgrade); + lua_settable(L,-3); + + lua_pushstring(L, "processor.cache1"); + lua_pushstring(L, dmi.processor.cache1); + lua_settable(L,-3); + + lua_pushstring(L, "processor.cache2"); + lua_pushstring(L, dmi.processor.cache2); + lua_settable(L,-3); + + lua_pushstring(L, "processor.cache3"); + lua_pushstring(L, dmi.processor.cache3); + lua_settable(L,-3); + + lua_pushstring(L, "processor.serial"); + lua_pushstring(L, dmi.processor.serial); + lua_settable(L,-3); + + lua_pushstring(L, "processor.part_number"); + lua_pushstring(L, dmi.processor.part_number); + lua_settable(L,-3); + + lua_pushstring(L, "processor.id"); + lua_pushstring(L, dmi.processor.id); + lua_settable(L,-3); + + /* set global variable: lua_setglobal(L, "dmitable"); */ + + /* return number of return values on stack */ + return 1; +} + + +static int dmi_supported(lua_State *L) +{ + s_dmi dmi; + + if ( dmi_iterate(&dmi) ) { + lua_pushboolean(L, 1); + } else { + lua_pushboolean(L, 0); + } + return 1; +} + + +static const luaL_Reg dmilib[] = { + {"gettable", dmi_gettable}, + {"supported", dmi_supported}, + {NULL, NULL} +}; + + +LUALIB_API int luaopen_dmi (lua_State *L) { + luaL_openlib(L, LUA_DMILIBNAME, dmilib, 0); + return 1; +} + |