2015-04-02 490 views
0

這樣看來,從nanosleep()kernel/time/hrtimer.c的來源和restart_syscall()的聯機幫助,爲了使nanosleep()與信號後,正確的超時重新啓動,這樣可以節省一些國家爲current_thread_info()->restart_block,返回ERESTART_RESTARTBLOCK並且信號在信號處理程序返回執行此操作後,傳遞代碼將安排restart_syscall()被調用。但是:ERESTART_RESTARTBLOCK和restart_syscall混亂

  • 對於一個系統調用,current_thread_info()->restart_block只有空間,那麼在遞歸信號的情況下會發生什麼?
  • 在調用信號處理程序之前,ARM和x86信號傳遞代碼會重置current_thread_info()->restart_block
  • ARM信號傳輸代碼不安排調用restart_syscall(),而是將返回碼設置爲-EINTR

我在這段代碼的目的或功能方面的錯誤在哪裏?

回答

0

我已經解決了這個問題,它允許使用ptrace檢查信號附加一個調試器,並改變進程的狀態,當信號處理程序中斷時,此類系統調用會返回EINTR。