2016-11-07 72 views
0

我正在跟蹤一段在嵌入式Linux中工作的程序的代碼,並且遇到了這個問題。我無法谷歌出有用的信息,告訴我它是如何工作的。「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 
} 

看來這個龍旗值永遠不會改變的,什麼是save_and_cli()函數?

謝謝,如果你讀這個。

回答

0

IIRC save_and_clilocal_irq_save

它保存了局部中斷傳送的當前狀態,然後禁用它的「古」的版本。

功能local_irq_restore用於恢復IRQ狀態保存的local_irq_save

Here for reference

+1

LOL。誠然,這是非常「古老」的。難怪找到一些文件很難。謝啦。很有幫助。 –