1*d95af8dfSAndroid Build Coastguard Worker /* 2*d95af8dfSAndroid Build Coastguard Worker * Copyright 2022 The Chromium OS Authors. All rights reserved. 3*d95af8dfSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 4*d95af8dfSAndroid Build Coastguard Worker * found in the LICENSE file. 5*d95af8dfSAndroid Build Coastguard Worker */ 6*d95af8dfSAndroid Build Coastguard Worker 7*d95af8dfSAndroid Build Coastguard Worker #include "Allocator.h" 8*d95af8dfSAndroid Build Coastguard Worker 9*d95af8dfSAndroid Build Coastguard Worker #include <android-base/logging.h> 10*d95af8dfSAndroid Build Coastguard Worker #include <android/binder_manager.h> 11*d95af8dfSAndroid Build Coastguard Worker #include <android/binder_process.h> 12*d95af8dfSAndroid Build Coastguard Worker #include <log/log.h> 13*d95af8dfSAndroid Build Coastguard Worker 14*d95af8dfSAndroid Build Coastguard Worker using aidl::android::hardware::graphics::allocator::impl::Allocator; 15*d95af8dfSAndroid Build Coastguard Worker main(int,char **)16*d95af8dfSAndroid Build Coastguard Workerint main(int /*argc*/, char** /*argv*/) { 17*d95af8dfSAndroid Build Coastguard Worker ALOGI("Minigbm AIDL allocator starting up..."); 18*d95af8dfSAndroid Build Coastguard Worker 19*d95af8dfSAndroid Build Coastguard Worker // same as SF main thread 20*d95af8dfSAndroid Build Coastguard Worker struct sched_param param = {0}; 21*d95af8dfSAndroid Build Coastguard Worker param.sched_priority = 2; 22*d95af8dfSAndroid Build Coastguard Worker if (sched_setscheduler(0, SCHED_FIFO | SCHED_RESET_ON_FORK, ¶m) != 0) { 23*d95af8dfSAndroid Build Coastguard Worker ALOGI("%s: failed to set priority: %s", __FUNCTION__, strerror(errno)); 24*d95af8dfSAndroid Build Coastguard Worker } 25*d95af8dfSAndroid Build Coastguard Worker 26*d95af8dfSAndroid Build Coastguard Worker auto allocator = ndk::SharedRefBase::make<Allocator>(); 27*d95af8dfSAndroid Build Coastguard Worker CHECK(allocator != nullptr); 28*d95af8dfSAndroid Build Coastguard Worker 29*d95af8dfSAndroid Build Coastguard Worker if (!allocator->init()) { 30*d95af8dfSAndroid Build Coastguard Worker ALOGE("Failed to initialize Minigbm AIDL allocator."); 31*d95af8dfSAndroid Build Coastguard Worker return EXIT_FAILURE; 32*d95af8dfSAndroid Build Coastguard Worker } 33*d95af8dfSAndroid Build Coastguard Worker 34*d95af8dfSAndroid Build Coastguard Worker const std::string instance = std::string() + Allocator::descriptor + "/default"; 35*d95af8dfSAndroid Build Coastguard Worker binder_status_t status = 36*d95af8dfSAndroid Build Coastguard Worker AServiceManager_addService(allocator->asBinder().get(), instance.c_str()); 37*d95af8dfSAndroid Build Coastguard Worker CHECK_EQ(status, STATUS_OK); 38*d95af8dfSAndroid Build Coastguard Worker 39*d95af8dfSAndroid Build Coastguard Worker ABinderProcess_setThreadPoolMaxThreadCount(4); 40*d95af8dfSAndroid Build Coastguard Worker ABinderProcess_startThreadPool(); 41*d95af8dfSAndroid Build Coastguard Worker ABinderProcess_joinThreadPool(); 42*d95af8dfSAndroid Build Coastguard Worker 43*d95af8dfSAndroid Build Coastguard Worker return EXIT_FAILURE; 44*d95af8dfSAndroid Build Coastguard Worker }