Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b560e6db authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "fix: ATRACE does not work for libs loaded in sphal namespace" into oc-dev

parents be4302bf 0b3c24bd
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@ cc_library {
                "libcutils",
                "libdl",
                "liblog",
                "libvndksupport",
            ],

            sanitize: {
+36 −2
Original line number Diff line number Diff line
@@ -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 −1
Original line number Diff line number Diff line
subdirs = ["tests"]

cc_library_shared {
cc_library {
    name: "libvndksupport",
    srcs: ["linker.c"],
    local_include_dirs: ["include/vndksupport"],