diff options
author | Peter Kalauskas <peskal@google.com> | 2018-11-14 09:38:32 -0800 |
---|---|---|
committer | Peter Kalauskas <peskal@google.com> | 2019-01-08 09:00:23 -0800 |
commit | 724a9fc6435e86d945d60209bb4f963e858b100b (patch) | |
tree | 2e399cccc6c0dbcefd83fd1a6a3a92884a03a2b5 /drm | |
parent | a885b5d982b3417c1833a2ad9b9f6fa97a325d58 (diff) | |
download | android_hardware_interfaces-724a9fc6435e86d945d60209bb4f963e858b100b.tar.gz android_hardware_interfaces-724a9fc6435e86d945d60209bb4f963e858b100b.tar.bz2 android_hardware_interfaces-724a9fc6435e86d945d60209bb4f963e858b100b.zip |
Add lazy service target for drm HAL
Test: Run gts on Pixel 1/2/3, marlin_svelte, and walleye_svelte
Bug: 112386116
Change-Id: I5d86e3158794ebae967efb009a0cef8cd140ccb7
Diffstat (limited to 'drm')
-rw-r--r-- | drm/1.0/default/Android.mk | 38 | ||||
-rw-r--r-- | drm/1.0/default/android.hardware.drm@1.0-service-lazy.rc | 10 | ||||
-rw-r--r-- | drm/1.0/default/android.hardware.drm@1.0-service.rc | 2 | ||||
-rw-r--r-- | drm/1.0/default/common_default_service.mk | 45 | ||||
-rw-r--r-- | drm/1.0/default/service.cpp | 10 | ||||
-rw-r--r-- | drm/1.0/default/serviceLazy.cpp | 40 |
6 files changed, 109 insertions, 36 deletions
diff --git a/drm/1.0/default/Android.mk b/drm/1.0/default/Android.mk index 99773be38..d66f377b5 100644 --- a/drm/1.0/default/Android.mk +++ b/drm/1.0/default/Android.mk @@ -19,39 +19,23 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) + +include $(LOCAL_PATH)/common_default_service.mk LOCAL_MODULE := android.hardware.drm@1.0-service LOCAL_INIT_RC := android.hardware.drm@1.0-service.rc -LOCAL_PROPRIETARY_MODULE := true -LOCAL_MODULE_RELATIVE_PATH := hw -LOCAL_SRC_FILES := \ - service.cpp \ +LOCAL_SRC_FILES := service.cpp -LOCAL_SHARED_LIBRARIES := \ - android.hardware.drm@1.0 \ - android.hidl.memory@1.0 \ - libhidlbase \ - libhidltransport \ - libhardware \ - liblog \ - libutils \ - libbinder \ - -LOCAL_STATIC_LIBRARIES := \ - android.hardware.drm@1.0-helper \ +include $(BUILD_EXECUTABLE) -LOCAL_C_INCLUDES := \ - hardware/interfaces/drm +############# Build legacy drm lazy service ############ -LOCAL_HEADER_LIBRARIES := \ - media_plugin_headers +include $(CLEAR_VARS) -# TODO(b/18948909) Some legacy DRM plugins only support 32-bit. They need to be -# migrated to 64-bit. Once all of a device's legacy DRM plugins support 64-bit, -# that device can turn on TARGET_ENABLE_MEDIADRM_64 to build this service as -# 64-bit. -ifneq ($(TARGET_ENABLE_MEDIADRM_64), true) -LOCAL_32_BIT_ONLY := true -endif +include $(LOCAL_PATH)/common_default_service.mk +LOCAL_MODULE := android.hardware.drm@1.0-service-lazy +LOCAL_OVERRIDES_MODULES := android.hardware.drm@1.0-service +LOCAL_INIT_RC := android.hardware.drm@1.0-service-lazy.rc +LOCAL_SRC_FILES := serviceLazy.cpp include $(BUILD_EXECUTABLE) diff --git a/drm/1.0/default/android.hardware.drm@1.0-service-lazy.rc b/drm/1.0/default/android.hardware.drm@1.0-service-lazy.rc new file mode 100644 index 000000000..4b32f7f1f --- /dev/null +++ b/drm/1.0/default/android.hardware.drm@1.0-service-lazy.rc @@ -0,0 +1,10 @@ +service vendor.drm-hal-1-0 /vendor/bin/hw/android.hardware.drm@1.0-service-lazy + interface android.hardware.drm@1.0::ICryptoFactory default + interface android.hardware.drm@1.0::IDrmFactory default + oneshot + disabled + class hal + user media + group mediadrm drmrpc + ioprio rt 4 + writepid /dev/cpuset/foreground/tasks diff --git a/drm/1.0/default/android.hardware.drm@1.0-service.rc b/drm/1.0/default/android.hardware.drm@1.0-service.rc index a3457b523..790ededbe 100644 --- a/drm/1.0/default/android.hardware.drm@1.0-service.rc +++ b/drm/1.0/default/android.hardware.drm@1.0-service.rc @@ -1,4 +1,6 @@ service vendor.drm-hal-1-0 /vendor/bin/hw/android.hardware.drm@1.0-service + interface android.hardware.drm@1.0::ICryptoFactory default + interface android.hardware.drm@1.0::IDrmFactory default class hal user media group mediadrm drmrpc diff --git a/drm/1.0/default/common_default_service.mk b/drm/1.0/default/common_default_service.mk new file mode 100644 index 000000000..28db567a9 --- /dev/null +++ b/drm/1.0/default/common_default_service.mk @@ -0,0 +1,45 @@ +# +# Copyright (C) 2019 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +include $(CLEAR_VARS) +LOCAL_PROPRIETARY_MODULE := true +LOCAL_MODULE_RELATIVE_PATH := hw + +LOCAL_SHARED_LIBRARIES := \ + android.hardware.drm@1.0 \ + android.hidl.memory@1.0 \ + libhidlbase \ + libhidltransport \ + libhardware \ + liblog \ + libutils \ + libbinder \ + +LOCAL_STATIC_LIBRARIES := \ + android.hardware.drm@1.0-helper \ + +LOCAL_C_INCLUDES := \ + hardware/interfaces/drm + +LOCAL_HEADER_LIBRARIES := \ + media_plugin_headers + +# TODO(b/18948909) Some legacy DRM plugins only support 32-bit. They need to be +# migrated to 64-bit. Once all of a device's legacy DRM plugins support 64-bit, +# that device can turn on TARGET_ENABLE_MEDIADRM_64 to build this service as +# 64-bit. +ifneq ($(TARGET_ENABLE_MEDIADRM_64), true) +LOCAL_32_BIT_ONLY := true +endif diff --git a/drm/1.0/default/service.cpp b/drm/1.0/default/service.cpp index 1a44ce225..98d2c3b54 100644 --- a/drm/1.0/default/service.cpp +++ b/drm/1.0/default/service.cpp @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#define LOG_TAG "android.hardware.drm@1.0-service" #include <1.0/default/CryptoFactory.h> #include <1.0/default/DrmFactory.h> @@ -31,15 +30,8 @@ using android::hardware::drm::V1_0::ICryptoFactory; using android::hardware::drm::V1_0::IDrmFactory; int main() { - ALOGD("android.hardware.drm@1.0-service starting..."); - - // The DRM HAL may communicate to other vendor components via - // /dev/vndbinder - android::ProcessState::initWithDriver("/dev/vndbinder"); - configureRpcThreadpool(8, true /* callerWillJoin */); - android::status_t status = - registerPassthroughServiceImplementation<IDrmFactory>(); + android::status_t status = registerPassthroughServiceImplementation<IDrmFactory>(); LOG_ALWAYS_FATAL_IF( status != android::OK, "Error while registering drm service: %d", status); diff --git a/drm/1.0/default/serviceLazy.cpp b/drm/1.0/default/serviceLazy.cpp new file mode 100644 index 000000000..e5068b569 --- /dev/null +++ b/drm/1.0/default/serviceLazy.cpp @@ -0,0 +1,40 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <1.0/default/CryptoFactory.h> +#include <1.0/default/DrmFactory.h> + +#include <hidl/HidlTransportSupport.h> +#include <hidl/LegacySupport.h> + +#include <binder/ProcessState.h> + +using android::hardware::configureRpcThreadpool; +using android::hardware::joinRpcThreadpool; +using android::hardware::registerLazyPassthroughServiceImplementation; + +using android::hardware::drm::V1_0::ICryptoFactory; +using android::hardware::drm::V1_0::IDrmFactory; + +int main() { + configureRpcThreadpool(8, true /* callerWillJoin */); + android::status_t status = registerLazyPassthroughServiceImplementation<IDrmFactory>(); + LOG_ALWAYS_FATAL_IF(status != android::OK, "Error while registering drm service: %d", status); + status = registerLazyPassthroughServiceImplementation<ICryptoFactory>(); + LOG_ALWAYS_FATAL_IF(status != android::OK, "Error while registering crypto service: %d", + status); + joinRpcThreadpool(); +} |