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; }
int main(void) { s_dmi dmi; openconsole(&dev_stdcon_r, &dev_stdcon_w); if (dmi_iterate(&dmi) == -ENODMITABLE) { printf("No DMI Structure found\n"); return -1; } parse_dmitable(&dmi); moreprintf("productname: %s\n", dmi.system.product_name); if (strncmp(dmi.system.product_name, "ProLiant ", 8) == 0) { syslinux_run_kernel_image("pxelinux.cfg/proliant", "", 0, IMAGE_TYPE_CONFIG); } else { syslinux_run_kernel_image("pxelinux.cfg/menu", "", 0, IMAGE_TYPE_CONFIG); } return 0; }
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); LUA_ADD_NUM_S(L, dmi, memory_module_count) LUA_ADD_NUM_S(L, dmi, memory_count) LUA_ADD_NUM_S(L, dmi, cache_count) LUA_ADD_STR_S(L, dmi, oem_strings) LUA_ADD_TABLE(L, &dmi, bios) LUA_ADD_TABLE(L, &dmi, system) LUA_ADD_TABLE(L, &dmi, base_board) LUA_ADD_TABLE(L, &dmi, chassis) LUA_ADD_TABLE(L, &dmi, processor) LUA_ADD_TABLE(L, &dmi, battery) LUA_ADD_TABLE(L, &dmi, memory) LUA_ADD_TABLE(L, &dmi, memory_module) LUA_ADD_TABLE(L, &dmi, cache) LUA_ADD_TABLE(L, &dmi, ipmi) LUA_ADD_TABLE(L, &dmi, hardware_security) LUA_ADD_TABLE(L, &dmi, dmi_info) /* set global variable: lua_setglobal(L, "dmitable"); */ /* return number of return values on stack */ return 1; }