forked from Imagelibrary/rtems
sigtimedwait passes initial test cases of timeout and simple satisfaction.
This commit is contained in:
@@ -140,7 +140,7 @@ boolean _POSIX_signals_Unblock_thread(
|
|||||||
if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
|
if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
|
||||||
the_thread->Wait.return_code = EINTR;
|
the_thread->Wait.return_code = EINTR;
|
||||||
|
|
||||||
the_info = (siginfo_t *) _Thread_Executing->Wait.return_argument;
|
the_info = (siginfo_t *) the_thread->Wait.return_argument;
|
||||||
|
|
||||||
if ( !info ) {
|
if ( !info ) {
|
||||||
the_info->si_signo = signo;
|
the_info->si_signo = signo;
|
||||||
@@ -343,6 +343,7 @@ restart:
|
|||||||
_ISR_Enable( level );
|
_ISR_Enable( level );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
_ISR_Enable( level );
|
||||||
|
|
||||||
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
|
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
|
||||||
|
|
||||||
@@ -801,7 +802,10 @@ int sigtimedwait(
|
|||||||
the_info->si_value.sival_int = 0;
|
the_info->si_value.sival_int = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
the_info->si_signo = -1;
|
||||||
|
|
||||||
_Thread_Disable_dispatch();
|
_Thread_Disable_dispatch();
|
||||||
|
the_thread->Wait.queue = &_POSIX_signals_Wait_queue;
|
||||||
the_thread->Wait.return_code = EINTR;
|
the_thread->Wait.return_code = EINTR;
|
||||||
the_thread->Wait.option = *set;
|
the_thread->Wait.option = *set;
|
||||||
the_thread->Wait.return_argument = (void *) the_info;
|
the_thread->Wait.return_argument = (void *) the_info;
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ boolean _POSIX_signals_Unblock_thread(
|
|||||||
if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
|
if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
|
||||||
the_thread->Wait.return_code = EINTR;
|
the_thread->Wait.return_code = EINTR;
|
||||||
|
|
||||||
the_info = (siginfo_t *) _Thread_Executing->Wait.return_argument;
|
the_info = (siginfo_t *) the_thread->Wait.return_argument;
|
||||||
|
|
||||||
if ( !info ) {
|
if ( !info ) {
|
||||||
the_info->si_signo = signo;
|
the_info->si_signo = signo;
|
||||||
@@ -343,6 +343,7 @@ restart:
|
|||||||
_ISR_Enable( level );
|
_ISR_Enable( level );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
_ISR_Enable( level );
|
||||||
|
|
||||||
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
|
for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {
|
||||||
|
|
||||||
@@ -801,7 +802,10 @@ int sigtimedwait(
|
|||||||
the_info->si_value.sival_int = 0;
|
the_info->si_value.sival_int = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
the_info->si_signo = -1;
|
||||||
|
|
||||||
_Thread_Disable_dispatch();
|
_Thread_Disable_dispatch();
|
||||||
|
the_thread->Wait.queue = &_POSIX_signals_Wait_queue;
|
||||||
the_thread->Wait.return_code = EINTR;
|
the_thread->Wait.return_code = EINTR;
|
||||||
the_thread->Wait.option = *set;
|
the_thread->Wait.option = *set;
|
||||||
the_thread->Wait.return_argument = (void *) the_info;
|
the_thread->Wait.return_argument = (void *) the_info;
|
||||||
|
|||||||
Reference in New Issue
Block a user