Merge "fix: ATRACE does not work for libs loaded in sphal namespace" into oc-dev
This commit is contained in:
commit
b560e6db6a
|
@ -94,6 +94,7 @@ cc_library {
|
|||
"libcutils",
|
||||
"libdl",
|
||||
"liblog",
|
||||
"libvndksupport",
|
||||
],
|
||||
|
||||
sanitize: {
|
||||
|
|
|
@ -23,6 +23,13 @@
|
|||
#include <utils/Log.h>
|
||||
#include <utils/Vector.h>
|
||||
|
||||
#if defined(__ANDROID__)
|
||||
#include <dlfcn.h>
|
||||
#include <vndksupport/linker.h>
|
||||
#endif
|
||||
|
||||
extern "C" void do_report_sysprop_change();
|
||||
|
||||
using namespace android;
|
||||
|
||||
namespace android {
|
||||
|
@ -61,7 +68,36 @@ void add_sysprop_change_callback(sysprop_change_callback cb, int priority) {
|
|||
#endif
|
||||
}
|
||||
|
||||
#if defined(__ANDROID__)
|
||||
void (*get_report_sysprop_change_func())() {
|
||||
void (*func)() = nullptr;
|
||||
void* handle = android_load_sphal_library("libutils.so", RTLD_NOW);
|
||||
if (handle != nullptr) {
|
||||
func = reinterpret_cast<decltype(func)>(dlsym(handle, "do_report_sysprop_change"));
|
||||
}
|
||||
|
||||
return func;
|
||||
}
|
||||
#endif
|
||||
|
||||
void report_sysprop_change() {
|
||||
do_report_sysprop_change();
|
||||
|
||||
#if defined(__ANDROID__)
|
||||
// libutils.so is double loaded; from the default namespace and from the
|
||||
// 'sphal' namespace. Redirect the sysprop change event to the other instance
|
||||
// of libutils.so loaded in the 'sphal' namespace so that listeners attached
|
||||
// to that instance is also notified with this event.
|
||||
static auto func = get_report_sysprop_change_func();
|
||||
if (func != nullptr) {
|
||||
(*func)();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
}; // namespace android
|
||||
|
||||
void do_report_sysprop_change() {
|
||||
#if !defined(_WIN32)
|
||||
pthread_mutex_lock(&gSyspropMutex);
|
||||
Vector<sysprop_change_callback_info> listeners;
|
||||
|
@ -76,5 +112,3 @@ void report_sysprop_change() {
|
|||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
}; // namespace android
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
subdirs = ["tests"]
|
||||
|
||||
cc_library_shared {
|
||||
cc_library {
|
||||
name: "libvndksupport",
|
||||
srcs: ["linker.c"],
|
||||
local_include_dirs: ["include/vndksupport"],
|
||||
|
|
Loading…
Reference in New Issue