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