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*10465441SEvalZerostatic 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*10465441SEvalZerostatic 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*10465441SEvalZeroint 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*10465441SEvalZerostatic 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*10465441SEvalZeroint _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*10465441SEvalZeroint rt_application_init() 57*10465441SEvalZero { 58*10465441SEvalZero sample_init(); 59*10465441SEvalZero 60*10465441SEvalZero return 0; 61*10465441SEvalZero } 62*10465441SEvalZero #endif 63