source: rtems/testsuites/psxtests/psxsignal05/init.c @ b053cab

4.104.115
Last change on this file since b053cab was b053cab, checked in by Joel Sherrill <joel.sherrill@…>, on 08/05/09 at 18:13:29

2009-08-05 Joel Sherrill <joel.sherrill@…>

  • Makefile.am, configure.ac: Add a test to exercise an odd case in _POSIX_signals_Clear_signals.
  • psxsignal05/.cvsignore, psxsignal05/Makefile.am, psxsignal05/init.c, psxsignal05/psxsignal05.doc, psxsignal05/psxsignal05.scn: New files.
  • Property mode set to 100644
File size: 2.1 KB
Line 
1/*
2 *  COPYRIGHT (c) 1989-2009.
3 *  On-Line Applications Research Corporation (OAR).
4 *
5 *  The license and distribution terms for this file may be
6 *  found in the file LICENSE in this distribution or at
7 *  http://www.rtems.com/license/LICENSE.
8 *
9 *  $Id$
10 */
11
12#define TEST_NAME                "05"
13#define TEST_STRING              "User Signals"
14#define SIGNAL_ONE               SIGUSR1
15#define SIGNAL_TWO               SIGUSR2
16
17#include <pmacros.h>
18#include <signal.h>
19#include <errno.h>
20#include <errno.h>
21#include <rtems/posix/psignal.h>
22
23void Signal_handler(
24  int        signo,
25  siginfo_t *info,
26  void      *arg
27)
28{
29  puts( "Signal handler hit" );
30  rtems_test_exit(0);
31}
32
33const char *signal_name(int signo)
34{
35  if (signo == SIGUSR1)
36    return "SIGUSR1";
37  if (signo == SIGUSR2)
38    return "SIGUSR2";
39  if (signo == SIGRTMIN)
40    return "SIGRTMIN";
41  if (signo == SIGRTMAX)
42    return "SIGRTMAX";
43  return "unknown-signal";
44}
45
46void *POSIX_Init(
47  void *argument
48)
49{
50  struct sigaction    act;
51  siginfo_t           info;
52  bool                bc;
53
54  puts( "\n\n*** POSIX TEST SIGNAL " TEST_NAME " ***" );
55
56  act.sa_handler = NULL;
57  act.sa_sigaction = Signal_handler;
58  act.sa_flags   = SA_SIGINFO;
59  sigaction( SIGNAL_ONE, &act, NULL );
60  sigaction( SIGNAL_TWO, &act, NULL );
61
62  printf(
63   "Init - _POSIX_signals_Clear_signals when signals pending but\n"
64   "Init -    not queued on SA_SIGINFO configured signal.\n"
65  );
66
67  /* cheat and put signal directly in */
68  _POSIX_signals_Pending |= signo_to_mask( SIGUSR1 );
69
70  bc = _POSIX_signals_Clear_signals(
71    _Thread_Executing->API_Extensions[ THREAD_API_POSIX ],
72    SIGNAL_ONE,
73    &info,
74    true,              /* is_global */
75    false              /* check_blocked */
76  );
77  assert( bc );
78
79  puts( "*** END OF POSIX TEST SIGNAL " TEST_NAME " ***" );
80  rtems_test_exit(0);
81
82  return NULL; /* just so the compiler thinks we returned something */
83}
84
85/* configuration information */
86
87#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
88#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
89
90#define CONFIGURE_MAXIMUM_POSIX_THREADS        1
91
92#define CONFIGURE_POSIX_INIT_THREAD_TABLE
93
94#define CONFIGURE_INIT
95#include <rtems/confdefs.h>
Note: See TracBrowser for help on using the repository browser.