xref: /aosp_15_r20/art/libartpalette/system/palette_fake.cc (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker /*
2*795d594fSAndroid Build Coastguard Worker  * Copyright (C) 2019 The Android Open Source Project
3*795d594fSAndroid Build Coastguard Worker  *
4*795d594fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*795d594fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*795d594fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*795d594fSAndroid Build Coastguard Worker  *
8*795d594fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*795d594fSAndroid Build Coastguard Worker  *
10*795d594fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*795d594fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*795d594fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*795d594fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*795d594fSAndroid Build Coastguard Worker  * limitations under the License.
15*795d594fSAndroid Build Coastguard Worker  */
16*795d594fSAndroid Build Coastguard Worker 
17*795d594fSAndroid Build Coastguard Worker #include <android-base/logging.h>
18*795d594fSAndroid Build Coastguard Worker #include <stdbool.h>
19*795d594fSAndroid Build Coastguard Worker 
20*795d594fSAndroid Build Coastguard Worker #include <map>
21*795d594fSAndroid Build Coastguard Worker #include <mutex>
22*795d594fSAndroid Build Coastguard Worker 
23*795d594fSAndroid Build Coastguard Worker #include "palette/palette.h"
24*795d594fSAndroid Build Coastguard Worker #include "palette_system.h"
25*795d594fSAndroid Build Coastguard Worker 
26*795d594fSAndroid Build Coastguard Worker // Cached thread priority for testing. No thread priorities are ever affected.
27*795d594fSAndroid Build Coastguard Worker static std::mutex g_tid_priority_map_mutex;
28*795d594fSAndroid Build Coastguard Worker static std::map<int32_t, int32_t> g_tid_priority_map;
29*795d594fSAndroid Build Coastguard Worker 
30*795d594fSAndroid Build Coastguard Worker // Unless explicitly mentioned otherwise, the following methods have been
31*795d594fSAndroid Build Coastguard Worker // introduced in version 1 API, corresponding to SDK level 31.
32*795d594fSAndroid Build Coastguard Worker 
PaletteSchedSetPriority(int32_t tid,int32_t priority)33*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteSchedSetPriority(int32_t tid, int32_t priority) {
34*795d594fSAndroid Build Coastguard Worker   if (priority < art::palette::kMinManagedThreadPriority ||
35*795d594fSAndroid Build Coastguard Worker       priority > art::palette::kMaxManagedThreadPriority) {
36*795d594fSAndroid Build Coastguard Worker     return PALETTE_STATUS_INVALID_ARGUMENT;
37*795d594fSAndroid Build Coastguard Worker   }
38*795d594fSAndroid Build Coastguard Worker   std::lock_guard guard(g_tid_priority_map_mutex);
39*795d594fSAndroid Build Coastguard Worker   g_tid_priority_map[tid] = priority;
40*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
41*795d594fSAndroid Build Coastguard Worker }
42*795d594fSAndroid Build Coastguard Worker 
PaletteSchedGetPriority(int32_t tid,int32_t * priority)43*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteSchedGetPriority(int32_t tid,
44*795d594fSAndroid Build Coastguard Worker                                          /*out*/int32_t* priority) {
45*795d594fSAndroid Build Coastguard Worker   std::lock_guard guard(g_tid_priority_map_mutex);
46*795d594fSAndroid Build Coastguard Worker   if (g_tid_priority_map.find(tid) == g_tid_priority_map.end()) {
47*795d594fSAndroid Build Coastguard Worker     g_tid_priority_map[tid] = art::palette::kNormalManagedThreadPriority;
48*795d594fSAndroid Build Coastguard Worker   }
49*795d594fSAndroid Build Coastguard Worker   *priority = g_tid_priority_map[tid];
50*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
51*795d594fSAndroid Build Coastguard Worker }
52*795d594fSAndroid Build Coastguard Worker 
PaletteWriteCrashThreadStacks(const char * stacks,size_t stacks_len)53*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteWriteCrashThreadStacks(/*in*/ const char* stacks, size_t stacks_len) {
54*795d594fSAndroid Build Coastguard Worker   LOG(INFO) << std::string_view(stacks, stacks_len);
55*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
56*795d594fSAndroid Build Coastguard Worker }
57*795d594fSAndroid Build Coastguard Worker 
PaletteTraceEnabled(bool * enabled)58*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteTraceEnabled(/*out*/bool* enabled) {
59*795d594fSAndroid Build Coastguard Worker   *enabled = false;
60*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
61*795d594fSAndroid Build Coastguard Worker }
62*795d594fSAndroid Build Coastguard Worker 
PaletteTraceBegin(const char * name)63*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteTraceBegin([[maybe_unused]] const char* name) { return PALETTE_STATUS_OK; }
64*795d594fSAndroid Build Coastguard Worker 
PaletteTraceEnd()65*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteTraceEnd() {
66*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
67*795d594fSAndroid Build Coastguard Worker }
68*795d594fSAndroid Build Coastguard Worker 
PaletteTraceIntegerValue(const char * name,int32_t value)69*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteTraceIntegerValue([[maybe_unused]] const char* name,
70*795d594fSAndroid Build Coastguard Worker                                           [[maybe_unused]] int32_t value) {
71*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
72*795d594fSAndroid Build Coastguard Worker }
73*795d594fSAndroid Build Coastguard Worker 
PaletteAshmemCreateRegion(const char * name,size_t size,int * fd)74*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteAshmemCreateRegion([[maybe_unused]] const char* name,
75*795d594fSAndroid Build Coastguard Worker                                            [[maybe_unused]] size_t size,
76*795d594fSAndroid Build Coastguard Worker                                            int* fd) {
77*795d594fSAndroid Build Coastguard Worker   *fd = -1;
78*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_NOT_SUPPORTED;
79*795d594fSAndroid Build Coastguard Worker }
80*795d594fSAndroid Build Coastguard Worker 
PaletteAshmemSetProtRegion(int fd,int prot)81*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteAshmemSetProtRegion([[maybe_unused]] int fd, [[maybe_unused]] int prot) {
82*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_NOT_SUPPORTED;
83*795d594fSAndroid Build Coastguard Worker }
84*795d594fSAndroid Build Coastguard Worker 
PaletteCreateOdrefreshStagingDirectory(const char ** staging_dir)85*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteCreateOdrefreshStagingDirectory(const char** staging_dir) {
86*795d594fSAndroid Build Coastguard Worker   *staging_dir = nullptr;
87*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_NOT_SUPPORTED;
88*795d594fSAndroid Build Coastguard Worker }
89*795d594fSAndroid Build Coastguard Worker 
PaletteShouldReportDex2oatCompilation(bool * value)90*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteShouldReportDex2oatCompilation(bool* value) {
91*795d594fSAndroid Build Coastguard Worker   *value = false;
92*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
93*795d594fSAndroid Build Coastguard Worker }
94*795d594fSAndroid Build Coastguard Worker 
PaletteNotifyStartDex2oatCompilation(int source_fd,int art_fd,int oat_fd,int vdex_fd)95*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteNotifyStartDex2oatCompilation([[maybe_unused]] int source_fd,
96*795d594fSAndroid Build Coastguard Worker                                                       [[maybe_unused]] int art_fd,
97*795d594fSAndroid Build Coastguard Worker                                                       [[maybe_unused]] int oat_fd,
98*795d594fSAndroid Build Coastguard Worker                                                       [[maybe_unused]] int vdex_fd) {
99*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
100*795d594fSAndroid Build Coastguard Worker }
101*795d594fSAndroid Build Coastguard Worker 
PaletteNotifyEndDex2oatCompilation(int source_fd,int art_fd,int oat_fd,int vdex_fd)102*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteNotifyEndDex2oatCompilation([[maybe_unused]] int source_fd,
103*795d594fSAndroid Build Coastguard Worker                                                     [[maybe_unused]] int art_fd,
104*795d594fSAndroid Build Coastguard Worker                                                     [[maybe_unused]] int oat_fd,
105*795d594fSAndroid Build Coastguard Worker                                                     [[maybe_unused]] int vdex_fd) {
106*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
107*795d594fSAndroid Build Coastguard Worker }
108*795d594fSAndroid Build Coastguard Worker 
PaletteNotifyDexFileLoaded(const char * path)109*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteNotifyDexFileLoaded([[maybe_unused]] const char* path) {
110*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
111*795d594fSAndroid Build Coastguard Worker }
112*795d594fSAndroid Build Coastguard Worker 
PaletteNotifyOatFileLoaded(const char * path)113*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteNotifyOatFileLoaded([[maybe_unused]] const char* path) {
114*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
115*795d594fSAndroid Build Coastguard Worker }
116*795d594fSAndroid Build Coastguard Worker 
PaletteShouldReportJniInvocations(bool * value)117*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteShouldReportJniInvocations(bool* value) {
118*795d594fSAndroid Build Coastguard Worker   *value = false;
119*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
120*795d594fSAndroid Build Coastguard Worker }
121*795d594fSAndroid Build Coastguard Worker 
PaletteNotifyBeginJniInvocation(JNIEnv * env)122*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteNotifyBeginJniInvocation([[maybe_unused]] JNIEnv* env) {
123*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
124*795d594fSAndroid Build Coastguard Worker }
125*795d594fSAndroid Build Coastguard Worker 
PaletteNotifyEndJniInvocation(JNIEnv * env)126*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteNotifyEndJniInvocation([[maybe_unused]] JNIEnv* env) {
127*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
128*795d594fSAndroid Build Coastguard Worker }
129*795d594fSAndroid Build Coastguard Worker 
130*795d594fSAndroid Build Coastguard Worker // Introduced in version 2 API, corresponding to SDK level 33.
PaletteReportLockContention(JNIEnv * env,int32_t wait_ms,const char * filename,int32_t line_number,const char * method_name,const char * owner_filename,int32_t owner_line_number,const char * owner_method_name,const char * proc_name,const char * thread_name)131*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteReportLockContention([[maybe_unused]] JNIEnv* env,
132*795d594fSAndroid Build Coastguard Worker                                              [[maybe_unused]] int32_t wait_ms,
133*795d594fSAndroid Build Coastguard Worker                                              [[maybe_unused]] const char* filename,
134*795d594fSAndroid Build Coastguard Worker                                              [[maybe_unused]] int32_t line_number,
135*795d594fSAndroid Build Coastguard Worker                                              [[maybe_unused]] const char* method_name,
136*795d594fSAndroid Build Coastguard Worker                                              [[maybe_unused]] const char* owner_filename,
137*795d594fSAndroid Build Coastguard Worker                                              [[maybe_unused]] int32_t owner_line_number,
138*795d594fSAndroid Build Coastguard Worker                                              [[maybe_unused]] const char* owner_method_name,
139*795d594fSAndroid Build Coastguard Worker                                              [[maybe_unused]] const char* proc_name,
140*795d594fSAndroid Build Coastguard Worker                                              [[maybe_unused]] const char* thread_name) {
141*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
142*795d594fSAndroid Build Coastguard Worker }
143*795d594fSAndroid Build Coastguard Worker 
144*795d594fSAndroid Build Coastguard Worker // Introduced in version 3 API, corresponding to SDK level 34.
PaletteSetTaskProfiles(int32_t tid,const char * const profiles[],size_t profiles_len)145*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteSetTaskProfiles([[maybe_unused]] int32_t tid,
146*795d594fSAndroid Build Coastguard Worker                                         [[maybe_unused]] const char* const profiles[],
147*795d594fSAndroid Build Coastguard Worker                                         [[maybe_unused]] size_t profiles_len) {
148*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
149*795d594fSAndroid Build Coastguard Worker }
150*795d594fSAndroid Build Coastguard Worker 
151*795d594fSAndroid Build Coastguard Worker // Methods in version 4 API, corresponding to SDK level 36.
PaletteDebugStoreGetString(char * result,size_t max_size)152*795d594fSAndroid Build Coastguard Worker palette_status_t PaletteDebugStoreGetString([[maybe_unused]] char* result,
153*795d594fSAndroid Build Coastguard Worker                                             [[maybe_unused]] size_t max_size) {
154*795d594fSAndroid Build Coastguard Worker   return PALETTE_STATUS_OK;
155*795d594fSAndroid Build Coastguard Worker }
156