处理器)"/>
NucleusPlus Signal信号机制(基于ARM处理器)
1、NucluesPlus信号Signal处理流程介绍
NucleusPlus内核信号处理流程是,如果信号是发给自己(发送/处理信号的都为当前线程),那么简单调用信号处理函数即可;如果信号是发送给其他线程的,如果接收信号的线程可以被信号中断,那么构建一个信号栈(单核情况下,发送信号的线程为当前正在执行的线程,那么接收信号的线程肯定是等待执行或者挂起状态,不管是等待执行还是挂起状态,接收信号的线程上下文都保存在线程的栈里面)
2、NucluesPlus线程上下文及信号处理过程
2.1、线程上下文
已中断为例,接收信号的线程执行时因为时间片用完或者中断唤醒了更高优先级线程,接收信号的线程被切换出cpu,那么接收信号线程的中断上下文栈内容如下:
NucluesPlus内核栈为满递减栈(栈底在高地址,栈顶在低地址,栈指针指向栈顶元素),上图中左边为内存低地址,右边为内存高地址,最左边为栈顶;中断处理函数保存中断上下文时,会设置thread -> tc_stack_pointer指向中断上下文栈顶,线程恢复时通过thread -> tc_stack_pointer指针即可获取中断上下文的内容;栈顶元素为上下文类型,1表示为中断上下文(中断需要保存所有寄存器
更多推荐
NucleusPlus Signal信号机制(基于ARM处理器)
发布评论