1*b9df5ad1SAndroid Build Coastguard Worker /* 2*b9df5ad1SAndroid Build Coastguard Worker * Copyright (C) 2023 The Android Open Source Project 3*b9df5ad1SAndroid Build Coastguard Worker * 4*b9df5ad1SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*b9df5ad1SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*b9df5ad1SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*b9df5ad1SAndroid Build Coastguard Worker * 8*b9df5ad1SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*b9df5ad1SAndroid Build Coastguard Worker * 10*b9df5ad1SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*b9df5ad1SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*b9df5ad1SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*b9df5ad1SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*b9df5ad1SAndroid Build Coastguard Worker * limitations under the License. 15*b9df5ad1SAndroid Build Coastguard Worker */ 16*b9df5ad1SAndroid Build Coastguard Worker 17*b9df5ad1SAndroid Build Coastguard Worker #include <audio_utils/mutex.h> 18*b9df5ad1SAndroid Build Coastguard Worker 19*b9df5ad1SAndroid Build Coastguard Worker #define LOG_TAG "audio_utils::mutex" 20*b9df5ad1SAndroid Build Coastguard Worker #include <utils/Log.h> 21*b9df5ad1SAndroid Build Coastguard Worker 22*b9df5ad1SAndroid Build Coastguard Worker #include <com_android_media_audioserver.h> 23*b9df5ad1SAndroid Build Coastguard Worker 24*b9df5ad1SAndroid Build Coastguard Worker namespace android::audio_utils { 25*b9df5ad1SAndroid Build Coastguard Worker mutex_get_enable_flag()26*b9df5ad1SAndroid Build Coastguard Workerbool mutex_get_enable_flag() { 27*b9df5ad1SAndroid Build Coastguard Worker static const bool enable = []() { 28*b9df5ad1SAndroid Build Coastguard Worker const bool flag = com::android::media::audioserver::mutex_priority_inheritance(); 29*b9df5ad1SAndroid Build Coastguard Worker ALOGD("get_enable_flag: mutex_priority_inheritance: %s", flag ? "true" : "false"); 30*b9df5ad1SAndroid Build Coastguard Worker return flag; 31*b9df5ad1SAndroid Build Coastguard Worker }(); 32*b9df5ad1SAndroid Build Coastguard Worker return enable; 33*b9df5ad1SAndroid Build Coastguard Worker } 34*b9df5ad1SAndroid Build Coastguard Worker 35*b9df5ad1SAndroid Build Coastguard Worker // Define mutex::get_mutex_stat_array here because header-only ODR inline linking 36*b9df5ad1SAndroid Build Coastguard Worker // results in multiple objects if included into multiple shared libraries. 37*b9df5ad1SAndroid Build Coastguard Worker template<> get_mutex_stat_array()38*b9df5ad1SAndroid Build Coastguard Workermutex::stat_array_t& mutex::get_mutex_stat_array() { 39*b9df5ad1SAndroid Build Coastguard Worker [[clang::no_destroy]] static constinit stat_array_t stat_array{}; 40*b9df5ad1SAndroid Build Coastguard Worker return stat_array; 41*b9df5ad1SAndroid Build Coastguard Worker } 42*b9df5ad1SAndroid Build Coastguard Worker 43*b9df5ad1SAndroid Build Coastguard Worker // Define mutex::get_registry here because header-only ODR inline linking 44*b9df5ad1SAndroid Build Coastguard Worker // results in multiple objects if included into multiple shared libraries. 45*b9df5ad1SAndroid Build Coastguard Worker template<> get_registry()46*b9df5ad1SAndroid Build Coastguard Workermutex::thread_registry_t& mutex::get_registry() { 47*b9df5ad1SAndroid Build Coastguard Worker [[clang::no_destroy]] static thread_registry_t thread_registry{}; 48*b9df5ad1SAndroid Build Coastguard Worker return thread_registry; 49*b9df5ad1SAndroid Build Coastguard Worker } 50*b9df5ad1SAndroid Build Coastguard Worker 51*b9df5ad1SAndroid Build Coastguard Worker } // namespace android::audio_utils 52