summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevin Moore <devinmoore@google.com>2023-11-28 03:51:56 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-11-28 03:51:56 +0000
commita4db4b7dbfe4fb2f6375db2e171c6b205c19492f (patch)
treecdb52d34d3ea1b2550e3dedb69fc200ee2b99d3c
parentdb1e42e87fb4655a9bce074d79991886d5927ece (diff)
parentff1f244101a87996bf931d9639de4932845d4374 (diff)
downloadhwservicemanager-a4db4b7dbfe4fb2f6375db2e171c6b205c19492f.tar.gz
Exit if HIDL isn't supported am: 523130f03f am: a0bc77968e am: ff1f244101
Original change: https://android-review.googlesource.com/c/platform/system/hwservicemanager/+/2847715 Change-Id: I9769e675c07be931507229d3f4c35723f185cc35 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--hwservicemanager.rc3
-rw-r--r--service.cpp13
2 files changed, 16 insertions, 0 deletions
diff --git a/hwservicemanager.rc b/hwservicemanager.rc
index 7ad492b..ce4db63 100644
--- a/hwservicemanager.rc
+++ b/hwservicemanager.rc
@@ -10,3 +10,6 @@ service hwservicemanager /system/system_ext/bin/hwservicemanager
task_profiles ServiceCapacityLow HighPerformance
class animation
shutdown critical
+
+on property:hwservicemanager.disabled=true
+ stop hwservicemanager
diff --git a/service.cpp b/service.cpp
index 3fc1391..3766bc5 100644
--- a/service.cpp
+++ b/service.cpp
@@ -26,6 +26,7 @@
#include <cutils/properties.h>
#include <hidl/HidlBinderSupport.h>
#include <hidl/HidlTransportSupport.h>
+#include <hidl/ServiceManagement.h>
#include <hidl/Status.h>
#include <hwbinder/IPCThreadState.h>
#include <hwbinder/ProcessState.h>
@@ -145,6 +146,18 @@ int main() {
// TODO(b/36424585): make fatal
ProcessState::self()->setCallRestriction(ProcessState::CallRestriction::ERROR_IF_NOT_ONEWAY);
+ if (!android::hardware::isHidlSupported()) {
+ ALOGI("HIDL is not supported on this device so hwservicemanager is not needed");
+ int rc = property_set("hwservicemanager.disabled", "true");
+ if (rc) {
+ LOG_ALWAYS_FATAL("Failed to set \"hwservicemanager.disabled\" (error %d).\"", rc);
+ }
+ // wait here for init to see the proprty and shut us down
+ while (true) {
+ ALOGW("Waiting on init to shut this process down.");
+ sleep(10);
+ }
+ }
sp<ServiceManager> manager = new ServiceManager();
setRequestingSid(manager, true);