1 //
2 // Copyright 2019 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6
7 // system_utils_winuwp.cpp: Implementation of OS-specific functions for Windows UWP
8
9 #include "common/debug.h"
10 #include "system_utils.h"
11
12 #include <stdarg.h>
13 #include <windows.h>
14 #include <array>
15 #include <string>
16
17 namespace angle
18 {
19
SetEnvironmentVar(const char * variableName,const char * value)20 bool SetEnvironmentVar(const char *variableName, const char *value)
21 {
22 // Not supported for UWP
23 return false;
24 }
25
GetEnvironmentVar(const char * variableName)26 std::string GetEnvironmentVar(const char *variableName)
27 {
28 // Not supported for UWP
29 return "";
30 }
31
OpenSystemLibraryWithExtensionAndGetError(const char * libraryName,SearchType searchType,std::string * errorOut)32 void *OpenSystemLibraryWithExtensionAndGetError(const char *libraryName,
33 SearchType searchType,
34 std::string *errorOut)
35 {
36 char buffer[MAX_PATH];
37 int ret = snprintf(buffer, MAX_PATH, "%s.%s", libraryName, GetSharedLibraryExtension());
38 if (ret <= 0 || ret >= MAX_PATH)
39 {
40 fprintf(stderr, "Error loading shared library: 0x%x", ret);
41 return nullptr;
42 }
43
44 HMODULE libraryModule = nullptr;
45
46 switch (searchType)
47 {
48 case SearchType::ModuleDir:
49 if (errorOut)
50 {
51 *errorOut = libraryName;
52 }
53 libraryModule = LoadPackagedLibrary(Widen(libraryName).c_str(), 0);
54 break;
55 case SearchType::SystemDir:
56 case SearchType::AlreadyLoaded:
57 // Not supported in UWP
58 break;
59 }
60
61 return reinterpret_cast<void *>(libraryModule);
62 }
63
64 namespace
65 {
66 class UwpPageFaultHandler : public PageFaultHandler
67 {
68 public:
UwpPageFaultHandler(PageFaultCallback callback)69 UwpPageFaultHandler(PageFaultCallback callback) : PageFaultHandler(callback) {}
~UwpPageFaultHandler()70 ~UwpPageFaultHandler() override {}
71
72 bool enable() override;
73 bool disable() override;
74 };
75
disable()76 bool UwpPageFaultHandler::disable()
77 {
78 UNIMPLEMENTED();
79 return true;
80 }
81
enable()82 bool UwpPageFaultHandler::enable()
83 {
84 UNIMPLEMENTED();
85 return true;
86 }
87 } // namespace
88
ProtectMemory(uintptr_t start,size_t size)89 bool ProtectMemory(uintptr_t start, size_t size)
90 {
91 UNIMPLEMENTED();
92 return true;
93 }
94
UnprotectMemory(uintptr_t start,size_t size)95 bool UnprotectMemory(uintptr_t start, size_t size)
96 {
97 UNIMPLEMENTED();
98 return true;
99 }
100
GetPageSize()101 size_t GetPageSize()
102 {
103 UNIMPLEMENTED();
104 return 4096;
105 }
106
CreatePageFaultHandler(PageFaultCallback callback)107 PageFaultHandler *CreatePageFaultHandler(PageFaultCallback callback)
108 {
109 return new UwpPageFaultHandler(callback);
110 }
111
GetProcessMemoryUsageKB()112 uint64_t GetProcessMemoryUsageKB()
113 {
114 // Not available on UWP.
115 return 0;
116 }
117 } // namespace angle
118