source: rtems/c/src/tests/psxtests/psx07/init.c @ 870f2976

4.104.114.84.95
Last change on this file since 870f2976 was 870f2976, checked in by Joel Sherrill <joel.sherrill@…>, on 08/01/96 at 21:02:54

test successfully exercises all of pthread_attr_* set and get routines

  • Property mode set to 100644
File size: 9.3 KB
Line 
1/*
2 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
3 *  On-Line Applications Research Corporation (OAR).
4 *  All rights assigned to U.S. Government, 1994.
5 *
6 *  This material may be reproduced by or for the U.S. Government pursuant
7 *  to the copyright license under the clause at DFARS 252.227-7013.  This
8 *  notice must appear in all copies of this file and its derivatives.
9 *
10 *  $Id$
11 */
12
13#define CONFIGURE_INIT
14#include "system.h"
15#include <errno.h>
16
17void *POSIX_Init(
18  void *argument
19)
20{
21  int             status;
22  int             scope;
23  int             inheritsched;
24  int             schedpolicy;
25  size_t          stacksize;
26  void           *stackaddr;
27  int             detachstate;
28  pthread_attr_t  attr;
29  pthread_attr_t  destroyed_attr;
30
31  puts( "\n\n*** POSIX TEST 7 ***" );
32
33  /* set the time of day, and print our buffer in multiple ways */
34
35  set_time( TM_FRIDAY, TM_MAY, 24, 96, 11, 5, 0 );
36
37  /* get id of this thread */
38
39  Init_id = pthread_self();
40  printf( "Init's ID is 0x%08x\n", Init_id );
41 
42  /* exercise init and destroy */
43
44  puts( "Init: pthread_attr_init - EINVAL (NULL attr)" );
45  status = pthread_attr_init( NULL );
46  assert( status == EINVAL );
47
48  puts( "Init: pthread_attr_init - SUCCESSFUL" );
49  status = pthread_attr_init( &attr );
50  assert( !status );
51
52  puts( "Init: initialize and destroy an attribute - SUCCESSFUL" );
53  status = pthread_attr_init( &destroyed_attr );
54  assert( !status );
55
56  status = pthread_attr_destroy( &destroyed_attr );
57  assert( !status );
58
59  puts( "Init: pthread_attr_destroy - EINVAL (NULL attr)" );
60  status = pthread_attr_destroy( NULL );
61  assert( status == EINVAL );
62
63  puts( "Init: pthread_attr_destroy - EINVAL (not initialized)" );
64  status = pthread_attr_destroy( &destroyed_attr );
65  assert( status == EINVAL );
66
67  /* exercise get and set scope */
68
69  empty_line();
70
71  puts( "Init: pthread_attr_setscope - EINVAL (NULL attr)" );
72  status = pthread_attr_setscope( NULL, PTHREAD_SCOPE_PROCESS );
73  assert( status == EINVAL );
74
75  puts( "Init: pthread_attr_setscope - ENOSYS" );
76  status = pthread_attr_setscope( &attr, PTHREAD_SCOPE_SYSTEM );
77  assert( status == ENOSYS );
78
79  puts( "Init: pthread_attr_setscope - EINVAL (not initialized attr)" );
80  status = pthread_attr_setscope( &destroyed_attr, PTHREAD_SCOPE_PROCESS );
81  assert( status == EINVAL );
82
83  puts( "Init: pthread_attr_setscope - EINVAL (invalid scope)" );
84  status = pthread_attr_setscope( &attr, -1 );
85  assert( status == EINVAL );
86
87  puts( "Init: pthread_attr_setscope - SUCCESSFUL" );
88  status = pthread_attr_setscope( &attr, PTHREAD_SCOPE_PROCESS );
89  assert( !status );
90 
91  puts( "Init: pthread_attr_getscope - EINVAL (NULL attr)" );
92  status = pthread_attr_getscope( NULL, &scope );
93  assert( status == EINVAL );
94 
95  puts( "Init: pthread_attr_getscope - EINVAL (not initialized attr)" );
96  status = pthread_attr_getscope( &destroyed_attr, &scope );
97  assert( status == EINVAL );
98 
99  puts( "Init: pthread_attr_getscope - SUCCESSFUL" );
100  status = pthread_attr_getscope( &attr, &scope );
101  assert( !status );
102  printf( "Init: current scope attribute = %d\n", scope );
103
104  /* exercise get and set inherit scheduler */
105
106  empty_line();
107
108  puts( "Init: pthread_attr_setinheritsched - EINVAL (NULL attr)" );
109  status = pthread_attr_setinheritsched( NULL, PTHREAD_INHERIT_SCHED );
110  assert( status == EINVAL );
111 
112  puts( "Init: pthread_attr_setinheritsched - EINVAL (not initialized attr)" );
113  status =
114     pthread_attr_setinheritsched( &destroyed_attr, PTHREAD_INHERIT_SCHED );
115  assert( status == EINVAL );
116 
117  puts( "Init: pthread_attr_setinheritsched - EINVAL (invalid inheritsched)" );
118  status = pthread_attr_setinheritsched( &attr, -1 );
119  assert( status == EINVAL );
120 
121  puts( "Init: pthread_attr_setinheritsched - SUCCESSFUL" );
122  status = pthread_attr_setinheritsched( &attr, PTHREAD_INHERIT_SCHED );
123  assert( !status );
124 
125  puts( "Init: pthread_attr_getinheritsched - EINVAL (NULL attr)" );
126  status = pthread_attr_getinheritsched( NULL, &inheritsched );
127  assert( status == EINVAL );
128 
129  puts( "Init: pthread_attr_getinheritsched - EINVAL (not initialized attr)" );
130  status = pthread_attr_getinheritsched( &destroyed_attr, &inheritsched );
131  assert( status == EINVAL );
132 
133  puts( "Init: pthread_attr_getinheritsched - SUCCESSFUL" );
134  status = pthread_attr_getinheritsched( &attr, &inheritsched );
135  assert( !status );
136  printf( "Init: current inherit scheduler attribute = %d\n", inheritsched );
137
138  /* exercise get and set inherit scheduler */
139 
140  empty_line();
141 
142  puts( "Init: pthread_attr_setschedpolicy - EINVAL (NULL attr)" );
143  status = pthread_attr_setschedpolicy( NULL, SCHED_FIFO );
144  assert( status == EINVAL );
145 
146  puts( "Init: pthread_attr_setschedpolicy - EINVAL (not initialized attr)" );
147  status =
148     pthread_attr_setschedpolicy( &destroyed_attr, SCHED_OTHER );
149  assert( status == EINVAL );
150 
151  puts( "Init: pthread_attr_setschedpolicy - EINVAL (invalid schedpolicy)" );
152  status = pthread_attr_setschedpolicy( &attr, -1 );
153  assert( status == EINVAL );
154 
155  puts( "Init: pthread_attr_setschedpolicy - SUCCESSFUL" );
156  status = pthread_attr_setschedpolicy( &attr, SCHED_RR );
157  assert( !status );
158 
159  puts( "Init: pthread_attr_getschedpolicy - EINVAL (NULL attr)" );
160  status = pthread_attr_getschedpolicy( NULL, &schedpolicy );
161  assert( status == EINVAL );
162 
163  puts( "Init: pthread_attr_getschedpolicy - EINVAL (not initialized attr)" );
164  status = pthread_attr_getschedpolicy( &destroyed_attr, &schedpolicy );
165  assert( status == EINVAL );
166 
167  puts( "Init: pthread_attr_getschedpolicy - SUCCESSFUL" );
168  status = pthread_attr_getschedpolicy( &attr, &schedpolicy );
169  assert( !status );
170  printf( "Init: current scheduler policy attribute = %d\n", schedpolicy );
171 
172  /* exercise get and set stack size */
173 
174  empty_line();
175 
176  puts( "Init: pthread_attr_setstacksize - EINVAL (NULL attr)" );
177  status = pthread_attr_setstacksize( NULL, 0 );
178  assert( status == EINVAL );
179 
180  puts( "Init: pthread_attr_setstacksize - EINVAL (not initialized attr)" );
181  status =
182     pthread_attr_setstacksize( &destroyed_attr, 0 );
183  assert( status == EINVAL );
184 
185  puts( "Init: pthread_attr_setstacksize - SUCCESSFUL (low stacksize)" );
186  status = pthread_attr_setstacksize( &attr, 0 );
187  assert( !status );
188
189  puts( "Init: pthread_attr_setstacksize - SUCCESSFUL (high stacksize)" );
190  status = pthread_attr_setstacksize( &attr, STACK_MINIMUM_SIZE * 2 );
191  assert( !status );
192 
193  puts( "Init: pthread_attr_getstacksize - EINVAL (NULL attr)" );
194  status = pthread_attr_getstacksize( NULL, &stacksize );
195  assert( status == EINVAL );
196 
197  puts( "Init: pthread_attr_getstacksize - EINVAL (not initialized attr)" );
198  status = pthread_attr_getstacksize( &destroyed_attr, &stacksize );
199  assert( status == EINVAL );
200 
201  puts( "Init: pthread_attr_getstacksize - SUCCESSFUL" );
202  status = pthread_attr_getstacksize( &attr, &stacksize );
203  assert( !status );
204  printf( "Init: current stack size attribute = %ld\n", (long) stacksize );
205
206  /* exercise get and set stack address */
207 
208  empty_line();
209 
210  puts( "Init: pthread_attr_setstackaddr - EINVAL (NULL attr)" );
211  status = pthread_attr_setstackaddr( NULL, NULL );
212  assert( status == EINVAL );
213 
214  puts( "Init: pthread_attr_setstackaddr - EINVAL (not initialized attr)" );
215  status =
216     pthread_attr_setstackaddr( &destroyed_attr, NULL );
217  assert( status == EINVAL );
218 
219  puts( "Init: pthread_attr_setstackaddr - SUCCESSFUL" );
220  status = pthread_attr_setstackaddr( &attr, 0 );
221  assert( !status );
222 
223  puts( "Init: pthread_attr_getstackaddr - EINVAL (NULL attr)" );
224  status = pthread_attr_getstackaddr( NULL, &stackaddr );
225  assert( status == EINVAL );
226 
227  puts( "Init: pthread_attr_getstackaddr - EINVAL (not initialized attr)" );
228  status = pthread_attr_getstackaddr( &destroyed_attr, &stackaddr );
229  assert( status == EINVAL );
230 
231  puts( "Init: pthread_attr_getstackaddr - SUCCESSFUL" );
232  status = pthread_attr_getstackaddr( &attr, &stackaddr );
233  assert( !status );
234  printf( "Init: current stack address attribute = %p\n", stackaddr );
235 
236  /* exercise get and set detach state */
237 
238  empty_line();
239 
240  puts( "Init: pthread_attr_setdetachstate - EINVAL (NULL attr)" );
241  status = pthread_attr_setdetachstate( NULL, PTHREAD_CREATE_DETACHED );
242  assert( status == EINVAL );
243 
244  puts( "Init: pthread_attr_setdetachstate - EINVAL (not initialized attr)" );
245  status =
246     pthread_attr_setdetachstate( &destroyed_attr, PTHREAD_CREATE_JOINABLE );
247  assert( status == EINVAL );
248 
249  puts( "Init: pthread_attr_setdetachstate - EINVAL (invalid detachstate)" );
250  status = pthread_attr_setdetachstate( &attr, -1 );
251  assert( status == EINVAL );
252 
253  puts( "Init: pthread_attr_setdetachstate - SUCCESSFUL" );
254  status = pthread_attr_setdetachstate( &attr, PTHREAD_CREATE_JOINABLE );
255  assert( !status );
256 
257  puts( "Init: pthread_attr_getdetachstate - EINVAL (NULL attr)" );
258  status = pthread_attr_getdetachstate( NULL, &detachstate );
259  assert( status == EINVAL );
260 
261  puts( "Init: pthread_attr_getdetachstate - EINVAL (not initialized attr)" );
262  status = pthread_attr_getdetachstate( &destroyed_attr, &detachstate );
263  assert( status == EINVAL );
264 
265  puts( "Init: pthread_attr_getdetachstate - SUCCESSFUL" );
266  status = pthread_attr_getdetachstate( &attr, &detachstate );
267  assert( !status );
268  printf( "Init: current detach state attribute = %d\n", detachstate );
269
270  puts( "*** END OF POSIX TEST 7 ***" );
271  exit( 0 );
272
273  return NULL; /* just so the compiler thinks we returned something */
274}
Note: See TracBrowser for help on using the repository browser.