0
LKD第3版では、local_irq_save(flags)APIは割り込みシステムの状態を保存し、local_irq_restore(flags)を使用してそれを復元します。local_irq_save(flags)、このAPIはどのように割り込みシステムの状態を保存しますか?
1)割り込みシステムの状態はどういう意味ですか?
2)値が渡されるとき、ローカル変数はどのようにコンテンツを格納しますか?
LKD第3版では、local_irq_save(flags)APIは割り込みシステムの状態を保存し、local_irq_restore(flags)を使用してそれを復元します。local_irq_save(flags)、このAPIはどのように割り込みシステムの状態を保存しますか?
1)割り込みシステムの状態はどういう意味ですか?
2)値が渡されるとき、ローカル変数はどのようにコンテンツを格納しますか?
1)有効、無効です。私はそれが本で説明されていると確信しています。
2)コードを見てみましたか?
#define raw_local_irq_restore(flags) \
do { \
typecheck(unsigned long, flags); \
arch_local_irq_restore(flags); \
} while (0)
#define raw_local_save_flags(flags) \
do { \
typecheck(unsigned long, flags); \
flags = arch_local_save_flags(); \
} while (0)
これらは機能ではなく、マクロです。ユーザー空間の手巻きCプログラムでの動作を簡単に検証できます。間違いなく、マクロをvarに変更してアドレスを「取得」しないようにするのは間違いです。