1 /*
2 * ===========================================================================================
3 *
4 * Filename: thread.c
5 *
6 * Description: thread osal for hal layer
7 *
8 * Version: Melis3.0
9 * Create: 2019-11-25 20:29:13
10 * Revision: none
11 * Compiler: GCC:version 7.2.1 20170904 (release),ARM/embedded-7-branch revision 255204
12 *
13 * Author: caozilong@allwinnertech.com
14 * Organization: BU1-PSW
15 * Last Modified: 2020-03-05 09:01:13
16 *
17 * ===========================================================================================
18 */
19
20 #include <stdint.h>
21 #include <hal_thread.h>
22 #include <kconfig.h>
23 #include <log.h>
24 #include <init.h>
25
kthread_create(void (* threadfn)(void * data),void * data,const char * namefmt,...)26 void *kthread_create(void (*threadfn)(void *data), void *data, const char *namefmt, ...)
27 {
28 rt_thread_t thr;
29
30 thr = rt_thread_create(namefmt, threadfn, data, \
31 HAL_THREAD_STACK_SIZE, \
32 HAL_THREAD_PRIORITY, \
33 HAL_THREAD_TIMESLICE);
34
35 RT_ASSERT(thr != RT_NULL);
36
37 return (void *)thr;
38 }
39
kthread_start(void * thread)40 int kthread_start(void *thread)
41 {
42 rt_thread_t thr;
43 rt_err_t ret;
44
45 RT_ASSERT(thread != RT_NULL);
46
47 thr = (rt_thread_t)thread;
48
49 ret = rt_thread_startup(thr);
50
51 return ret;
52 }
53
kthread_stop(void * thread)54 int kthread_stop(void *thread)
55 {
56 rt_thread_t thr;
57
58 RT_ASSERT(thread != RT_NULL);
59
60 thr = (rt_thread_t)thread;
61
62 rt_thread_delete(thr);
63
64 return 0;
65 }
66
kthread_wakeup(void * thread)67 int kthread_wakeup(void *thread)
68 {
69 rt_thread_t thr;
70 rt_err_t err;
71
72 RT_ASSERT(thread != RT_NULL);
73
74 thr = (rt_thread_t)thread;
75
76 err = rt_thread_resume(thr);
77 if (err)
78 {
79 return -1;
80 }
81
82 return 0;
83 }
84
kthread_suspend(void * thread)85 int kthread_suspend(void *thread)
86 {
87 rt_thread_t thr;
88 rt_err_t err;
89
90 RT_ASSERT(thread != RT_NULL);
91
92 thr = (rt_thread_t)thread;
93
94 err = rt_thread_suspend(thr);
95 if (err)
96 {
97 return -1;
98 }
99
100 return 0;
101 }
102