函数逻辑报告

Linux Kernel (v4.4)

Source File:kernel\sched\core.c Create Date:2016-01-14 18:48:27
Last Modify:2016-01-11 07:01:32 Copyright©Brick
首页 函数Tree
注解内核English

函数名称:__schedule

函数原型:static void __attribute__((__section__( ".sched.text"))) __attribute__((no_instrument_function)) __schedule(bool preempt)

返回类型:static void __attribute__((__section__( ".sched.text"))) __attribute__((no_instrument_function))

函数参数:

类型 参数名称备注
bool preempt

功能描述:调度器

3110  cpu等于当前cpu ID
3111  CPU运行队列等于获取指定处理器运行队列指针
3112  RCU切换
3113  prev等于当前任务
3123  如果此条件成立可能性小(为编译器优化)preempt_enable_no_resched_notrace
3126  调试检查和统计
3128  如果测试特征位清除高精度任务
3136  上锁前设置屏障
3137  获取指定的自旋锁并禁止中断
3138  避免死锁处理
3140  CPU运行队列等于左移1位
3142  switch_count等于上下文切换计数的地址
3143  如果非preempt任务状态
3145  任务状态等于就绪态
3146  否则
3147  删除进程
3148  归属队列等于0
3155  如果任务标志按位与进程处于工作队列中
3163  switch_count等于切换计数的地址
3166  如果进程处于任务队列更新rq运行时间
3169  next等于选择下一个要运行的进程
3170  清除调度位
3171  清除CPU的内核抢占
3172  CPU运行队列等于0
3174  如果此条件成立可能性大(为编译器优化)
3175  切换计数器自加
3176  当前任务等于next
3177  *switch_count
3179  trace_sched_switch(preempt, prev, next)
3180  CPU运行队列等于进程切换
3181  根据rq获取CPU
3182  否则
3183  解除死锁处理
3184  解自旋锁并开中断
3187  负载均衡配置
调用函数
函数名称功能描述
schedule进程调度
preempt_schedule_common
preempt_schedule_irqthis is the entry point to schedule() from kernel preemption off of irq context. Note, that this is called and return with irqs disabled. This will protect us against recursive calling from irq.