File indexing completed on 2025-05-11 08:24:40
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifdef HAVE_CONFIG_H
0030 #include "config.h"
0031 #endif
0032
0033 #define TEST_NAME "PSXSIGNAL 5"
0034 #define TEST_STRING "User Signals"
0035 #define SIGNAL_ONE SIGUSR1
0036 #define SIGNAL_TWO SIGUSR2
0037
0038 #include <pmacros.h>
0039 #include <signal.h>
0040 #include <errno.h>
0041 #include <errno.h>
0042 #include <rtems/posix/psignalimpl.h>
0043
0044 const char rtems_test_name[] = TEST_NAME;
0045
0046
0047 void *POSIX_Init(void *argument);
0048 void Signal_handler(int signo, siginfo_t *info, void *arg);
0049 const char *signal_name(int signo);
0050
0051 void Signal_handler(
0052 int signo,
0053 siginfo_t *info,
0054 void *arg
0055 )
0056 {
0057 puts( "Signal handler hit" );
0058 rtems_test_exit(0);
0059 }
0060
0061 const char *signal_name(int signo)
0062 {
0063 if (signo == SIGUSR1)
0064 return "SIGUSR1";
0065 if (signo == SIGUSR2)
0066 return "SIGUSR2";
0067 if (signo == SIGRTMIN)
0068 return "SIGRTMIN";
0069 if (signo == SIGRTMAX)
0070 return "SIGRTMAX";
0071 return "unknown-signal";
0072 }
0073
0074 void *POSIX_Init(
0075 void *argument
0076 )
0077 {
0078 struct sigaction act;
0079 siginfo_t info;
0080 bool bc;
0081
0082 TEST_BEGIN();
0083
0084 act.sa_handler = NULL;
0085 act.sa_sigaction = Signal_handler;
0086 act.sa_flags = SA_SIGINFO;
0087 sigaction( SIGNAL_ONE, &act, NULL );
0088 sigaction( SIGNAL_TWO, &act, NULL );
0089
0090 printf(
0091 "Init - _POSIX_signals_Clear_signals when signals pending but\n"
0092 "Init - not queued on SA_SIGINFO configured signal.\n"
0093 );
0094
0095
0096 _POSIX_signals_Pending |= signo_to_mask( SIGUSR1 );
0097
0098 bc = _POSIX_signals_Clear_signals(
0099 _Thread_Get_executing()->API_Extensions[ THREAD_API_POSIX ],
0100 SIGNAL_ONE,
0101 &info,
0102 true,
0103 false,
0104 true
0105 );
0106 rtems_test_assert( bc );
0107
0108 TEST_END();
0109 rtems_test_exit(0);
0110
0111 return NULL;
0112 }
0113
0114
0115
0116 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0117 #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
0118
0119 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0120
0121 #define CONFIGURE_MAXIMUM_POSIX_THREADS 1
0122
0123 #define CONFIGURE_POSIX_INIT_THREAD_TABLE
0124
0125 #define CONFIGURE_INIT
0126 #include <rtems/confdefs.h>