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
This commit is contained in:
Peter Kalauskas 2018-11-14 09:38:32 -08:00
parent a885b5d982
commit 724a9fc643
6 changed files with 109 additions and 36 deletions

View file

@ -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 \
include $(BUILD_EXECUTABLE)
LOCAL_STATIC_LIBRARIES := \
android.hardware.drm@1.0-helper \
############# Build legacy drm lazy service ############
LOCAL_C_INCLUDES := \
hardware/interfaces/drm
include $(CLEAR_VARS)
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
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)

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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);

View file

@ -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();
}