From 9a9a71744564cbb4c19e7317d189ae6847d37aab Mon Sep 17 00:00:00 2001 From: liubb_0516 Date: Tue, 10 May 2022 14:16:41 +0800 Subject: [PATCH] modify ipc resetipc Signed-off-by: liubb_0516 --- ipc/native/c/ipc/src/liteos_a/ipc_invoker.c | 1 + ipc/native/c/manager/src/ipc_process_skeleton.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/ipc/native/c/ipc/src/liteos_a/ipc_invoker.c b/ipc/native/c/ipc/src/liteos_a/ipc_invoker.c index 623ce01..47a570a 100644 --- a/ipc/native/c/ipc/src/liteos_a/ipc_invoker.c +++ b/ipc/native/c/ipc/src/liteos_a/ipc_invoker.c @@ -339,6 +339,7 @@ static void GetDeathCallback(IpcMsg* msg, HdlerArg* arg) return; } arg->msg = msg; + arg->num = MAX_DEATH_CALLBACK_NUM; (void)pthread_mutex_unlock(&g_ipcCallback.mutex); } diff --git a/ipc/native/c/manager/src/ipc_process_skeleton.c b/ipc/native/c/manager/src/ipc_process_skeleton.c index 1890443..0b9b4af 100644 --- a/ipc/native/c/manager/src/ipc_process_skeleton.c +++ b/ipc/native/c/manager/src/ipc_process_skeleton.c @@ -423,6 +423,20 @@ void DeleteDeathCallback(DeathCallback *deathCallback) free(deathCallback); } +static void DeleteAllNode(void) +{ + (void)pthread_mutex_lock(&g_ipcSkeleton->lock); + DeathCallback *node = NULL; + DeathCallback *next = NULL; + UTILS_DL_LIST_FOR_EACH_ENTRY_SAFE(node, next, &g_ipcSkeleton->objects, DeathCallback, list) + { + pthread_mutex_destroy(&node->lock); + UtilsListDelete(&node->list); + free(node); + } + pthread_mutex_unlock(&g_ipcSkeleton->lock); +} + void ResetIpc(void) { RPC_LOG_INFO("ResetIpc called"); @@ -430,6 +444,7 @@ void ResetIpc(void) if (invoker != NULL && invoker->InvokerResetIpc != NULL) { (invoker->InvokerResetIpc)(); } + DeleteAllNode(); #ifdef IPC_RESET_SKELETON DeleteIpcSkeleton(g_ipcSkeleton); g_ipcSkeleton = NULL; -- GitLab