summaryrefslogtreecommitdiffstats
path: root/c/src/exec/posix/src/psignal.c
diff options
context:
space:
mode:
authorMark Johannes <Mark.Johannes@OARcorp.com>1996-08-15 16:24:44 +0000
committerMark Johannes <Mark.Johannes@OARcorp.com>1996-08-15 16:24:44 +0000
commit948721cd19ef3fabecd08211516c994269fd3e43 (patch)
tree39015190469085ec029e888d4dec01ec50f530e1 /c/src/exec/posix/src/psignal.c
parentfixed typo for NOTSUP -> ENOTSUP (diff)
downloadrtems-948721cd19ef3fabecd08211516c994269fd3e43.tar.bz2
pthread_kill: moved check for SA_SIGINFO to allow for validation of all
parameters. Also changed returns to macro of -1 and errno set.
Diffstat (limited to 'c/src/exec/posix/src/psignal.c')
-rw-r--r--c/src/exec/posix/src/psignal.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/c/src/exec/posix/src/psignal.c b/c/src/exec/posix/src/psignal.c
index 622f827c69..8ccc89b6fa 100644
--- a/c/src/exec/posix/src/psignal.c
+++ b/c/src/exec/posix/src/psignal.c
@@ -1254,14 +1254,11 @@ int pthread_kill(
* RTEMS does not support sending a siginfo signal to a specific thread.
*/
- if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO )
- return ENOSYS;
-
the_thread = _POSIX_Threads_Get( thread, &location );
switch ( location ) {
case OBJECTS_ERROR:
case OBJECTS_REMOTE:
- return ESRCH;
+ set_errno_and_return_minus_one( ESRCH );
case OBJECTS_LOCAL:
/*
* If sig == 0 then just validate arguments
@@ -1271,14 +1268,17 @@ int pthread_kill(
if ( sig ) {
+ if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO )
+ set_errno_and_return_minus_one( ENOSYS );
+
/* XXX critical section */
api->signals_pending |= signo_to_mask( sig );
(void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
- }
- _Thread_Enable_dispatch();
- return 0;
+ }
+ _Thread_Enable_dispatch();
+ return 0;
}
return POSIX_BOTTOM_REACHED();