From f9340ed7f43b81e172ebefebbb9fbd558080d1a3 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 3 Dec 2012 11:35:43 +0100 Subject: posix: Add and use This file contains the parts of that are only necessary for the POSIX API implementation. --- cpukit/posix/Makefile.am | 1 + cpukit/posix/include/rtems/posix/psignal.h | 92 +------------------- cpukit/posix/include/rtems/posix/psignalimpl.h | 113 +++++++++++++++++++++++++ cpukit/posix/preinstall.am | 4 + cpukit/posix/src/alarm.c | 2 +- cpukit/posix/src/kill.c | 2 +- cpukit/posix/src/kill_r.c | 2 +- cpukit/posix/src/killinfo.c | 2 +- cpukit/posix/src/pause.c | 8 +- cpukit/posix/src/psignal.c | 2 +- cpukit/posix/src/psignalchecksignal.c | 2 +- cpukit/posix/src/psignalclearprocesssignals.c | 2 +- cpukit/posix/src/psignalclearsignals.c | 2 +- cpukit/posix/src/psignalsetprocesssignals.c | 2 +- cpukit/posix/src/psignalunblockthread.c | 2 +- cpukit/posix/src/pthread.c | 2 +- cpukit/posix/src/pthreadinitthreads.c | 1 - cpukit/posix/src/pthreadkill.c | 2 +- cpukit/posix/src/pthreadsigmask.c | 2 +- cpukit/posix/src/ptimer.c | 1 - cpukit/posix/src/sigaction.c | 2 +- cpukit/posix/src/sigpending.c | 2 +- cpukit/posix/src/sigqueue.c | 2 +- cpukit/posix/src/sigsuspend.c | 7 +- cpukit/posix/src/sigtimedwait.c | 2 +- cpukit/posix/src/sigwait.c | 6 +- cpukit/posix/src/sigwaitinfo.c | 6 +- cpukit/posix/src/timercreate.c | 2 +- cpukit/posix/src/ualarm.c | 2 +- cpukit/sapi/include/confdefs.h | 1 + testsuites/psxtests/psxsignal05/init.c | 4 +- 31 files changed, 148 insertions(+), 134 deletions(-) create mode 100644 cpukit/posix/include/rtems/posix/psignalimpl.h diff --git a/cpukit/posix/Makefile.am b/cpukit/posix/Makefile.am index 5f1c00fa60..78ea3f5443 100644 --- a/cpukit/posix/Makefile.am +++ b/cpukit/posix/Makefile.am @@ -34,6 +34,7 @@ include_rtems_posix_HEADERS += include/rtems/posix/mutex.h include_rtems_posix_HEADERS += include/rtems/posix/posixapi.h include_rtems_posix_HEADERS += include/rtems/posix/priority.h include_rtems_posix_HEADERS += include/rtems/posix/psignal.h +include_rtems_posix_HEADERS += include/rtems/posix/psignalimpl.h include_rtems_posix_HEADERS += include/rtems/posix/pthread.h include_rtems_posix_HEADERS += include/rtems/posix/ptimer.h include_rtems_posix_HEADERS += include/rtems/posix/semaphore.h diff --git a/cpukit/posix/include/rtems/posix/psignal.h b/cpukit/posix/include/rtems/posix/psignal.h index c630c1fd5f..604b98982c 100644 --- a/cpukit/posix/include/rtems/posix/psignal.h +++ b/cpukit/posix/include/rtems/posix/psignal.h @@ -16,44 +16,9 @@ #ifndef _RTEMS_POSIX_PSIGNAL_H #define _RTEMS_POSIX_PSIGNAL_H -#include -#include +#include -#define _States_Is_interruptible_signal( _states ) \ - ( ((_states) & \ - (STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL)) == \ - (STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL)) - -#define SIGACTION_TERMINATE \ - { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Abnormal_termination_handler} } -#define SIGACTION_IGNORE \ - { 0, SIGNAL_ALL_MASK, {SIG_IGN} } -#define SIGACTION_STOP \ - { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Stop_handler} } -#define SIGACTION_CONTINUE \ - { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Continue_handler} } - -#define SIG_ARRAY_MAX (SIGRTMAX + 1) - -/* - * Variables - */ - -extern sigset_t _POSIX_signals_Pending; - -extern const struct sigaction _POSIX_signals_Default_vectors[ SIG_ARRAY_MAX ]; - -extern struct sigaction _POSIX_signals_Vectors[ SIG_ARRAY_MAX ]; - -extern Watchdog_Control _POSIX_signals_Alarm_timer; - -extern Watchdog_Control _POSIX_signals_Ualarm_timer; - -extern Thread_queue_Control _POSIX_signals_Wait_queue; - -extern Chain_Control _POSIX_signals_Inactive_siginfo; - -extern Chain_Control _POSIX_signals_Siginfo[ SIG_ARRAY_MAX ]; +#include /* * POSIX internal siginfo structure @@ -64,58 +29,5 @@ typedef struct { siginfo_t Info; } POSIX_signals_Siginfo_node; -/* - * Internal routines - */ - -void _POSIX_signals_Manager_Initialization(void); - -void _POSIX_signals_Post_switch_extension( - Thread_Control *the_thread -); - -bool _POSIX_signals_Unblock_thread( - Thread_Control *the_thread, - int signo, - siginfo_t *info -); - -bool _POSIX_signals_Check_signal( - POSIX_API_Control *api, - int signo, - bool is_global -); - -bool _POSIX_signals_Clear_signals( - POSIX_API_Control *api, - int signo, - siginfo_t *info, - bool is_global, - bool check_blocked -); - -int killinfo( - pid_t pid, - int sig, - const union sigval *value -); - -void _POSIX_signals_Set_process_signals( - sigset_t mask -); - -void _POSIX_signals_Clear_process_signals( - int signo -); - -/* - * Default signal handlers - */ - -#define _POSIX_signals_Stop_handler NULL -#define _POSIX_signals_Continue_handler NULL - -void _POSIX_signals_Abnormal_termination_handler( int signo ); - #endif /* end of file */ diff --git a/cpukit/posix/include/rtems/posix/psignalimpl.h b/cpukit/posix/include/rtems/posix/psignalimpl.h new file mode 100644 index 0000000000..e61fe3f74b --- /dev/null +++ b/cpukit/posix/include/rtems/posix/psignalimpl.h @@ -0,0 +1,113 @@ +/** + * @file rtems/posix/psignal.h + * + * This include file defines internal information about POSIX signals. + */ + +/* + * COPYRIGHT (c) 1989-2011. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifndef _RTEMS_POSIX_PSIGNALIMPL_H +#define _RTEMS_POSIX_PSIGNALIMPL_H + +#include +#include +#include + +#define _States_Is_interruptible_signal( _states ) \ + ( ((_states) & \ + (STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL)) == \ + (STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL)) + +#define SIGACTION_TERMINATE \ + { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Abnormal_termination_handler} } +#define SIGACTION_IGNORE \ + { 0, SIGNAL_ALL_MASK, {SIG_IGN} } +#define SIGACTION_STOP \ + { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Stop_handler} } +#define SIGACTION_CONTINUE \ + { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Continue_handler} } + +#define SIG_ARRAY_MAX (SIGRTMAX + 1) + +/* + * Variables + */ + +extern sigset_t _POSIX_signals_Pending; + +extern const struct sigaction _POSIX_signals_Default_vectors[ SIG_ARRAY_MAX ]; + +extern struct sigaction _POSIX_signals_Vectors[ SIG_ARRAY_MAX ]; + +extern Watchdog_Control _POSIX_signals_Alarm_timer; + +extern Watchdog_Control _POSIX_signals_Ualarm_timer; + +extern Thread_queue_Control _POSIX_signals_Wait_queue; + +extern Chain_Control _POSIX_signals_Inactive_siginfo; + +extern Chain_Control _POSIX_signals_Siginfo[ SIG_ARRAY_MAX ]; + +/* + * Internal routines + */ + +void _POSIX_signals_Manager_Initialization(void); + +void _POSIX_signals_Post_switch_extension( + Thread_Control *the_thread +); + +bool _POSIX_signals_Unblock_thread( + Thread_Control *the_thread, + int signo, + siginfo_t *info +); + +bool _POSIX_signals_Check_signal( + POSIX_API_Control *api, + int signo, + bool is_global +); + +bool _POSIX_signals_Clear_signals( + POSIX_API_Control *api, + int signo, + siginfo_t *info, + bool is_global, + bool check_blocked +); + +int killinfo( + pid_t pid, + int sig, + const union sigval *value +); + +void _POSIX_signals_Set_process_signals( + sigset_t mask +); + +void _POSIX_signals_Clear_process_signals( + int signo +); + +/* + * Default signal handlers + */ + +#define _POSIX_signals_Stop_handler NULL +#define _POSIX_signals_Continue_handler NULL + +void _POSIX_signals_Abnormal_termination_handler( int signo ); + +#endif +/* end of file */ diff --git a/cpukit/posix/preinstall.am b/cpukit/posix/preinstall.am index 119790b17e..a9f6ebbffa 100644 --- a/cpukit/posix/preinstall.am +++ b/cpukit/posix/preinstall.am @@ -80,6 +80,10 @@ $(PROJECT_INCLUDE)/rtems/posix/psignal.h: include/rtems/posix/psignal.h $(PROJEC $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/posix/psignal.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/posix/psignal.h +$(PROJECT_INCLUDE)/rtems/posix/psignalimpl.h: include/rtems/posix/psignalimpl.h $(PROJECT_INCLUDE)/rtems/posix/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/posix/psignalimpl.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/posix/psignalimpl.h + $(PROJECT_INCLUDE)/rtems/posix/pthread.h: include/rtems/posix/pthread.h $(PROJECT_INCLUDE)/rtems/posix/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/posix/pthread.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/posix/pthread.h diff --git a/cpukit/posix/src/alarm.c b/cpukit/posix/src/alarm.c index 32652b1719..b3c902cbab 100644 --- a/cpukit/posix/src/alarm.c +++ b/cpukit/posix/src/alarm.c @@ -18,7 +18,7 @@ #include #include -#include +#include /* * _POSIX_signals_Alarm_TSR diff --git a/cpukit/posix/src/kill.c b/cpukit/posix/src/kill.c index b042e30136..ee59fe4b84 100644 --- a/cpukit/posix/src/kill.c +++ b/cpukit/posix/src/kill.c @@ -18,7 +18,7 @@ #include #include -#include +#include int kill( pid_t pid, diff --git a/cpukit/posix/src/kill_r.c b/cpukit/posix/src/kill_r.c index f2e7c20552..301c0603cf 100644 --- a/cpukit/posix/src/kill_r.c +++ b/cpukit/posix/src/kill_r.c @@ -18,7 +18,7 @@ #include #include -#include +#include #if defined(RTEMS_NEWLIB) diff --git a/cpukit/posix/src/killinfo.c b/cpukit/posix/src/killinfo.c index c8b4565e14..59329ee49e 100644 --- a/cpukit/posix/src/killinfo.c +++ b/cpukit/posix/src/killinfo.c @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include diff --git a/cpukit/posix/src/pause.c b/cpukit/posix/src/pause.c index 10fa8b5e4f..3a307d6e93 100644 --- a/cpukit/posix/src/pause.c +++ b/cpukit/posix/src/pause.c @@ -13,13 +13,9 @@ #include "config.h" #endif -#include +#include #include -#include - -#include -#include -#include +#include /* * 3.4.2 Suspend Process Execution, P1003.1b-1993, p. 81 diff --git a/cpukit/posix/src/psignal.c b/cpukit/posix/src/psignal.c index 6d63b29272..aa76d0dcc7 100644 --- a/cpukit/posix/src/psignal.c +++ b/cpukit/posix/src/psignal.c @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/cpukit/posix/src/psignalchecksignal.c b/cpukit/posix/src/psignalchecksignal.c index 46c0c857ff..171d7c8121 100644 --- a/cpukit/posix/src/psignalchecksignal.c +++ b/cpukit/posix/src/psignalchecksignal.c @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/cpukit/posix/src/psignalclearprocesssignals.c b/cpukit/posix/src/psignalclearprocesssignals.c index 491f1fad71..3c3cdf4e68 100644 --- a/cpukit/posix/src/psignalclearprocesssignals.c +++ b/cpukit/posix/src/psignalclearprocesssignals.c @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/cpukit/posix/src/psignalclearsignals.c b/cpukit/posix/src/psignalclearsignals.c index 01f23990d7..390bcd1579 100644 --- a/cpukit/posix/src/psignalclearsignals.c +++ b/cpukit/posix/src/psignalclearsignals.c @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/cpukit/posix/src/psignalsetprocesssignals.c b/cpukit/posix/src/psignalsetprocesssignals.c index a6fa6ef45e..22609bf2af 100644 --- a/cpukit/posix/src/psignalsetprocesssignals.c +++ b/cpukit/posix/src/psignalsetprocesssignals.c @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/cpukit/posix/src/psignalunblockthread.c b/cpukit/posix/src/psignalunblockthread.c index 025ce96fab..5dc6ef587b 100644 --- a/cpukit/posix/src/psignalunblockthread.c +++ b/cpukit/posix/src/psignalunblockthread.c @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/cpukit/posix/src/pthread.c b/cpukit/posix/src/pthread.c index e6f928941d..8923aebbb2 100644 --- a/cpukit/posix/src/pthread.c +++ b/cpukit/posix/src/pthread.c @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/cpukit/posix/src/pthreadinitthreads.c b/cpukit/posix/src/pthreadinitthreads.c index 06b859b4fc..b2c850fda2 100644 --- a/cpukit/posix/src/pthreadinitthreads.c +++ b/cpukit/posix/src/pthreadinitthreads.c @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include diff --git a/cpukit/posix/src/pthreadkill.c b/cpukit/posix/src/pthreadkill.c index ede2d99191..0caaa2a22f 100644 --- a/cpukit/posix/src/pthreadkill.c +++ b/cpukit/posix/src/pthreadkill.c @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include diff --git a/cpukit/posix/src/pthreadsigmask.c b/cpukit/posix/src/pthreadsigmask.c index 90b174e45b..b424daba78 100644 --- a/cpukit/posix/src/pthreadsigmask.c +++ b/cpukit/posix/src/pthreadsigmask.c @@ -21,7 +21,7 @@ #include #include -#include +#include #include int pthread_sigmask( diff --git a/cpukit/posix/src/ptimer.c b/cpukit/posix/src/ptimer.c index 178ec5e191..2e3526730a 100644 --- a/cpukit/posix/src/ptimer.c +++ b/cpukit/posix/src/ptimer.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include diff --git a/cpukit/posix/src/sigaction.c b/cpukit/posix/src/sigaction.c index f3729807d2..9fb04a042d 100644 --- a/cpukit/posix/src/sigaction.c +++ b/cpukit/posix/src/sigaction.c @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include diff --git a/cpukit/posix/src/sigpending.c b/cpukit/posix/src/sigpending.c index 58e41d3b44..9145c988e4 100644 --- a/cpukit/posix/src/sigpending.c +++ b/cpukit/posix/src/sigpending.c @@ -18,7 +18,7 @@ #include #include -#include +#include #include int sigpending( diff --git a/cpukit/posix/src/sigqueue.c b/cpukit/posix/src/sigqueue.c index 0b26eacb67..b1f6cee67e 100644 --- a/cpukit/posix/src/sigqueue.c +++ b/cpukit/posix/src/sigqueue.c @@ -18,7 +18,7 @@ #include #include -#include +#include int sigqueue( pid_t pid, diff --git a/cpukit/posix/src/sigsuspend.c b/cpukit/posix/src/sigsuspend.c index 6ef961e25c..f84d11f119 100644 --- a/cpukit/posix/src/sigsuspend.c +++ b/cpukit/posix/src/sigsuspend.c @@ -13,13 +13,11 @@ #include "config.h" #endif +#include #include #include #include -#include -#include -#include #include int sigsuspend( @@ -29,9 +27,6 @@ int sigsuspend( sigset_t saved_signals_blocked; sigset_t current_unblocked_signals; int status; - POSIX_API_Control *api; - - api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; /* * We use SIG_BLOCK and not SIG_SETMASK because there may be diff --git a/cpukit/posix/src/sigtimedwait.c b/cpukit/posix/src/sigtimedwait.c index fc8cc9cac6..1f23356056 100644 --- a/cpukit/posix/src/sigtimedwait.c +++ b/cpukit/posix/src/sigtimedwait.c @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include #include diff --git a/cpukit/posix/src/sigwait.c b/cpukit/posix/src/sigwait.c index 5a73e85933..cfb733034b 100644 --- a/cpukit/posix/src/sigwait.c +++ b/cpukit/posix/src/sigwait.c @@ -15,14 +15,10 @@ #include "config.h" #endif -#include +#include #include #include -#include -#include -#include - int sigwait( const sigset_t *set, int *sig diff --git a/cpukit/posix/src/sigwaitinfo.c b/cpukit/posix/src/sigwaitinfo.c index e90125e0cf..0b2045bcad 100644 --- a/cpukit/posix/src/sigwaitinfo.c +++ b/cpukit/posix/src/sigwaitinfo.c @@ -15,12 +15,8 @@ #include "config.h" #endif +#include #include -#include - -#include -#include -#include int sigwaitinfo( const sigset_t *set, diff --git a/cpukit/posix/src/timercreate.c b/cpukit/posix/src/timercreate.c index 86981eafd0..6dfa75b9c8 100644 --- a/cpukit/posix/src/timercreate.c +++ b/cpukit/posix/src/timercreate.c @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include diff --git a/cpukit/posix/src/ualarm.c b/cpukit/posix/src/ualarm.c index 0e13908a22..2a2f975d67 100644 --- a/cpukit/posix/src/ualarm.c +++ b/cpukit/posix/src/ualarm.c @@ -18,7 +18,7 @@ #include #include -#include +#include #include /* diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h index cddfccb80b..3939cf1e34 100644 --- a/cpukit/sapi/include/confdefs.h +++ b/cpukit/sapi/include/confdefs.h @@ -1651,6 +1651,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #include #include #include + #include #include #include #include diff --git a/testsuites/psxtests/psxsignal05/init.c b/testsuites/psxtests/psxsignal05/init.c index 1556a94118..04c78793f2 100644 --- a/testsuites/psxtests/psxsignal05/init.c +++ b/testsuites/psxtests/psxsignal05/init.c @@ -11,6 +11,8 @@ #include "config.h" #endif +#define __RTEMS_VIOLATE_KERNEL_VISIBILITY__ + #define TEST_NAME "05" #define TEST_STRING "User Signals" #define SIGNAL_ONE SIGUSR1 @@ -20,7 +22,7 @@ #include #include #include -#include +#include /* forward declarations to avoid warnings */ void *POSIX_Init(void *argument); -- cgit v1.2.3