根据文档(https://lwn.net/Articles/17744/),其中说“nanosleep(),目前是该机制的唯一用户,只需要在重启块中保存唤醒时间,以及指针到用户参数..”。
如果是这样,为什么 nanosleep 需要一个req类型为struct timespec *.
根据 linux 程序手册,“int nanosleep(const struct timespec *req, struct timespec *rem); 如果调用被信号处理程序中断,则 nanosleep() 返回 -1,将 errno 设置为 EINTR,并写入剩余时间除非 rem 为 NULL,否则进入 rem 指向的结构。"
我认为,如果内核可以在内部重新启动系统调用('do_nanosleep'),则无需将您还剩下多长时间的睡眠时间再次返回给用户空间。那是我无法理解的。