From 62a25e8f89734c41338b5240f1eb532e071acd9a Mon Sep 17 00:00:00 2001 From: Zhaoyuan Date: Sat, 5 Jun 2021 14:47:35 +0800 Subject: [PATCH] fix L1 linux open problems --- frameworks/ability_lite/include/ability_scheduler.h | 1 + frameworks/ability_lite/src/ability_event_handler.cpp | 6 ++++-- frameworks/ability_lite/src/ability_scheduler.cpp | 5 +++++ .../abilitymgr_lite/src/client/ability_thread_client.cpp | 3 ++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/frameworks/ability_lite/include/ability_scheduler.h b/frameworks/ability_lite/include/ability_scheduler.h index 7cd4be6..2fa87af 100755 --- a/frameworks/ability_lite/include/ability_scheduler.h +++ b/frameworks/ability_lite/include/ability_scheduler.h @@ -25,6 +25,7 @@ #include "want.h" namespace OHOS { +const int32_t DEFAULT_IPC_SIZE = 200; class Scheduler { public: virtual ~Scheduler() = default; diff --git a/frameworks/ability_lite/src/ability_event_handler.cpp b/frameworks/ability_lite/src/ability_event_handler.cpp index 87b8477..ae548a4 100644 --- a/frameworks/ability_lite/src/ability_event_handler.cpp +++ b/frameworks/ability_lite/src/ability_event_handler.cpp @@ -37,8 +37,8 @@ AbilityEventHandler::~AbilityEventHandler() void AbilityEventHandler::Run() { + (void) pthread_mutex_lock(&queueMutex_); while (!quit_) { - (void) pthread_mutex_lock(&queueMutex_); if (taskQueue_.empty()) { (void) pthread_cond_wait(&pthreadCond_, &queueMutex_); } @@ -46,16 +46,18 @@ void AbilityEventHandler::Run() taskQueue_.pop(); (void) pthread_mutex_unlock(&queueMutex_); task(); + (void) pthread_mutex_lock(&queueMutex_); } + (void) pthread_mutex_unlock(&queueMutex_); } void AbilityEventHandler::PostTask(const Task& task) { (void) pthread_mutex_lock(&queueMutex_); taskQueue_.push(task); - (void) pthread_mutex_unlock(&queueMutex_); (void) pthread_cond_signal(&pthreadCond_); + (void) pthread_mutex_unlock(&queueMutex_); } void AbilityEventHandler::PostQuit() diff --git a/frameworks/ability_lite/src/ability_scheduler.cpp b/frameworks/ability_lite/src/ability_scheduler.cpp index 536ccfd..c273e87 100644 --- a/frameworks/ability_lite/src/ability_scheduler.cpp +++ b/frameworks/ability_lite/src/ability_scheduler.cpp @@ -77,6 +77,11 @@ int32_t AbilityScheduler::AmsCallback(const IpcContext* context, void *ipcMsg, I } } scheduler->PerformAppInit(appInfo); + IpcIo reply; + uint8_t tmpData[DEFAULT_IPC_SIZE]; + IpcIoInit(&reply, tmpData, DEFAULT_IPC_SIZE, 1); + IpcIoPushInt32(&reply, 0); + SendReply(nullptr, ipcMsg, &reply); break; } case SCHEDULER_ABILITY_LIFECYCLE: { diff --git a/services/abilitymgr_lite/src/client/ability_thread_client.cpp b/services/abilitymgr_lite/src/client/ability_thread_client.cpp index 4d01aaa..25143f7 100644 --- a/services/abilitymgr_lite/src/client/ability_thread_client.cpp +++ b/services/abilitymgr_lite/src/client/ability_thread_client.cpp @@ -127,9 +127,10 @@ AbilityMsStatus AbilityThreadClient::AppInitTransaction(const BundleInfo &bundle IpcIoPushString(&req, bundleInfo.moduleInfos[i].moduleName); } } + IpcIo reply; uintptr_t ptr; if (Transact(nullptr, svcIdentity_, SCHEDULER_APP_INIT, &req, - nullptr, LITEIPC_FLAG_DEFAULT, &ptr) != LITEIPC_OK) { + &reply, LITEIPC_FLAG_DEFAULT, &ptr) != LITEIPC_OK) { return AbilityMsStatus::AppTransanctStatus("app init ipc error"); } FreeBuffer(nullptr, reinterpret_cast(ptr)); -- Gitee