linux 和 ecos 内核线程创建/信号量/event等对比

ecos:

 1 int gx_thread_create (const char *thread_name, gx_thread_id *thread_id,
 2         void(*entry_func)(void *), void *arg,
 3         void *stack_base,
 4         unsigned int stack_size,
 5         unsigned int priority,
 6         gx_thread_info *thread_info)
 7 {
 8 #define GX_THREAD_PRIORITY_MAX  255
 9 
10     if (priority > GX_THREAD_PRIORITY_MAX || thread_id == NULL \
11             || entry_func == NULL || thread_name == NULL \
12             || stack_base == NULL || thread_info == NULL)
13         return -1; 
14 
15     cyg_thread_create_ex((cyg_addrword_t)priority, (cyg_thread_entry_t *)entry_func, (cyg_addrword_t)arg,
16             (char *)thread_name, stack_base, (cyg_ucount32)stack_size, thread_id, thread_info, 0); 
17 
18     cyg_thread_resume(*thread_id);
19 
20     return 0;
21 }

 linux:

 1 int gx_thread_create (const char *thread_name, gx_thread_id *thread_id,
 2         void(*entry_func)(void *), void *arg,
 3         void *stack_base,
 4         unsigned int stack_size,
 5         unsigned int priority,
 6         gx_thread_info *thread_info)
 7 {
 8     struct task_struct *task = NULL;
 9 
10     task = kthread_create((int (*)(void *))entry_func, arg, "%s",thread_name);
11     if(task == NULL)
12         return -1; 
13 
14     GXAV_DBG("%s(),task : %p\n",__func__,task);
15 
16     *thread_id = (unsigned int)task;
17 
18     GXAV_DBG("%s(),thread_id : 0x%x\n",__func__,*thread_id);
19 
20     wake_up_process(task);
21 
22     return 0;
23 }

 

 

aa

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值