當系統收到中斷後,會通過中斷向量表跳轉到中斷處理函式中。
例如,時鐘中斷觸發時,會執行到el1_irq,進而執行irq_handler。當從irq_handler返回後,中斷處理函式就完成了,此時產生乙個搶占點,首先ldr w24, [tsk, #tsk_ti_preempt]讀取當前程序struct task_struct中的premmpt_count值,如果為0表示可以搶占排程,不為0的話,說明已經被搶占了,不能再次搶占,跳到1中;然後繼續判斷當前程序是否已經設定了tif_need_resched標誌位(時鐘中斷的處理函式會根據需要設定程序的此標誌位),如果沒有設定,不能被搶占排程,跳到1中,否則跳到el1_preempt,進行搶占排程。
#ifdef config_preempt
ldr w24, [tsk, #tsk_ti_preempt] // get preempt count
cbnz w24, 1f // preempt count != 0
ldr x0, [tsk, #tsk_ti_flags] // get flags
tbz x0, #tif_need_resched, 1f // needs rescheduling?
bl el1_preempt
1:#endif
#ifdef config_trace_irqflags
bl trace_hardirqs_on
#endif
kernel_exit 1
endproc(el1_irq)
#ifdef config_preempt
el1_preempt:
mov x24, lr
1: bl preempt_schedule_irq // irq en/disable is done inside
ldr x0, [tsk, #tsk_ti_flags] // get new tasks ti_flags
tbnz x0, #tif_need_resched, 1b // needs rescheduling?
ret x24
#endif
執行緒處理完成,如何立即釋放執行緒?
因此執行緒程式就如下了 include include void func void arg int main int argc,char argv return 0 直到,我們的網路伺服器在客戶端頻繁斷開 鏈結.終於出現了建立執行緒失敗。於是,要執行緒處理函式退出時,執行緒資源立即被 那麼就應該使...
php安裝完成後如何新增mysql擴充套件
php安裝完成後新增mysql擴充套件基本步驟如下 1 進入php源 目錄 1 cd usr php 5.3.1 2 再進入要新增的mysql擴充套件原始碼目錄 1 2 cd ext mysql yum install autoconf centos5.4需安裝 3 呼叫已經編譯好的php可執行程式...
PHP 登入完成後如何跳轉上一訪問頁面
專案需求 訪問 頁面時,有的頁面需要授權才能訪問,這時候就會要求使用者登入,跳轉到登入頁面login.php,怎麼實現pxrscwplc登入後返回到剛才訪問的頁面。解決思路1 在跳轉到登入頁面之前要將當前訪問頁面的url儲存到cookie裡面,登入驗證授權通過後,從cookie中取出這個url值,跳...