2016-11-07 7 views
0

私は組み込みLinuxで動作するプログラム用のコードをトレースしていましたが、これが発生しました。私はそれが本当にどのように働くかを私に見せるために有益な情報をGoogleに送り出すことができなかった。 「save_and_cli(flag)」は実際にどのように機能しますか?

コードのこの作品

は次のように書かれている:

unsigned char foo(*someaddress){ 
unsigned long flags = 0; //why use a long? 
flags = save_and_cli(); //what is this? 
spin_lock_irqsave(&someaddress, flags);//ok, this is a spin lock 

...do something... 

restore_flags(flags); //release something? 
spin_unlock_irqrestore(&someaddress, flags);//release lock 
} 

それはこのLONG旗の値が変更されることはありませんようだとsave_and_cli()関数は何ですか?

お読みいただきありがとうございます。

答えて

0

IIRC save_and_cliは、それがローカル割り込み配信の現在の状態を保存し、それを無効にlocal_irq_save

の「古代」バージョンです。

機能local_irq_restoreはLOL local_irq_save

Here for reference

+1

によって保存されたIRQの状態を復元するために使用されます。確かに、それは非常に "古代"です。いくつかの文書を見つけることがとても難しいのは不思議ではありません。ありがとう。非常に役立ちます。 –

関連する問題