1*795d594fSAndroid Build Coastguard Worker /* 2*795d594fSAndroid Build Coastguard Worker * Copyright (C) 2020 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 #ifndef ART_ODREFRESH_ODR_COMMON_H_ 18*795d594fSAndroid Build Coastguard Worker #define ART_ODREFRESH_ODR_COMMON_H_ 19*795d594fSAndroid Build Coastguard Worker 20*795d594fSAndroid Build Coastguard Worker #include <initializer_list> 21*795d594fSAndroid Build Coastguard Worker #include <string> 22*795d594fSAndroid Build Coastguard Worker #include <string_view> 23*795d594fSAndroid Build Coastguard Worker 24*795d594fSAndroid Build Coastguard Worker #include "android-base/result.h" 25*795d594fSAndroid Build Coastguard Worker 26*795d594fSAndroid Build Coastguard Worker namespace art { 27*795d594fSAndroid Build Coastguard Worker namespace odrefresh { 28*795d594fSAndroid Build Coastguard Worker 29*795d594fSAndroid Build Coastguard Worker // Quotes a path with single quotes ('). 30*795d594fSAndroid Build Coastguard Worker std::string QuotePath(std::string_view path); 31*795d594fSAndroid Build Coastguard Worker 32*795d594fSAndroid Build Coastguard Worker // Converts the security patch date to a comparable integer. 33*795d594fSAndroid Build Coastguard Worker android::base::Result<int> ParseSecurityPatchStr(const std::string& security_patch_str); 34*795d594fSAndroid Build Coastguard Worker 35*795d594fSAndroid Build Coastguard Worker // Returns true if partial compilation should be disabled. Takes a string from 36*795d594fSAndroid Build Coastguard Worker // `ro.build.version.security_patch`, which represents the security patch date. 37*795d594fSAndroid Build Coastguard Worker bool ShouldDisablePartialCompilation(const std::string& security_patch_str); 38*795d594fSAndroid Build Coastguard Worker 39*795d594fSAndroid Build Coastguard Worker // Returns true if there is no need to load existing artifacts that are already up-to-date and write 40*795d594fSAndroid Build Coastguard Worker // them back. See `OnDeviceRefresh::RefreshExistingArtifacts` for more details. Takes a string from 41*795d594fSAndroid Build Coastguard Worker // `ro.build.version.sdk`, which represents the SDK version. 42*795d594fSAndroid Build Coastguard Worker bool ShouldDisableRefresh(const std::string& sdk_version_str); 43*795d594fSAndroid Build Coastguard Worker 44*795d594fSAndroid Build Coastguard Worker // Passes the name and the value for each system property to the provided callback. 45*795d594fSAndroid Build Coastguard Worker void SystemPropertyForeach(std::function<void(const char* name, const char* value)> action); 46*795d594fSAndroid Build Coastguard Worker 47*795d594fSAndroid Build Coastguard Worker // Returns true if the build-time UFFD GC matches the runtime's choice. 48*795d594fSAndroid Build Coastguard Worker bool CheckBuildUserfaultFdGc(bool build_enable_uffd_gc, 49*795d594fSAndroid Build Coastguard Worker bool is_at_most_u, 50*795d594fSAndroid Build Coastguard Worker bool kernel_supports_uffd); 51*795d594fSAndroid Build Coastguard Worker 52*795d594fSAndroid Build Coastguard Worker } // namespace odrefresh 53*795d594fSAndroid Build Coastguard Worker } // namespace art 54*795d594fSAndroid Build Coastguard Worker 55*795d594fSAndroid Build Coastguard Worker #endif // ART_ODREFRESH_ODR_COMMON_H_ 56