thread.c

thread_block()用于将current_thread 终止变成blocked状态,不能跑,只有在调用thread_unblock()后进入就绪队列。
thread_yield()用于直接把current_thread进入就绪队列,在任意时刻可再次被调用。
list_entry返回一个线程。
idle_thread平常是不在ready_list中的。
1.在thread_start()即系统刚开始时,idle_thread在ready_list中。
2.在ready_list为空时,调用idle_thread。
idle() 在thread_start调用

1.把初始化为0的信号量设为1,即将idle_thread放入就绪队列。
2.把idle_thread的状态设为blocked。


running_thread()返回一个running thread

thread_current()是加上一个check的running_thread
init_thread()

1.初始化thread
2.状态设为blocked
3.把栈的空间变小
4.magic值
5.放入all_list

next_thread_to_run()
{
是否就绪队列为空?返回idle_thread:返回就绪队列的第一个,并移除
}
thread_schedule_tail(prev)
{
current_thread的thread_tick清0
激活process
如果prev已经dying,则销毁。
}
schedule()
{
调用这个的函数是thread_block,thread_exit,thread_yield.因为前提是current_thread状态不能是running。

}

 

总结来看,thread对外有一些接口

1.thread_create()

2.thread_block();

3.thread_unblock()

4.thread_name()

5.thread_current()

6.thread_yield()

7.thread_set_priority()

8.next_thread_to_run()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值