source: bootcd/isolinux/syslinux-6.03/com32/lua/src/cpu.c @ e16e8f2

Last change on this file since e16e8f2 was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 5.3 KB
Line 
1#include <stdlib.h>
2#include <string.h>
3
4#define llua_cpu       /* Define the library */
5
6/* Include the Lua API header files */
7#include"lua.h"
8#include"lauxlib.h"
9#include"lualib.h"
10#include"cpuid.h"
11
12static void add_string_item(lua_State *L, const char *item, const char *value_str) {
13 lua_pushstring(L,item);
14 lua_pushstring(L,value_str);
15 lua_settable(L,-3);
16}
17
18static void add_int_item(lua_State *L, const char *item, int value_int) {
19 lua_pushstring(L,item);
20 lua_pushnumber(L,value_int);
21 lua_settable(L,-3);
22}
23
24static void add_flag(lua_State *L, bool value, const char *value_str) {
25 char buffer[32] = { 0 };
26 snprintf(buffer,sizeof(buffer), "flags.%s",value_str);
27 lua_pushstring(L,buffer);
28// printf("%s=%d\n",value_str,value);
29
30 if (value == true) {
31  lua_pushstring(L,"yes");
32 } else {
33  lua_pushstring(L,"no");
34 }
35
36 lua_settable(L,-3);
37}
38
39static int cpu_getflags(lua_State *L)
40{
41  s_cpu lua_cpu;
42 
43  detect_cpu(&lua_cpu);
44
45  lua_newtable(L);
46
47  add_string_item(L, "vendor", lua_cpu.vendor);
48  add_string_item(L, "model", lua_cpu.model);
49  add_int_item(L, "cores", lua_cpu.num_cores);
50  add_int_item(L, "l1_instruction_cache", lua_cpu.l1_instruction_cache_size);
51  add_int_item(L, "l1_data_cache", lua_cpu.l1_data_cache_size);
52  add_int_item(L, "l2_cache", lua_cpu.l2_cache_size);
53  add_int_item(L, "family_id", lua_cpu.family);
54  add_int_item(L, "model_id", lua_cpu.model_id);
55  add_int_item(L, "stepping", lua_cpu.stepping);
56
57  add_flag(L, lua_cpu.flags.fpu, "fpu");
58  add_flag(L, lua_cpu.flags.vme, "vme");
59  add_flag(L, lua_cpu.flags.de, "de");
60  add_flag(L, lua_cpu.flags.pse, "pse");
61  add_flag(L, lua_cpu.flags.tsc, "tsc");
62  add_flag(L, lua_cpu.flags.msr, "msr");
63  add_flag(L, lua_cpu.flags.pae, "pae");
64  add_flag(L, lua_cpu.flags.mce, "mce");
65  add_flag(L, lua_cpu.flags.cx8, "cx8");
66  add_flag(L, lua_cpu.flags.apic, "apic");
67  add_flag(L, lua_cpu.flags.sep, "sep");
68  add_flag(L, lua_cpu.flags.mtrr, "mtrr");
69  add_flag(L, lua_cpu.flags.pge, "pge");
70  add_flag(L, lua_cpu.flags.mca, "mca");
71  add_flag(L, lua_cpu.flags.cmov, "cmov");
72  add_flag(L, lua_cpu.flags.pat, "pat");
73  add_flag(L, lua_cpu.flags.pse_36, "pse_36");
74  add_flag(L, lua_cpu.flags.psn, "psn");
75  add_flag(L, lua_cpu.flags.clflsh, "clflsh");
76  add_flag(L, lua_cpu.flags.dts, "dts");
77  add_flag(L, lua_cpu.flags.acpi, "acpi");
78  add_flag(L, lua_cpu.flags.mmx, "mmx");
79  add_flag(L, lua_cpu.flags.sse, "sse");
80  add_flag(L, lua_cpu.flags.sse2, "sse2");
81  add_flag(L, lua_cpu.flags.ss, "ss");
82  add_flag(L, lua_cpu.flags.htt, "ht");
83  add_flag(L, lua_cpu.flags.acc, "acc");
84  add_flag(L, lua_cpu.flags.syscall, "syscall");
85  add_flag(L, lua_cpu.flags.mp, "mp");
86  add_flag(L, lua_cpu.flags.nx, "nx");
87  add_flag(L, lua_cpu.flags.mmxext, "mmxext");
88  add_flag(L, lua_cpu.flags.lm, "lm");
89  add_flag(L, lua_cpu.flags.nowext, "3dnowext");
90  add_flag(L, lua_cpu.flags.now, "3dnow!");
91  add_flag(L, lua_cpu.flags.svm, "svm");
92  add_flag(L, lua_cpu.flags.vmx, "vmx");
93  add_flag(L, lua_cpu.flags.pbe, "pbe");
94  add_flag(L, lua_cpu.flags.fxsr_opt, "fxsr_opt");
95  add_flag(L, lua_cpu.flags.gbpages, "gbpages");
96  add_flag(L, lua_cpu.flags.rdtscp, "rdtscp");
97  add_flag(L, lua_cpu.flags.pni, "pni");
98  add_flag(L, lua_cpu.flags.pclmulqd, "pclmulqd");
99  add_flag(L, lua_cpu.flags.dtes64, "dtes64");
100  add_flag(L, lua_cpu.flags.smx, "smx");
101  add_flag(L, lua_cpu.flags.est, "est");
102  add_flag(L, lua_cpu.flags.tm2, "tm2");
103  add_flag(L, lua_cpu.flags.sse3, "sse3");
104  add_flag(L, lua_cpu.flags.fma, "fma");
105  add_flag(L, lua_cpu.flags.cx16, "cx16");
106  add_flag(L, lua_cpu.flags.xtpr, "xtpr");
107  add_flag(L, lua_cpu.flags.pdcm, "pdcm");
108  add_flag(L, lua_cpu.flags.dca, "dca");
109  add_flag(L, lua_cpu.flags.xmm4_1, "xmm4_1");
110  add_flag(L, lua_cpu.flags.xmm4_2, "xmm4_2");
111  add_flag(L, lua_cpu.flags.x2apic, "x2apic");
112  add_flag(L, lua_cpu.flags.movbe, "movbe");
113  add_flag(L, lua_cpu.flags.popcnt, "popcnt");
114  add_flag(L, lua_cpu.flags.aes, "aes");
115  add_flag(L, lua_cpu.flags.xsave, "xsave");
116  add_flag(L, lua_cpu.flags.osxsave, "osxsave");
117  add_flag(L, lua_cpu.flags.avx, "avx");
118  add_flag(L, lua_cpu.flags.hypervisor, "hypervisor");
119  add_flag(L, lua_cpu.flags.ace2, "ace2");
120  add_flag(L, lua_cpu.flags.ace2_en, "ace2_en");
121  add_flag(L, lua_cpu.flags.phe, "phe");
122  add_flag(L, lua_cpu.flags.phe_en, "phe_en");
123  add_flag(L, lua_cpu.flags.pmm, "pmm");
124  add_flag(L, lua_cpu.flags.pmm_en, "pmm_en");
125  add_flag(L, lua_cpu.flags.extapic, "extapic");
126  add_flag(L, lua_cpu.flags.cr8_legacy, "cr8_legacy");
127  add_flag(L, lua_cpu.flags.abm, "abm");
128  add_flag(L, lua_cpu.flags.sse4a, "sse4a");
129  add_flag(L, lua_cpu.flags.misalignsse, "misalignsse");
130  add_flag(L, lua_cpu.flags.nowprefetch, "3dnowprefetch");
131  add_flag(L, lua_cpu.flags.osvw, "osvw");
132  add_flag(L, lua_cpu.flags.ibs, "ibs");
133  add_flag(L, lua_cpu.flags.sse5, "sse5");
134  add_flag(L, lua_cpu.flags.skinit, "skinit");
135  add_flag(L, lua_cpu.flags.wdt, "wdt");
136  add_flag(L, lua_cpu.flags.ida, "ida");
137  add_flag(L, lua_cpu.flags.arat, "arat");
138  add_flag(L, lua_cpu.flags.tpr_shadow, "tpr_shadow");
139  add_flag(L, lua_cpu.flags.vnmi, "vnmi");
140  add_flag(L, lua_cpu.flags.flexpriority, "flexpriority");
141  add_flag(L, lua_cpu.flags.ept, "ept");
142  add_flag(L, lua_cpu.flags.vpid, "vpid");
143
144  /* return number of return values on stack */
145  return 1;
146}
147
148static const luaL_Reg cpulib[] = {
149  {"flags", cpu_getflags},
150  {NULL, NULL}
151};
152
153
154LUALIB_API int luaopen_cpu(lua_State *L) {
155  luaL_newlib(L, cpulib);
156  return 1;
157}
158
Note: See TracBrowser for help on using the repository browser.