2015-04-02 79 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。