xref: /aosp_15_r20/system/libhidl/base/HidlInternal.cpp (revision 8222fbe171c3d6fadfe95119c180cf3010c392a8)
1*8222fbe1SAndroid Build Coastguard Worker /*
2*8222fbe1SAndroid Build Coastguard Worker  * Copyright (C) 2016 The Android Open Source Project
3*8222fbe1SAndroid Build Coastguard Worker  *
4*8222fbe1SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*8222fbe1SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*8222fbe1SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*8222fbe1SAndroid Build Coastguard Worker  *
8*8222fbe1SAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*8222fbe1SAndroid Build Coastguard Worker  *
10*8222fbe1SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*8222fbe1SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*8222fbe1SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*8222fbe1SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*8222fbe1SAndroid Build Coastguard Worker  * limitations under the License.
15*8222fbe1SAndroid Build Coastguard Worker  */
16*8222fbe1SAndroid Build Coastguard Worker 
17*8222fbe1SAndroid Build Coastguard Worker #define LOG_TAG "HidlInternal"
18*8222fbe1SAndroid Build Coastguard Worker 
19*8222fbe1SAndroid Build Coastguard Worker #include <hidl/HidlInternal.h>
20*8222fbe1SAndroid Build Coastguard Worker 
21*8222fbe1SAndroid Build Coastguard Worker #ifdef __ANDROID__
22*8222fbe1SAndroid Build Coastguard Worker #include <android/api-level.h>
23*8222fbe1SAndroid Build Coastguard Worker #endif
24*8222fbe1SAndroid Build Coastguard Worker #include <android-base/logging.h>
25*8222fbe1SAndroid Build Coastguard Worker #include <android-base/properties.h>
26*8222fbe1SAndroid Build Coastguard Worker #include <android-base/stringprintf.h>
27*8222fbe1SAndroid Build Coastguard Worker 
28*8222fbe1SAndroid Build Coastguard Worker namespace android {
29*8222fbe1SAndroid Build Coastguard Worker namespace hardware {
30*8222fbe1SAndroid Build Coastguard Worker namespace details {
31*8222fbe1SAndroid Build Coastguard Worker 
logAlwaysFatal(const char * message)32*8222fbe1SAndroid Build Coastguard Worker void logAlwaysFatal(const char* message) {
33*8222fbe1SAndroid Build Coastguard Worker     LOG(FATAL) << message;
34*8222fbe1SAndroid Build Coastguard Worker }
35*8222fbe1SAndroid Build Coastguard Worker 
getVndkSpHwPath(const char * lib)36*8222fbe1SAndroid Build Coastguard Worker std::string getVndkSpHwPath(const char* lib) {
37*8222fbe1SAndroid Build Coastguard Worker     static std::string vndk_version = base::GetProperty("ro.vndk.version", "");
38*8222fbe1SAndroid Build Coastguard Worker #ifdef __ANDROID__
39*8222fbe1SAndroid Build Coastguard Worker     static int api_level = android_get_device_api_level();
40*8222fbe1SAndroid Build Coastguard Worker     if (api_level >= __ANDROID_API_R__) {
41*8222fbe1SAndroid Build Coastguard Worker         return android::base::StringPrintf("/apex/com.android.vndk.v%s/%s/hw/",
42*8222fbe1SAndroid Build Coastguard Worker                                            vndk_version.c_str(), lib);
43*8222fbe1SAndroid Build Coastguard Worker     }
44*8222fbe1SAndroid Build Coastguard Worker #endif
45*8222fbe1SAndroid Build Coastguard Worker     return android::base::StringPrintf("/system/%s/vndk-sp-%s/hw/", lib, vndk_version.c_str());
46*8222fbe1SAndroid Build Coastguard Worker }
47*8222fbe1SAndroid Build Coastguard Worker 
48*8222fbe1SAndroid Build Coastguard Worker // ----------------------------------------------------------------------
49*8222fbe1SAndroid Build Coastguard Worker // HidlInstrumentor implementation.
HidlInstrumentor(const std::string & package,const std::string & interface)50*8222fbe1SAndroid Build Coastguard Worker HidlInstrumentor::HidlInstrumentor(const std::string& package, const std::string& interface)
51*8222fbe1SAndroid Build Coastguard Worker     : mEnableInstrumentation(false),
52*8222fbe1SAndroid Build Coastguard Worker       mInstrumentationLibPackage(package),
53*8222fbe1SAndroid Build Coastguard Worker       mInterfaceName(interface) {}
54*8222fbe1SAndroid Build Coastguard Worker 
~HidlInstrumentor()55*8222fbe1SAndroid Build Coastguard Worker HidlInstrumentor::~HidlInstrumentor() {}
56*8222fbe1SAndroid Build Coastguard Worker 
configureInstrumentation(bool log)57*8222fbe1SAndroid Build Coastguard Worker void HidlInstrumentor::configureInstrumentation(bool log) {
58*8222fbe1SAndroid Build Coastguard Worker     mEnableInstrumentation = base::GetBoolProperty("hal.instrumentation.enable", false);
59*8222fbe1SAndroid Build Coastguard Worker     if (mEnableInstrumentation) {
60*8222fbe1SAndroid Build Coastguard Worker         if (log) {
61*8222fbe1SAndroid Build Coastguard Worker             LOG(INFO) << "Enable instrumentation.";
62*8222fbe1SAndroid Build Coastguard Worker         }
63*8222fbe1SAndroid Build Coastguard Worker         mInstrumentationCallbacks.clear();
64*8222fbe1SAndroid Build Coastguard Worker         registerInstrumentationCallbacks(&mInstrumentationCallbacks);
65*8222fbe1SAndroid Build Coastguard Worker     } else {
66*8222fbe1SAndroid Build Coastguard Worker         if (log) {
67*8222fbe1SAndroid Build Coastguard Worker             LOG(INFO) << "Disable instrumentation.";
68*8222fbe1SAndroid Build Coastguard Worker         }
69*8222fbe1SAndroid Build Coastguard Worker         mInstrumentationCallbacks.clear();
70*8222fbe1SAndroid Build Coastguard Worker     }
71*8222fbe1SAndroid Build Coastguard Worker }
72*8222fbe1SAndroid Build Coastguard Worker 
registerInstrumentationCallbacks(std::vector<InstrumentationCallback> * instrumentationCallbacks)73*8222fbe1SAndroid Build Coastguard Worker void HidlInstrumentor::registerInstrumentationCallbacks(
74*8222fbe1SAndroid Build Coastguard Worker         std::vector<InstrumentationCallback> *instrumentationCallbacks) {
75*8222fbe1SAndroid Build Coastguard Worker     // No-op, historical
76*8222fbe1SAndroid Build Coastguard Worker     (void) instrumentationCallbacks;
77*8222fbe1SAndroid Build Coastguard Worker     return;
78*8222fbe1SAndroid Build Coastguard Worker }
79*8222fbe1SAndroid Build Coastguard Worker 
isInstrumentationLib(const dirent * file)80*8222fbe1SAndroid Build Coastguard Worker bool HidlInstrumentor::isInstrumentationLib(const dirent *file) {
81*8222fbe1SAndroid Build Coastguard Worker     (void) file;
82*8222fbe1SAndroid Build Coastguard Worker     return false;
83*8222fbe1SAndroid Build Coastguard Worker }
84*8222fbe1SAndroid Build Coastguard Worker 
85*8222fbe1SAndroid Build Coastguard Worker }  // namespace details
86*8222fbe1SAndroid Build Coastguard Worker }  // namespace hardware
87*8222fbe1SAndroid Build Coastguard Worker }  // namespace android
88