annotate packages/language/c/libc/current/tests/signal/signal1.c @ 66:bf00f99aec69 ecos-sw-2000-02-02

Merge from eCos master repository on 2000-02-02-19:16:44-GMT
author jlarmour
date Wed, 02 Feb 2000 19:57:02 +0000
parents c38311975d4f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1 //========================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
2 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
3 // signal1.c
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
4 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
5 // ISO C signal handling test
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
6 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
7 //========================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
9 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
10 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
11 // The contents of this file are subject to the Red Hat eCos Public License
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
12 // Version 1.1 (the "License"); you may not use this file except in
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
14 // http://www.redhat.com/
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
15 //
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
18 // License for the specific language governing rights and limitations under
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
19 // the License.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
20 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
21 // The Original Code is eCos - Embedded Configurable Operating System,
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
22 // released September 30, 1998.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
23 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
24 // The Initial Developer of the Original Code is Red Hat.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
25 // Portions created by Red Hat are
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
26 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
27 // All Rights Reserved.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
28 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
29 //
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
30 //####COPYRIGHTEND####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
31 //========================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
32 //#####DESCRIPTIONBEGIN####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
33 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
34 // Author(s): jlarmour
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
35 // Contributors: jlarmour
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
36 // Date: 1999-02-18
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
37 // Purpose: Test signal functionality
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
38 // Description: This file contains a number of tests for ISO C signal
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
39 // handling
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
40 // Usage:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
41 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
42 //####DESCRIPTIONEND####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
43 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
44 //========================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
45
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
46 // CONFIGURATION
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
47
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
48 #include <pkgconf/libc.h> // C library configuration
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
49
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
50 // INCLUDES
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
51
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
52 #include <cyg/infra/cyg_type.h> // Common type definitions and support
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
53 #include <cyg/infra/testcase.h> // Test infrastructure
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
54 #include <sys/cstartup.h> // C library initialisation
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
55
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
56 #ifdef CYGPKG_LIBC_SIGNALS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
57 #include <signal.h> // Signal functions
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
58 #include <setjmp.h> // setjmp(), longjmp()
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
59 #include <stdlib.h> // abort()
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
60
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
61 // STATICS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
62
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
63 static int state;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
64 static jmp_buf jbuf;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
65
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
66 // PROTOTYPES
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
67
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
68 // Private libc abort() function
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
69 externC void __abort(void);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
70
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
71 #endif // CYGPKG_LIBC_SIGNALS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
72
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
73 // FUNCTIONS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
74
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
75 externC void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
76 cyg_package_start( void )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
77 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
78 cyg_iso_c_start();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
79 } // cyg_package_start()
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
80
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
81 #ifdef CYGPKG_LIBC_SIGNALS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
82
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
83 static void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
84 myhandler1(int signal)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
85 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
86 CYG_TEST_INFO("myhandler1 called");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
87 ++state;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
88 } // myhandler1()
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
89
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
90 static void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
91 myhandler2(int signal)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
92 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
93 CYG_TEST_INFO("myhandler2 called");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
94 ++state;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
95 longjmp(jbuf, 1);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
96 } // myhandler2()
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
97
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
98 #endif // ifdef CYGPKG_LIBC_SIGNALS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
99
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
100 int
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
101 main( int argc, char *argv[] )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
102 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
103 #ifdef CYGPKG_LIBC_SIGNALS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
104 __sighandler_t handler1;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
105 int rc;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
106
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
107 // special callout to request GDB to alter its handling of signals
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
108 CYG_TEST_GDBCMD("handle SIGTERM nostop");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
109 CYG_TEST_GDBCMD("handle SIGABRT nostop");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
110
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
111 #endif // ifdef CYGPKG_LIBC_SIGNALS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
112
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
113 CYG_TEST_INIT();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
114
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
115 CYG_TEST_INFO("Starting tests from testcase " __FILE__ " for C "
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
116 "library signal functions");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
117 #ifdef CYGPKG_LIBC_SIGNALS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
118
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
119 // Test 1
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
120
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
121 CYG_TEST_INFO("Test 1");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
122 state = 1;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
123 handler1 = signal(SIGTERM, &myhandler1);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
124
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
125 CYG_TEST_PASS_FAIL(handler1 == SIG_DFL,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
126 "SIGTERM handler initialized to default");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
127
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
128 rc = raise(SIGTERM);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
129
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
130 CYG_TEST_PASS_FAIL(0==rc, "raise(SIGTERM) did not return error");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
131
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
132 CYG_TEST_PASS_FAIL(2==state, "SIGTERM handler returned correctly");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
133
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
134 // Test 2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
135
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
136 CYG_TEST_INFO("Test 2");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
137
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
138 state = 2;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
139 handler1 = signal(SIGTERM, &myhandler2);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
140
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
141 CYG_TEST_PASS_FAIL(handler1 == SIG_DFL,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
142 "SIGTERM handler reset to default after test 1");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
143
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
144 handler1 = signal(SIGTERM, &myhandler1);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
145
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
146 CYG_TEST_PASS_FAIL(handler1 == &myhandler2,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
147 "SIGTERM handler was set correctly");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
148
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
149 rc = raise(SIGTERM);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
150
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
151 CYG_TEST_PASS_FAIL(0==rc, "raise(SIGTERM) did not return error");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
152
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
153 CYG_TEST_PASS_FAIL(3==state, "SIGTERM handler returned correctly");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
154
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
155 // Test 3
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
156
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
157 CYG_TEST_INFO("Test 3");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
158
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
159 handler1 = signal(SIGTERM, &myhandler2);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
160
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
161 CYG_TEST_PASS_FAIL(handler1 == SIG_DFL,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
162 "SIGTERM handler reset to default after test 2");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
163
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
164 handler1 = signal(SIGTERM, SIG_DFL);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
165
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
166 CYG_TEST_PASS_FAIL(handler1 == &myhandler2,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
167 "SIGTERM handler was set correctly");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
168
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
169 // Test 4
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
170
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
171 CYG_TEST_INFO("Test 4");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
172
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
173 state = 4;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
174 handler1 = signal(SIGTERM, SIG_IGN);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
175
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
176 CYG_TEST_PASS_FAIL(handler1 == SIG_DFL,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
177 "SIGTERM handler was set correctly after test 3");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
178 rc = raise(SIGTERM);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
179
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
180 CYG_TEST_PASS_FAIL(0==rc, "raise(SIGTERM) did not return error");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
181
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
182 CYG_TEST_PASS_FAIL(4==state, "SIGTERM ignored");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
183
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
184 // Test 5
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
185
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
186 CYG_TEST_INFO("Test 5");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
187
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
188 state = 5;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
189 handler1 = signal(SIGTERM, &myhandler2);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
190
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
191 // SIG_IGN doesn't reset back to SIG_DFL after a raise()
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
192 CYG_TEST_PASS_FAIL(handler1 == SIG_IGN,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
193 "SIGTERM handler was set correctly after test 4");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
194
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
195 if (0==setjmp(jbuf)) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
196 raise(SIGTERM);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
197 CYG_TEST_FAIL("raise returned");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
198 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
199
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
200 CYG_TEST_PASS_FAIL(6==state, "SIGTERM handler returned correctly");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
201
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
202 // Test 6
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
203
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
204 CYG_TEST_INFO("Test 6");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
205
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
206 state = 6;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
207 handler1 = signal(SIGABRT, &myhandler2);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
208
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
209 CYG_TEST_PASS_FAIL(handler1 == SIG_DFL,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
210 "SIGABRT handler initialized to default");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
211
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
212 if (0==setjmp(jbuf)) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
213 abort();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
214 CYG_TEST_FAIL("abort returned");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
215 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
216
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
217 CYG_TEST_PASS_FAIL(7==state, "SIGABRT handler returned correctly");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
218
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
219 #else
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
220 CYG_TEST_NA("Testing not applicable to this configuration");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
221 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
222
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
223 CYG_TEST_FINISH("Finished tests from testcase " __FILE__ " for C "
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
224 "library signal functions");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
225
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
226 } // main()
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
227
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
228 // EOF signal1.c