diff options
author | Peter Kalauskas <peskal@google.com> | 2018-11-05 12:05:29 -0800 |
---|---|---|
committer | Peter Kalauskas <peskal@google.com> | 2018-11-28 11:56:04 -0800 |
commit | f646be06ed5c37ca8fa7b5b6f446c162e948edd9 (patch) | |
tree | e7ff50b45660d35c1b63a1e3b81b159c6d59a4d6 /cas | |
parent | f919d0a0b8bf63e8355c4416b3761c0d79d22cc7 (diff) | |
download | android_hardware_interfaces-f646be06ed5c37ca8fa7b5b6f446c162e948edd9.tar.gz android_hardware_interfaces-f646be06ed5c37ca8fa7b5b6f446c162e948edd9.tar.bz2 android_hardware_interfaces-f646be06ed5c37ca8fa7b5b6f446c162e948edd9.zip |
Add separate lazy service target to cas
Test: Run cts test android.media.cts.MediaCasTest
Bug: 119050069
Change-Id: I5117e4d10931affe85f2a0bb437d2fefb291e18f
Diffstat (limited to 'cas')
-rw-r--r-- | cas/1.0/default/Android.bp | 22 | ||||
-rw-r--r-- | cas/1.0/default/android.hardware.cas@1.0-service-lazy.rc | 9 | ||||
-rw-r--r-- | cas/1.0/default/android.hardware.cas@1.0-service-lazy.xml | 11 | ||||
-rw-r--r-- | cas/1.0/default/service.cpp | 32 |
4 files changed, 59 insertions, 15 deletions
diff --git a/cas/1.0/default/Android.bp b/cas/1.0/default/Android.bp index a80c47f6f..debb3e5be 100644 --- a/cas/1.0/default/Android.bp +++ b/cas/1.0/default/Android.bp @@ -1,6 +1,5 @@ -cc_binary { - name: "android.hardware.cas@1.0-service", - vintf_fragments: ["android.hardware.cas@1.0-service.xml"], +cc_defaults { + name: "cas_service_defaults", defaults: ["hidl_defaults"], vendor: true, relative_install_path: "hw", @@ -14,7 +13,6 @@ cc_binary { ], compile_multilib: "32", - init_rc: ["android.hardware.cas@1.0-service.rc"], shared_libs: [ "android.hardware.cas@1.0", @@ -32,3 +30,19 @@ cc_binary { "media_plugin_headers", ], } + +cc_binary { + name: "android.hardware.cas@1.0-service", + vintf_fragments: ["android.hardware.cas@1.0-service.xml"], + defaults: ["cas_service_defaults"], + init_rc: ["android.hardware.cas@1.0-service.rc"], +} + +cc_binary { + name: "android.hardware.cas@1.0-service-lazy", + vintf_fragments: ["android.hardware.cas@1.0-service-lazy.xml"], + overrides: ["android.hardware.cas@1.0-service"], + defaults: ["cas_service_defaults"], + init_rc: ["android.hardware.cas@1.0-service-lazy.rc"], + cflags: ["-DLAZY_SERVICE"], +} diff --git a/cas/1.0/default/android.hardware.cas@1.0-service-lazy.rc b/cas/1.0/default/android.hardware.cas@1.0-service-lazy.rc new file mode 100644 index 000000000..735cfbc39 --- /dev/null +++ b/cas/1.0/default/android.hardware.cas@1.0-service-lazy.rc @@ -0,0 +1,9 @@ +service vendor.cas-hal-1-0 /vendor/bin/hw/android.hardware.cas@1.0-service + interface android.hardware.cas@1.0::IMediaCasService default + oneshot + disabled + class hal + user media + group mediadrm drmrpc + ioprio rt 4 + writepid /dev/cpuset/foreground/tasks diff --git a/cas/1.0/default/android.hardware.cas@1.0-service-lazy.xml b/cas/1.0/default/android.hardware.cas@1.0-service-lazy.xml new file mode 100644 index 000000000..9b55370f0 --- /dev/null +++ b/cas/1.0/default/android.hardware.cas@1.0-service-lazy.xml @@ -0,0 +1,11 @@ +<manifest version="1.0" type="device"> + <hal format="hidl"> + <name>android.hardware.cas</name> + <transport>hwbinder</transport> + <version>1.0</version> + <interface> + <name>IMediaCasService</name> + <instance>default</instance> + </interface> + </hal> +</manifest> diff --git a/cas/1.0/default/service.cpp b/cas/1.0/default/service.cpp index 04a8ad972..2e6e55d1a 100644 --- a/cas/1.0/default/service.cpp +++ b/cas/1.0/default/service.cpp @@ -15,7 +15,11 @@ */ //#define LOG_NDEBUG 0 +#ifdef LAZY_SERVICE +#define LOG_TAG "android.hardware.cas@1.0-service-lazy" +#else #define LOG_TAG "android.hardware.cas@1.0-service" +#endif #include <binder/ProcessState.h> #include <hidl/HidlTransportSupport.h> @@ -25,24 +29,30 @@ using android::hardware::configureRpcThreadpool; using android::hardware::joinRpcThreadpool; -using android::hardware::cas::V1_0::implementation::MediaCasService; +using android::hardware::LazyServiceRegistrar; using android::hardware::cas::V1_0::IMediaCasService; +using android::hardware::cas::V1_0::implementation::MediaCasService; -int main() { - ALOGD("android.hardware.cas@1.0-service starting..."); - - // The CAS HAL may communicate to other vendor components via - // /dev/vndbinder - android::ProcessState::initWithDriver("/dev/vndbinder"); +#ifdef LAZY_SERVICE +const bool kLazyService = true; +#else +const bool kLazyService = false; +#endif +int main() { configureRpcThreadpool(8, true /* callerWillJoin */); // Setup hwbinder service android::sp<IMediaCasService> service = new MediaCasService(); - android::status_t status = service->registerAsService(); - LOG_ALWAYS_FATAL_IF( - status != android::OK, - "Error while registering cas service: %d", status); + android::status_t status; + if (kLazyService) { + auto serviceRegistrar = std::make_shared<LazyServiceRegistrar>(); + status = serviceRegistrar->registerServiceWithCallback(service); + } else { + status = service->registerAsService(); + } + LOG_ALWAYS_FATAL_IF(status != android::OK, "Error while registering cas service: %d", status); + joinRpcThreadpool(); return 0; } |