- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这包括其他字段,例如 static_prio 和策略。我知道根据定义,子进程从父进程继承它们,但是它发生在 do_fork() 的代码中的哪里?
最佳答案
新分配的task_struct的“prio”字段在sched_fork()函数中定义。sched_fork()函数的调用流程为fork() -> sys_fork() -> do_fork() -> copy_process() -> sched_fork()。
下面是 sched_fork() 函数供您引用。 (内核版本3.7.5)
void sched_fork(struct task_struct *p)
{
unsigned long flags;
int cpu = get_cpu();
__sched_fork(p);
/*
* We mark the process as running here. This guarantees that
* nobody will actually run it, and a signal or other external
* event cannot wake it up and insert it on the runqueue either.
*/
p->state = TASK_RUNNING;
/*
* Make sure we do not leak PI boosting priority to the child.
*/
p->prio = current->normal_prio;
/*
* Revert to default priority/policy on fork if requested.
*/
if (unlikely(p->sched_reset_on_fork)) {
if (task_has_rt_policy(p)) {
p->policy = SCHED_NORMAL;
p->static_prio = NICE_TO_PRIO(0);
p->rt_priority = 0;
} else if (PRIO_TO_NICE(p->static_prio) < 0)
p->static_prio = NICE_TO_PRIO(0);
p->prio = p->normal_prio = __normal_prio(p);
set_load_weight(p);
/*
* We don't need the reset flag anymore after the fork. It has
* fulfilled its duty:
*/
p->sched_reset_on_fork = 0;
}
.....
......
}
关于linux - do_fork() 在哪里为新分配的 task_struct 定义了 "prio"字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16324015/
我想通过 update_all 改变很多记录的属性。用户应该能够相对更改优先级(记录 1 的优先级为 0,记录 2 的优先级为 200,用户可以选择给他们 +200,这样他们最终分别得到优先级 200
我尝试使用流量控制选项将流量从 Android 手机上的一个接口(interface)重定向到另一个接口(interface)。 尝试该命令时, tc qdisc add dev wlan0 root
这包括其他字段,例如 static_prio 和策略。我知道根据定义,子进程从父进程继承它们,但是它发生在 do_fork() 的代码中的哪里? 最佳答案 新分配的task_struct的“prio”
我正在构建一个具有各种网络流量的实时嵌入式 Linux 应用程序。在这组流量中,有两个连接是时间关键的。一个是输入数据,另一个是输出数据。我的应用程序需要此流量优先于其他非时间关键流量。 我关心两件事
我是一名优秀的程序员,十分优秀!