1 | /*␊ |
2 | * Copyright 2011 cparm <armelcadetpetit@gmail.com>. All rights reserved.␊ |
3 | */␊ |
4 | #include "boot.h"␊ |
5 | #include "bootstruct.h"␊ |
6 | #include "libsaio.h"␊ |
7 | #include "modules.h"␊ |
8 | #include "Platform.h"␊ |
9 | #include "efi.h"␊ |
10 | #include "mysmbios.h"␊ |
11 | ␊ |
12 | void getSmbiosPatched_hook(void* arg1, void* arg2, void* arg3, void* arg4, void* arg5, void* arg6)␊ |
13 | {␉␊ |
14 | ␉struct SMBEntryPoint *patched_smb = NULL;␊ |
15 | ␉␊ |
16 | ␉execute_hook("ScanMemory", NULL, NULL, NULL, NULL, NULL, NULL);␊ |
17 | ␉setupSMBIOSTable();␊ |
18 | ␉smbios_p = (EFI_PTR32)getSmbiosPatched();␊ |
19 | ␉␊ |
20 | ␉patched_smb = getSmbiosPatched();␊ |
21 | ␉␊ |
22 | ␉if (patched_smb)␊ |
23 | ␉␉smbios_p = (EFI_PTR32)patched_smb; ␊ |
24 | ␉else␊ |
25 | ␉␉verbose("Error: Could not get patched SMBIOS, fallback to original SMBIOS !!\n");␊ |
26 | ␉ ␊ |
27 | }␊ |
28 | ␊ |
29 | void smbios_helper_hook(void* arg1, void* arg2, void* arg3, void* arg4, void* arg5, void* arg6)␊ |
30 | {␉␊ |
31 | ␉struct SMBEntryPoint *smbios_o = (struct SMBEntryPoint *)arg1;␉␉␊ |
32 | ␉readSMBIOSInfo(smbios_o);␉␊ |
33 | }␊ |
34 | ␊ |
35 | void getProductName_hook(void* arg1, void* arg2, void* arg3, void* arg4, void* arg5, void* arg6)␊ |
36 | {␉␊ |
37 | ␉setupSmbiosConfigFile("SMBIOS.plist");␊ |
38 | ␉int len = 0;␊ |
39 | ␉const char *val = 0;␊ |
40 | ␉␊ |
41 | ␉if (getValueForKey("SMproductname", &val, &len, &bootInfo->smbiosConfig)) {␊ |
42 | ␉␉gPlatformName = (char *)val;␊ |
43 | ␉} else {␊ |
44 | ␉␉gPlatformName = setDefaultSMBData();␊ |
45 | ␉}␉␊ |
46 | ␉␉␊ |
47 | }␊ |
48 | ␊ |
49 | void SMBiosGetters_start()␊ |
50 | {␉␊ |
51 | ␉␊ |
52 | ␉register_hook_callback("getSmbiosPatched", &getSmbiosPatched_hook);␉␉␊ |
53 | ␉register_hook_callback("smbios_helper", &smbios_helper_hook);␊ |
54 | ␉register_hook_callback("getProductNamePatched", &getProductName_hook);␊ |
55 | }␊ |
56 | |