xref: /nrf52832-nimble/rt-thread/examples/kernel/tc_sample.c (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero #include <rtthread.h>
2*10465441SEvalZero #include "tc_comm.h"
3*10465441SEvalZero 
4*10465441SEvalZero static rt_thread_t tid = RT_NULL;
sample_thread(void * parameter)5*10465441SEvalZero static void sample_thread(void* parameter)
6*10465441SEvalZero {
7*10465441SEvalZero     rt_kprintf("I'm sample!\n");
8*10465441SEvalZero }
sample_thread_cleanup(struct rt_thread * p)9*10465441SEvalZero static void sample_thread_cleanup(struct rt_thread *p)
10*10465441SEvalZero {
11*10465441SEvalZero     tid = RT_NULL;
12*10465441SEvalZero     tc_done(TC_STAT_PASSED);
13*10465441SEvalZero }
14*10465441SEvalZero 
sample_init()15*10465441SEvalZero int sample_init()
16*10465441SEvalZero {
17*10465441SEvalZero     tid = rt_thread_create("t",
18*10465441SEvalZero         sample_thread, RT_NULL,
19*10465441SEvalZero         THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE);
20*10465441SEvalZero     if (tid != RT_NULL)
21*10465441SEvalZero     {
22*10465441SEvalZero         rt_thread_startup(tid);
23*10465441SEvalZero         tid->cleanup = sample_thread_cleanup;
24*10465441SEvalZero     }
25*10465441SEvalZero     else
26*10465441SEvalZero         tc_stat(TC_STAT_END | TC_STAT_FAILED);
27*10465441SEvalZero 
28*10465441SEvalZero     return 0;
29*10465441SEvalZero }
30*10465441SEvalZero 
31*10465441SEvalZero #ifdef RT_USING_TC
_tc_cleanup()32*10465441SEvalZero static void _tc_cleanup()
33*10465441SEvalZero {
34*10465441SEvalZero     /* lock scheduler */
35*10465441SEvalZero     rt_enter_critical();
36*10465441SEvalZero     /* delete thread */
37*10465441SEvalZero     if (tid != RT_NULL)
38*10465441SEvalZero     {
39*10465441SEvalZero         rt_kprintf("tid1 is bad\n");
40*10465441SEvalZero         tc_stat(TC_STAT_FAILED);
41*10465441SEvalZero     }
42*10465441SEvalZero     /* unlock scheduler */
43*10465441SEvalZero     rt_exit_critical();
44*10465441SEvalZero }
45*10465441SEvalZero 
_tc_sample()46*10465441SEvalZero int _tc_sample()
47*10465441SEvalZero {
48*10465441SEvalZero     /* set tc cleanup */
49*10465441SEvalZero     tc_cleanup(_tc_cleanup);
50*10465441SEvalZero     sample_init();
51*10465441SEvalZero 
52*10465441SEvalZero     return 25;
53*10465441SEvalZero }
54*10465441SEvalZero FINSH_FUNCTION_EXPORT(_tc_sample, a thread testcase example);
55*10465441SEvalZero #else
rt_application_init()56*10465441SEvalZero int rt_application_init()
57*10465441SEvalZero {
58*10465441SEvalZero     sample_init();
59*10465441SEvalZero 
60*10465441SEvalZero     return 0;
61*10465441SEvalZero }
62*10465441SEvalZero #endif
63