1 /*
2  * Copyright (C) 2015-2017 Alibaba Group Holding Limited
3  */
4 
5 #ifndef K_HOOK_H
6 #define K_HOOK_H
7 
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 /** @addtogroup aos_rhino hook
13  *  OS hook, called when specific OS operations
14  *
15  *  @{
16  */
17 
18 #if (RHINO_CONFIG_USER_HOOK > 0)
19 
20 /**
21  * Called in 'krhino_init' - initialization process
22  *
23  * @return none
24  */
25 void krhino_init_hook(void);
26 
27 /**
28  * Called in 'krhino_start' - just before the first task runs
29  *
30  * @return none
31  */
32 void krhino_start_hook(void);
33 
34 /**
35  * Called in 'krhino_task_create' and 'krhino_task_dyn_create'
36  *
37  * @param[in]  task  pointer to the created task
38  *
39  * @return none
40  */
41 void krhino_task_create_hook(ktask_t *task);
42 
43 /**
44  * Called in 'krhino_task_del_hook' and 'krhino_task_dyn_del'
45  *
46  * @param[in]  task  pointer to the deleted task
47  * @param[in]  arg   useless now
48  *
49  * @return none
50  */
51 void krhino_task_del_hook(ktask_t *task, res_free_t *arg);
52 
53 /**
54  * Called in 'krhino_task_wait_abort' and 'krhino_task_cancel'
55  *
56  * @param[in]  task  pointer to the canceled and abort task
57  *
58  * @return none
59  */
60 void krhino_task_abort_hook(ktask_t *task);
61 
62 /**
63  * Called when task switching
64  *
65  * @param[in]  orgin  pointer to the switch out task
66  * @param[in]  dest   pointer to the switch in task
67  *
68  * @return none
69  */
70 void krhino_task_switch_hook(ktask_t *orgin, ktask_t *dest);
71 
72 /**
73  * Called in every system tick process
74  *
75  * @return none
76  */
77 void krhino_tick_hook(void);
78 
79 /**
80  * Called in idle task loop
81  *
82  * @return none
83  */
84 void krhino_idle_hook(void);
85 
86 /**
87  * Called before idle task loop
88  *
89  * @return none
90  */
91 void krhino_idle_pre_hook(void);
92 
93 /**
94  * Called in 'krhino_mm_alloc'
95  *
96  * @param[in]  mem      alloced memory block
97  * @param[in]  size     alloced size
98  *
99  * @return none
100  */
101 void krhino_mm_alloc_hook(void *mem, size_t size);
102 #endif
103 
104 /** @} */
105 
106 #ifdef __cplusplus
107 }
108 #endif
109 
110 #endif /* K_HOOK_H */
111 
112