解決up可能會訪問一個不存在的數據結構的問題(down後釋放信號量): 見深入3,page216-217.
1. completion()對應up()
2. wait_for_completion()對應down
與信號量的不同在於, completion等待隊列的自旋鎖確保completion()和wait_for_completion()不會並發,而信號量用於避免down()並發執行
禁中斷:local_irq_disable(), local_irq_save()
使能中斷:local_irq_enable(), local_irq_restore()
禁止可延遲函數:local_bh_disable()
使能可延遲函數:locaLbh_enable()
軟中斷和可延遲函數(tasklet)運行在中斷上下文(在硬件中斷處理結束時激活), 當然也可通過禁止中斷的方式禁止, 但是有時我們還是希望cpu能響應中斷,這是可用preempty字段中的軟中斷計數器,如果為正,不執行就不執行軟中斷(local_bh_disable()給該值加1)