Loading cmds/servicemanager/main.cpp +10 −4 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ #include <android-base/logging.h> #include <android-base/properties.h> #include <binder/IPCThreadState.h> #include <binder/ProcessState.h> #include <binder/Status.h> Loading @@ -26,15 +27,14 @@ #include "ServiceManager.h" using ::android::Access; using ::android::sp; using ::android::IPCThreadState; using ::android::Looper; using ::android::LooperCallback; using ::android::ProcessState; using ::android::IPCThreadState; using ::android::ProcessState; using ::android::ServiceManager; using ::android::os::IServiceManager; using ::android::sp; using ::android::base::SetProperty; using ::android::os::IServiceManager; class BinderCallback : public LooperCallback { public: Loading Loading @@ -140,6 +140,12 @@ int main(int argc, char** argv) { BinderCallback::setupTo(looper); ClientCallbackCallback::setupTo(looper, manager); #ifndef VENDORSERVICEMANAGER if (!SetProperty("servicemanager.ready", "true")) { LOG(ERROR) << "Failed to set servicemanager ready property"; } #endif while(true) { looper->pollAll(-1); } Loading cmds/servicemanager/servicemanager.microdroid.rc +1 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ service servicemanager /system/bin/servicemanager.microdroid user system group system readproc critical onrestart setprop servicemanager.ready false onrestart restart apexd task_profiles ServiceCapacityLow shutdown critical cmds/servicemanager/servicemanager.rc +1 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ service servicemanager /system/bin/servicemanager user system group system readproc critical onrestart setprop servicemanager.ready false onrestart restart apexd onrestart restart audioserver onrestart restart gatekeeperd Loading cmds/servicemanager/servicemanager.recovery.rc +1 −0 Original line number Diff line number Diff line service servicemanager /system/bin/servicemanager disabled group system readproc onrestart setprop servicemanager.ready false seclabel u:r:servicemanager:s0 libs/binder/IServiceManager.cpp +11 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <inttypes.h> #include <unistd.h> #include <android-base/properties.h> #include <android/os/BnServiceCallback.h> #include <android/os/IServiceManager.h> #include <binder/IPCThreadState.h> Loading Loading @@ -140,6 +141,16 @@ protected: sp<IServiceManager> defaultServiceManager() { std::call_once(gSmOnce, []() { #if defined(__BIONIC__) && !defined(__ANDROID_VNDK__) /* wait for service manager */ { using std::literals::chrono_literals::operator""s; using android::base::WaitForProperty; while (!WaitForProperty("servicemanager.ready", "true", 1s)) { ALOGE("Waited for servicemanager.ready for a second, waiting another..."); } } #endif sp<AidlServiceManager> sm = nullptr; while (sm == nullptr) { sm = interface_cast<AidlServiceManager>(ProcessState::self()->getContextObject(nullptr)); Loading Loading
cmds/servicemanager/main.cpp +10 −4 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ #include <android-base/logging.h> #include <android-base/properties.h> #include <binder/IPCThreadState.h> #include <binder/ProcessState.h> #include <binder/Status.h> Loading @@ -26,15 +27,14 @@ #include "ServiceManager.h" using ::android::Access; using ::android::sp; using ::android::IPCThreadState; using ::android::Looper; using ::android::LooperCallback; using ::android::ProcessState; using ::android::IPCThreadState; using ::android::ProcessState; using ::android::ServiceManager; using ::android::os::IServiceManager; using ::android::sp; using ::android::base::SetProperty; using ::android::os::IServiceManager; class BinderCallback : public LooperCallback { public: Loading Loading @@ -140,6 +140,12 @@ int main(int argc, char** argv) { BinderCallback::setupTo(looper); ClientCallbackCallback::setupTo(looper, manager); #ifndef VENDORSERVICEMANAGER if (!SetProperty("servicemanager.ready", "true")) { LOG(ERROR) << "Failed to set servicemanager ready property"; } #endif while(true) { looper->pollAll(-1); } Loading
cmds/servicemanager/servicemanager.microdroid.rc +1 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ service servicemanager /system/bin/servicemanager.microdroid user system group system readproc critical onrestart setprop servicemanager.ready false onrestart restart apexd task_profiles ServiceCapacityLow shutdown critical
cmds/servicemanager/servicemanager.rc +1 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ service servicemanager /system/bin/servicemanager user system group system readproc critical onrestart setprop servicemanager.ready false onrestart restart apexd onrestart restart audioserver onrestart restart gatekeeperd Loading
cmds/servicemanager/servicemanager.recovery.rc +1 −0 Original line number Diff line number Diff line service servicemanager /system/bin/servicemanager disabled group system readproc onrestart setprop servicemanager.ready false seclabel u:r:servicemanager:s0
libs/binder/IServiceManager.cpp +11 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <inttypes.h> #include <unistd.h> #include <android-base/properties.h> #include <android/os/BnServiceCallback.h> #include <android/os/IServiceManager.h> #include <binder/IPCThreadState.h> Loading Loading @@ -140,6 +141,16 @@ protected: sp<IServiceManager> defaultServiceManager() { std::call_once(gSmOnce, []() { #if defined(__BIONIC__) && !defined(__ANDROID_VNDK__) /* wait for service manager */ { using std::literals::chrono_literals::operator""s; using android::base::WaitForProperty; while (!WaitForProperty("servicemanager.ready", "true", 1s)) { ALOGE("Waited for servicemanager.ready for a second, waiting another..."); } } #endif sp<AidlServiceManager> sm = nullptr; while (sm == nullptr) { sm = interface_cast<AidlServiceManager>(ProcessState::self()->getContextObject(nullptr)); Loading