xref: /aosp_15_r20/external/angle/src/common/system_utils_winuwp.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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