From c3d75f64b1c27a26e82fe6e121fac7a4f0009df4 Mon Sep 17 00:00:00 2001 From: lihongjin Date: Tue, 8 Nov 2022 11:54:21 +0800 Subject: [PATCH] feat: add hook call in LOS_QueueReadCopy and LOS_QueueWriteCopy Signed-off-by: lihongjin Change-Id: I0c8ecb6e364d8e01b48f78847c25da6bc4cb961c --- components/trace/cnv/trace_cnv.c | 2 ++ kernel/src/los_queue.c | 6 ++++++ utils/internal/los_hook_types.h | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/components/trace/cnv/trace_cnv.c b/components/trace/cnv/trace_cnv.c index b537a08d..9ac1948e 100644 --- a/components/trace/cnv/trace_cnv.c +++ b/components/trace/cnv/trace_cnv.c @@ -235,7 +235,9 @@ VOID OsTraceCnvInit(VOID) LOS_HookReg(LOS_HOOK_TYPE_QUEUE_CREATE, LOS_TraceQueueCreate); LOS_HookReg(LOS_HOOK_TYPE_QUEUE_DELETE, LOS_TraceQueueDelete); LOS_HookReg(LOS_HOOK_TYPE_QUEUE_READ, LOS_TraceQueueRW); + LOS_HookReg(LOS_HOOK_TYPE_QUEUE_READ_COPY, LOS_TraceQueueRW); LOS_HookReg(LOS_HOOK_TYPE_QUEUE_WRITE, LOS_TraceQueueRW); + LOS_HookReg(LOS_HOOK_TYPE_QUEUE_WRITE_COPY, LOS_TraceQueueRW); LOS_HookReg(LOS_HOOK_TYPE_SEM_CREATE, LOS_TraceSemCreate); LOS_HookReg(LOS_HOOK_TYPE_SEM_DELETE, LOS_TraceSemDelete); LOS_HookReg(LOS_HOOK_TYPE_SEM_POST, LOS_TraceSemPost); diff --git a/kernel/src/los_queue.c b/kernel/src/los_queue.c index a96f2bd7..eb844294 100644 --- a/kernel/src/los_queue.c +++ b/kernel/src/los_queue.c @@ -451,6 +451,9 @@ LITE_OS_SEC_TEXT UINT32 LOS_QueueReadCopy(UINT32 queueID, } operateType = OS_QUEUE_OPERATE_TYPE(OS_QUEUE_READ, OS_QUEUE_HEAD, OS_QUEUE_NOT_POINT); + + OsHookCall(LOS_HOOK_TYPE_QUEUE_READ_COPY, (LosQueueCB *)GET_QUEUE_HANDLE(queueID), operateType, bufferSize, timeOut); + return OsQueueOperate(queueID, operateType, bufferAddr, bufferSize, timeOut); } @@ -485,6 +488,9 @@ LITE_OS_SEC_TEXT UINT32 LOS_QueueWriteCopy(UINT32 queueID, } operateType = OS_QUEUE_OPERATE_TYPE(OS_QUEUE_WRITE, OS_QUEUE_TAIL, OS_QUEUE_NOT_POINT); + + OsHookCall(LOS_HOOK_TYPE_QUEUE_WRITE_COPY, (LosQueueCB *)GET_QUEUE_HANDLE(queueID), operateType, bufferSize, timeOut); + return OsQueueOperate(queueID, operateType, bufferAddr, &bufferSize, timeOut); } diff --git a/utils/internal/los_hook_types.h b/utils/internal/los_hook_types.h index 006470cf..7ed27ce7 100644 --- a/utils/internal/los_hook_types.h +++ b/utils/internal/los_hook_types.h @@ -69,8 +69,12 @@ typedef VOID *VOID_PTR; LOS_HOOK_TYPE_DEF(LOS_HOOK_TYPE_QUEUE_CREATE, (const LosQueueCB *queueCB)) \ LOS_HOOK_TYPE_DEF(LOS_HOOK_TYPE_QUEUE_READ, (const LosQueueCB *queueCB, UINT32 operateType, \ UINT32 bufferSize, UINT32 timeout)) \ + LOS_HOOK_TYPE_DEF(LOS_HOOK_TYPE_QUEUE_READ_COPY, (const LosQueueCB *queueCB, UINT32 operateType, \ + UINT32 bufferSize, UINT32 timeout)) \ LOS_HOOK_TYPE_DEF(LOS_HOOK_TYPE_QUEUE_WRITE, (const LosQueueCB *queueCB, UINT32 operateType, \ UINT32 bufferSize, UINT32 timeout)) \ + LOS_HOOK_TYPE_DEF(LOS_HOOK_TYPE_QUEUE_WRITE_COPY, (const LosQueueCB *queueCB, UINT32 operateType, \ + UINT32 bufferSize, UINT32 timeout)) \ LOS_HOOK_TYPE_DEF(LOS_HOOK_TYPE_QUEUE_DELETE, (const LosQueueCB *queueCB)) \ /* Hook types supported by semaphore modules */ \ LOS_HOOK_TYPE_DEF(LOS_HOOK_TYPE_SEM_CREATE, (const LosSemCB *semCreated)) \