rtos:zephyr线程操作的线程的生命周期

涉及的配置宏:

 

Main thread:

在内核的初始化时候执行,然后调用main()函数。

Main thread 默认情况下是最高配置的可强占的优先级。如果内核没有配置为可强占的线程,main thread就会使用最低配置的cooperative thread。

执行应用的main()函数;如果这个线程终止将引发致命的错误。

Idle thread:

当系统没有其他工作需要做时,就会执行这个idle thread。这个线程会一直执行不会中断,只要系统一直自运行。这个使线程使用的最低配置的线程优先级,当有其他线程就绪时,就会马上执行其他线程。


 

线程的生命周期(线程的创建,挂起和恢复等操作):
http://docs.zephyrproject.org/kernel/threads/lifecycle.html

 

 

1.    堆栈区
2.    线程控制块 struct  k_thread
3.    线程的入口函数
4.    调度的优先级
5.    线程的选择,在特殊环境下的特殊处理
6.    开始延迟,线程的等待时间开始后的等待时间。
7.    线程运行的模式,线程可以运行在管理员模式或者用户模式。默认情况下是管理员模式,可以访问特权CPU指令。

原文地址链接:
http://docs.zephyrproject.org/kernel/threads/lifecycle.html#thread-termination

zephyr线程操作的接口:
K_THREAD_DEFINE
线程的创建:
k_thread_create();
内核将会初始化线程控制块和堆栈的一段。
线程的终止,线程在执行时可能会因为同步等问题儿终止,终止释放申请到的内存空间,或者是互斥锁等。
线程的异常:
k_thread_abort();
如果线程触发了一个致命的错误例如操作空指针,内核会制动终止这个线程。一个线程可能通过自己或者其他线程调用k_thread_abort()而终止。
k_thread_suspend();
k_thread_resume();
线程在执行过程中可能被挂起,k_thread_suspend()会被挂起,直到调用k_thread_resume().使线程取消挂起状态。
线程属性的选择:
Thread options
可供选择的选项:K_ESSENTIAL,K_FP_REGS,K_SSE_REGS,K_USER和K_inherit_perms
K_THREAD_STACK_DEFINE
K_THREAD_STACK_ARRAY_DEFINE
K_THREAD_STACK_MEMBER
K_THREAD_STACK_SIZEOF
K_THREAD_STACK_BUFFER

在zephyr的线程创建中,有两种方法:

方法1:

#define MY_STACK_SIZE 500
#define MY_PRIORITY 5

extern void my_entry_point(void *, void *, void *);

K_THREAD_STACK_DEFINE(my_stack_area, MY_STACK_SIZE);
struct k_thread my_thread_data;

k_tid_t my_tid = k_thread_create(&my_thread_data, my_stack_area,
                                 K_THREAD_STACK_SIZEOF(my_stack_area),
                                 my_entry_point,
                                 NULL, NULL, NULL,
                                 MY_PRIORITY, 0, K_NO_WAIT);

方法2:

#define MY_STACK_SIZE 500
#define MY_PRIORITY 5

extern void my_entry_point(void *, void *, void *);

K_THREAD_DEFINE(my_tid, MY_STACK_SIZE,
                my_entry_point, NULL, NULL, NULL,
                MY_PRIORITY, 0, K_NO_WAIT);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值