2017-02-20 12 views
1

なぜ__switch_toはレジスタを介してパラメータを取るように宣言されているのですか?なぜ__switch_toにパラメータを渡すのがレジスタ経由ですか?

extern void FASTCALL(__switch_to(struct task_struct *prev, struct task_struct *next)); 

我々はret_from_forkにそれから戻って1にラベルを付けていない場合には、ケースに関連するかもしれませんか?どうやって?

ソースコード: https://www.kernel.org/pub/linux/kernel/people/marcelo/linux-2.4/include/asm-i386/system.h

(はい、私はそれは私が理由だかと思っによって古い知っている)

答えて

1

要するに、あなたが実際に話すことにしている「スタック」の話をしています「現在のプロセスのスタック」について、そしてすべての通常の状況でこれを指定する必要はありません。しかし、__switch_to()の場合、この関数の目的はあるプロセスから別のプロセスに切り替えることなので、「現在のプロセス」のようなものはありません。 エントリには現在のプロセスがあり、終了時には別のプロセスがありますが、少なくとも2つのプロセスの間では、(スタック上にある)古いプロセスのCPUコンテキストを保存し、新しいプロセスのCPUコンテキスト(スタックから)。

スタックを使用するだけで問題が発生します。

今、私はそれができないとは思わない、それはちょうど役に立たない。

関連する問題