1

カーネルの sched.c の関数でPC1LR2の両方が指しいるという問題に直面しています。cpuacct_charge()これが発生する可能性のあるシナリオはありますか? 私の分析では、cpuacct_charge()関数に再帰がないことが示されています。コードを提供できません。ただし、これが発生した場合のシナリオは大きな助けになります。

明確化のために : PC と LR の値は、関数内の異なる場所を指しています。
void cpuacct_charge(struct task_struct *tsk, u64 cputime)

注 1: PC - プログラム カウンタ
注 2: LR - リンク レジスタ

4

1 に答える 1

1

関数が戻ると、基本的にリンク レジスタ内のアドレスに分岐します。

したがって、関数が戻った直後にプログラムを一時停止したと思われます。

于 2013-03-08T12:05:04.797 に答える