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