diff options
author | Chia-I Wu <olv@google.com> | 2016-10-12 06:11:51 -0700 |
---|---|---|
committer | Chia-I Wu <olv@google.com> | 2016-10-19 11:57:47 +0800 |
commit | 4c0d397f1c9268baa56a1e4b0521418423f0883c (patch) | |
tree | 77009e450f41380148968e85e543d5b847b4e225 | |
parent | 0fe3d8c2df6a220e2fd9cfb36e65c42ee192d18a (diff) |
graphics: add IAllocator service daemon
Bug: 32021161
Test: builds and boots
Change-Id: I2752559c4e168a4ea7cbd9223ef3692cdeda96f6
3 files changed, 71 insertions, 0 deletions
diff --git a/graphics/allocator/2.0/default/Android.bp b/graphics/allocator/2.0/default/Android.bp index 9a247735d4..8eac8f5292 100644 --- a/graphics/allocator/2.0/default/Android.bp +++ b/graphics/allocator/2.0/default/Android.bp @@ -15,6 +15,21 @@ cc_library_shared { ], } +cc_binary { + name: "android.hardware.graphics.allocator@2.0-service", + relative_install_path: "hw", + srcs: ["service.cpp"], + init_rc: ["android.hardware.graphics.allocator@2.0-service.rc"], + + shared_libs: [ + "android.hardware.graphics.allocator@2.0", + "libhidl", + "libhwbinder", + "liblog", + "libutils", + ], +} + cc_library_static { name: "libgralloc1-adapter", srcs: ["gralloc1-adapter.c"], diff --git a/graphics/allocator/2.0/default/android.hardware.graphics.allocator@2.0-service.rc b/graphics/allocator/2.0/default/android.hardware.graphics.allocator@2.0-service.rc new file mode 100644 index 0000000000..8bb0d85ebb --- /dev/null +++ b/graphics/allocator/2.0/default/android.hardware.graphics.allocator@2.0-service.rc @@ -0,0 +1,5 @@ +service gralloc-2-0 /system/bin/hw/android.hardware.graphics.allocator@2.0-service + class hal + user system + group graphics drmrpc readproc + onrestart restart surfaceflinger diff --git a/graphics/allocator/2.0/default/service.cpp b/graphics/allocator/2.0/default/service.cpp new file mode 100644 index 0000000000..fd89aa8054 --- /dev/null +++ b/graphics/allocator/2.0/default/service.cpp @@ -0,0 +1,51 @@ +/* + * Copyright 2016 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. + */ + +#define LOG_TAG "GrallocService" + +#include <android/hardware/graphics/allocator/2.0/IAllocator.h> +#include <hwbinder/IPCThreadState.h> +#include <hwbinder/ProcessState.h> +#include <utils/StrongPointer.h> + +using android::sp; +using android::hardware::IPCThreadState; +using android::hardware::ProcessState; +using android::hardware::graphics::allocator::V2_0::IAllocator; + +int main() +{ + const char instance[] = "gralloc"; + + ALOGI("Service is starting."); + + sp<IAllocator> service = IAllocator::getService(instance, + true /* getStub */); + if (service == nullptr) { + ALOGI("getService returned NULL"); + return -1; + } + + LOG_FATAL_IF(service->isRemote(), "Service is REMOTE!"); + + service->registerAsService(instance); + + ProcessState::self()->setThreadPoolMaxThreadCount(0); + ProcessState::self()->startThreadPool(); + IPCThreadState::self()->joinThreadPool(); + + return 0; +} |