summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGabriel Wang <[email protected]>2022-01-07 23:35:44 +0000
committerGabriel Wang <[email protected]>2022-01-07 23:35:44 +0000
commitd7b8cf81e6285f3cbb0817cbe79c527f10ff56b7 (patch)
tree3e47ead2e339c0f1181c9ca2f4ffbfec9536d7eb /src
parent495e209f379338b2bbc4ba086e457d0fb6d22a8d (diff)
move some __on_rt_xxxxx_hook from rtdef.h to dedicated c soure files
Diffstat (limited to 'src')
-rwxr-xr-xsrc/ipc.c14
-rw-r--r--src/irq.c10
-rw-r--r--src/kservice.c7
-rw-r--r--src/mempool.c10
-rw-r--r--src/object.c21
-rw-r--r--src/scheduler.c10
-rw-r--r--src/thread.c13
-rw-r--r--src/timer.c16
8 files changed, 94 insertions, 7 deletions
diff --git a/src/ipc.c b/src/ipc.c
index 2853590501..ebcc2780b9 100755
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -39,12 +39,24 @@
* 2020-10-11 Meco Man add value overflow-check code
* 2021-01-03 Meco Man implement rt_mb_urgent()
* 2021-05-30 Meco Man implement rt_mutex_trytake()
+ * 2022-01-07 Gabriel Moving __on_rt_xxxxx_hook to ipc.c
*/
#include <rtthread.h>
#include <rthw.h>
-#ifdef RT_USING_HOOK
+
+#ifndef __on_rt_object_trytake_hook
+ #define __on_rt_object_trytake_hook(parent) __ON_HOOK_ARGS(rt_object_trytake_hook, (parent))
+#endif
+#ifndef __on_rt_object_take_hook
+ #define __on_rt_object_take_hook(parent) __ON_HOOK_ARGS(rt_object_take_hook, (parent))
+#endif
+#ifndef __on_rt_object_put_hook
+ #define __on_rt_object_put_hook(parent) __ON_HOOK_ARGS(rt_object_put_hook, (parent))
+#endif
+
+#if defined(RT_USING_HOOK) && defined(RT_HOOK_USING_FUNC_PTR)
extern void (*rt_object_trytake_hook)(struct rt_object *object);
extern void (*rt_object_take_hook)(struct rt_object *object);
extern void (*rt_object_put_hook)(struct rt_object *object);
diff --git a/src/irq.c b/src/irq.c
index 3889a2a2c8..bc604718b2 100644
--- a/src/irq.c
+++ b/src/irq.c
@@ -10,12 +10,20 @@
* 2016-08-09 ArdaFu add interrupt enter and leave hook.
* 2018-11-22 Jesven rt_interrupt_get_nest function add disable irq
* 2021-08-15 Supperthomas fix the comment
+ * 2022-01-07 Gabriel Moving __on_rt_xxxxx_hook to irq.c
*/
#include <rthw.h>
#include <rtthread.h>
-#ifdef RT_USING_HOOK
+#ifndef __on_rt_interrupt_enter_hook
+ #define __on_rt_interrupt_enter_hook() __ON_HOOK_ARGS(rt_interrupt_enter_hook, ())
+#endif
+#ifndef __on_rt_interrupt_leave_hook
+ #define __on_rt_interrupt_leave_hook() __ON_HOOK_ARGS(rt_interrupt_leave_hook, ())
+#endif
+
+#if defined(RT_USING_HOOK) && defined(RT_HOOK_USING_FUNC_PTR)
static void (*rt_interrupt_enter_hook)(void);
static void (*rt_interrupt_leave_hook)(void);
diff --git a/src/kservice.c b/src/kservice.c
index fa0da4c7c4..f49823c2d8 100644
--- a/src/kservice.c
+++ b/src/kservice.c
@@ -19,6 +19,7 @@
* 2015-07-06 Bernard Add rt_assert_handler routine.
* 2021-02-28 Meco Man add RT_KSERVICE_USING_STDLIB
* 2021-12-20 Meco Man implement rt_strcpy()
+ * 2022-01-07 Gabriel add __on_rt_assert_hook
*/
#include <rtthread.h>
@@ -1741,6 +1742,12 @@ int __rt_ffs(int value)
#endif /* RT_USING_TINY_FFS */
#endif /* RT_USING_CPU_FFS */
+
+#ifndef __on_rt_assert_hook
+ #define __on_rt_assert_hook(ex, func, line) __ON_HOOK_ARGS(rt_assert_hook, (ex, func, line))
+#endif
+
+
#ifdef RT_DEBUG
/* RT_ASSERT(EX)'s hook */
diff --git a/src/mempool.c b/src/mempool.c
index 09a4955eee..ea0ea94cfa 100644
--- a/src/mempool.c
+++ b/src/mempool.c
@@ -14,6 +14,7 @@
* 2010-10-26 yi.qiu add module support in rt_mp_delete
* 2011-01-24 Bernard add object allocation check.
* 2012-03-22 Bernard fix align issue in rt_mp_init and rt_mp_create.
+ * 2022-01-07 Gabriel Moving __on_rt_xxxxx_hook to mempool.c
*/
#include <rthw.h>
@@ -21,7 +22,14 @@
#ifdef RT_USING_MEMPOOL
-#ifdef RT_USING_HOOK
+#ifndef __on_rt_mp_alloc_hook
+ #define __on_rt_mp_alloc_hook(mp, block) __ON_HOOK_ARGS(rt_mp_alloc_hook, (mp, block))
+#endif
+#ifndef __on_rt_mp_free_hook
+ #define __on_rt_mp_free_hook(mp, block) __ON_HOOK_ARGS(rt_mp_free_hook, (mp, block))
+#endif
+
+#if defined(RT_USING_HOOK) && defined(RT_HOOK_USING_FUNC_PTR)
static void (*rt_mp_alloc_hook)(struct rt_mempool *mp, void *block);
static void (*rt_mp_free_hook)(struct rt_mempool *mp, void *block);
diff --git a/src/object.c b/src/object.c
index 76534f4566..46e53a7f99 100644
--- a/src/object.c
+++ b/src/object.c
@@ -13,6 +13,7 @@
* 2010-10-26 yi.qiu add module support in rt_object_allocate and rt_object_free
* 2017-12-10 Bernard Add object_info enum.
* 2018-01-25 Bernard Fix the object find issue when enable MODULE.
+ * 2022-01-07 Gabriel Moving __on_rt_xxxxx_hook to object.c
*/
#include <rtthread.h>
@@ -113,7 +114,25 @@ static struct rt_object_information _object_container[RT_Object_Info_Unknown] =
#endif
};
-#ifdef RT_USING_HOOK
+
+#ifndef __on_rt_object_attach_hook
+ #define __on_rt_object_attach_hook(obj) __ON_HOOK_ARGS(rt_object_attach_hook, (obj))
+#endif
+#ifndef __on_rt_object_detach_hook
+ #define __on_rt_object_detach_hook(obj) __ON_HOOK_ARGS(rt_object_detach_hook, (obj))
+#endif
+#ifndef __on_rt_object_trytake_hook
+ #define __on_rt_object_trytake_hook(parent) __ON_HOOK_ARGS(rt_object_trytake_hook, (parent))
+#endif
+#ifndef __on_rt_object_take_hook
+ #define __on_rt_object_take_hook(parent) __ON_HOOK_ARGS(rt_object_take_hook, (parent))
+#endif
+#ifndef __on_rt_object_put_hook
+ #define __on_rt_object_put_hook(parent) __ON_HOOK_ARGS(rt_object_put_hook, (parent))
+#endif
+
+
+#if defined(RT_USING_HOOK) && defined(RT_HOOK_USING_FUNC_PTR)
static void (*rt_object_attach_hook)(struct rt_object *object);
static void (*rt_object_detach_hook)(struct rt_object *object);
void (*rt_object_trytake_hook)(struct rt_object *object);
diff --git a/src/scheduler.c b/src/scheduler.c
index 6ef02f3d3c..bcc74a2604 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -27,6 +27,7 @@
* rt_schedule_insert_thread won't insert current task to ready queue
* in smp version, rt_hw_context_switch_interrupt maybe switch to
* new task directly
+ * 2022-01-07 Gabriel Moving __on_rt_xxxxx_hook to scheduler.c
*
*/
@@ -47,7 +48,14 @@ struct rt_thread *rt_current_thread = RT_NULL;
rt_uint8_t rt_current_priority;
#endif /* RT_USING_SMP */
-#ifdef RT_USING_HOOK
+#ifndef __on_rt_scheduler_hook
+ #define __on_rt_scheduler_hook(from, to) __ON_HOOK_ARGS(rt_scheduler_hook, (from, to))
+#endif
+#ifndef __on_rt_scheduler_switch_hook
+ #define __on_rt_scheduler_switch_hook(tid) __ON_HOOK_ARGS(rt_scheduler_switch_hook, (tid))
+#endif
+
+#if defined(RT_USING_HOOK) && defined(RT_HOOK_USING_FUNC_PTR)
static void (*rt_scheduler_hook)(struct rt_thread *from, struct rt_thread *to);
static void (*rt_scheduler_switch_hook)(struct rt_thread *tid);
diff --git a/src/thread.c b/src/thread.c
index 090f5f1ef7..a024a3b7dc 100644
--- a/src/thread.c
+++ b/src/thread.c
@@ -28,13 +28,24 @@
* add support for tasks bound to cpu
* 2021-02-24 Meco Man rearrange rt_thread_control() - schedule the thread when close it
* 2021-11-15 THEWON Remove duplicate work between idle and _thread_exit
+ * 2022-01-07 Gabriel Moving __on_rt_xxxxx_hook to thread.c
*/
#include <rthw.h>
#include <rtthread.h>
#include <stddef.h>
-#ifdef RT_USING_HOOK
+#ifndef __on_rt_thread_inited_hook
+ #define __on_rt_thread_inited_hook(thread) __ON_HOOK_ARGS(rt_thread_inited_hook, (thread))
+#endif
+#ifndef __on_rt_thread_suspend_hook
+ #define __on_rt_thread_suspend_hook(thread) __ON_HOOK_ARGS(rt_thread_suspend_hook, (thread))
+#endif
+#ifndef __on_rt_thread_resume_hook
+ #define __on_rt_thread_resume_hook(thread) __ON_HOOK_ARGS(rt_thread_resume_hook, (thread))
+#endif
+
+#if defined(RT_USING_HOOK) && defined(RT_HOOK_USING_FUNC_PTR)
static void (*rt_thread_suspend_hook)(rt_thread_t thread);
static void (*rt_thread_resume_hook) (rt_thread_t thread);
static void (*rt_thread_inited_hook) (rt_thread_t thread);
diff --git a/src/timer.c b/src/timer.c
index 846c33263b..da113298da 100644
--- a/src/timer.c
+++ b/src/timer.c
@@ -17,6 +17,7 @@
* 2014-07-12 Bernard does not lock scheduler when invoking soft-timer
* timeout function.
* 2021-08-15 supperthomas add the comment
+ * 2022-01-07 Gabriel Moving __on_rt_xxxxx_hook to timer.c
*/
#include <rtthread.h>
@@ -47,7 +48,20 @@ ALIGN(RT_ALIGN_SIZE)
static rt_uint8_t _timer_thread_stack[RT_TIMER_THREAD_STACK_SIZE];
#endif /* RT_USING_TIMER_SOFT */
-#ifdef RT_USING_HOOK
+#ifndef __on_rt_object_take_hook
+ #define __on_rt_object_take_hook(parent) __ON_HOOK_ARGS(rt_object_take_hook, (parent))
+#endif
+#ifndef __on_rt_object_put_hook
+ #define __on_rt_object_put_hook(parent) __ON_HOOK_ARGS(rt_object_put_hook, (parent))
+#endif
+#ifndef __on_rt_timer_enter_hook
+ #define __on_rt_timer_enter_hook(t) __ON_HOOK_ARGS(rt_timer_enter_hook, (t))
+#endif
+#ifndef __on_rt_timer_exit_hook
+ #define __on_rt_timer_exit_hook(t) __ON_HOOK_ARGS(rt_timer_exit_hook, (t))
+#endif
+
+#if defined(RT_USING_HOOK) && defined(RT_HOOK_USING_FUNC_PTR)
extern void (*rt_object_take_hook)(struct rt_object *object);
extern void (*rt_object_put_hook)(struct rt_object *object);
static void (*rt_timer_enter_hook)(struct rt_timer *timer);