On Tue, 30 Nov 2010 16:53:07 +0000 "Popescu, CatalinX" <[email protected]> wrote:
> I have a question regarding the synchronization mechanism > wait_for_completion_interruptible_timeout. Sometimes, it just returns > an ERESTARTSYS error because the scheduler detects a pending signal : > TIF_SIGPENDING is set into thread_info. But looking at sigpending > from task_struct there are no pending signals... If the userspace is multi-threaded and using posix signals then it is I suppose possible another thread handled a signal that went to a thread group. > What is the driver supposed to do when receiving ERESTARTSYS in > general case? Is it supposed to return EAGAIN so the signal gets > handled by user space? That depends. If it makes more sense for it to restart the system call then ERESTARTSYS may be what you want to return. > In this particular case, when there are no real signals pending, is > the driver allowed to call recalc_sigpending or any equivalent > function in order to clear flag TIF_SIGPENDING and issue another call > to wait_for_completion_interruptible_timeout (this time blocking) ? I can't see a situation in which that should occur. _______________________________________________ MeeGo-kernel mailing list [email protected] http://lists.meego.com/listinfo/meego-kernel
