source: rtems/testsuites/psxtests/psxgetattrnp01/init.c @ 9a4eca5

5
Last change on this file since 9a4eca5 was 698c2e50, checked in by Sebastian Huber <sebastian.huber@…>, on 03/25/14 at 07:06:16

tests/psxtests: Use <rtems/test.h>

  • Property mode set to 100644
File size: 5.2 KB
Line 
1/*
2 *  COPYRIGHT (c) 1989-2014.
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.org/license/LICENSE.
8 */
9
10#ifdef HAVE_CONFIG_H
11#include "config.h"
12#endif
13
14#define _GNU_SOURCE
15#include <tmacros.h>
16#include <errno.h>
17#include <sched.h>
18#include <pthread.h>
19#include <rtems/posix/pthreadimpl.h>
20
21const char rtems_test_name[] = "PSXGETATTRNP 1";
22
23/* forward declarations to avoid warnings */
24void *POSIX_Init(void *argument);
25
26#if HAVE_DECL_PTHREAD_GETATTR_NP
27
28
29void *Thread_1(void *argument);
30
31pthread_t           Init_id;
32pthread_t           Thread_id;
33pthread_attr_t      Thread_attr;
34int                 max_priority;
35
36void *Thread_1(
37  void *argument
38)
39{
40  pthread_attr_t      attr;
41  struct sched_param  param;
42  int                 sc;
43  int                 value;
44
45  puts("Thread - pthread_getattr_np - Verify value");
46  sc = pthread_getattr_np( Thread_id, &attr );
47  rtems_test_assert( sc == 0 );
48  rtems_test_assert( ! rtems_pthread_attribute_compare(&attr, &Thread_attr) );
49
50  param.sched_priority = max_priority;
51
52  puts( "Thread - pthread_setschedparam: Setting highest priority SCHED_FIFO" );
53  sc = pthread_setschedparam( Thread_id, SCHED_FIFO, &param );
54  rtems_test_assert( !sc );
55
56  puts("Thread - Detach");
57  sc = pthread_detach( Thread_id );
58  rtems_test_assert( !sc );
59
60  puts("Thread - pthread_getattr_np");
61  sc = pthread_getattr_np( Thread_id, &attr );
62  rtems_test_assert( !sc );
63
64  puts("Thread - Verify SCHED_FIFO policy");
65  sc = pthread_attr_getschedpolicy( &attr, &value );
66  rtems_test_assert( !sc );
67  rtems_test_assert( value == SCHED_FIFO );
68
69  puts("Thread - Verify max priority");
70  sc = pthread_attr_getschedparam( &attr, &param );
71  rtems_test_assert( !sc );
72  rtems_test_assert( param.sched_priority == max_priority );
73
74  puts("Thread - Verify detached");
75  sc = pthread_attr_getdetachstate( &attr, &value );
76  rtems_test_assert( value == PTHREAD_CREATE_DETACHED );
77
78  return NULL; /* just so the compiler thinks we returned something */
79}
80
81void *POSIX_Init(
82  void *ignored
83)
84{
85  int                 sc;
86  pthread_attr_t      attribute;
87  void               *stackaddr;
88  size_t              stacksize;
89  size_t              guardsize;
90  struct sched_param  param;
91
92  TEST_BEGIN();
93
94  /* Initialize thread id */
95  Init_id = pthread_self();
96  max_priority = sched_get_priority_max( SCHED_FIFO );
97
98  puts( "Init - pthread_getattr_np - attr NULL - EINVAL" );
99  sc = pthread_getattr_np( Init_id, NULL );
100  rtems_test_assert( sc == EINVAL );
101
102  puts( "Init - pthread_getattr_np - invalid id - ESRCH" );
103  sc = pthread_getattr_np( 0xffff, &attribute );
104  rtems_test_assert( sc == ESRCH );
105
106
107  /* init task attributes */
108  puts("Init - pthread_attr_init");
109  sc = pthread_attr_init(&Thread_attr);
110  rtems_test_assert(!sc);
111
112  puts("Init - pthread_attr_setinheritsched - PTHREAD_EXPLICIT_SCHED");
113  sc = pthread_attr_setinheritsched( &Thread_attr, PTHREAD_EXPLICIT_SCHED );
114  rtems_test_assert(!sc);
115  rtems_test_assert( Thread_attr.inheritsched == PTHREAD_EXPLICIT_SCHED );
116
117  puts("Init - pthread_attr_setschedpolicy to SCHED_RR");
118  sc = pthread_attr_setschedpolicy(&Thread_attr, SCHED_RR);
119  rtems_test_assert(!sc);
120
121  puts("Init - pthread_attr_setschedparam to minimum priority + 2");
122  param.sched_priority = sched_get_priority_min( SCHED_RR ) + 2;
123  sc = pthread_attr_setschedparam( &Thread_attr, &param );
124  rtems_test_assert(!sc);
125
126  puts("Init - pthread_attr_getstack");
127  sc = pthread_attr_getstack( &Thread_attr, &stackaddr, &stacksize );
128  rtems_test_assert(!sc);
129
130  stacksize *= 2;
131  puts("Init - pthread_attr_setstack double the stacksize");
132  sc = pthread_attr_setstacksize( &Thread_attr, stacksize );
133  rtems_test_assert(!sc);
134
135  puts("Init - pthread_attr_getguardsize");
136  sc = pthread_attr_getguardsize( &Thread_attr, &guardsize );
137  rtems_test_assert(!sc);
138
139  guardsize *= 2;
140  puts("Init - pthread_attr_setguardsize double the guardsize");
141  sc = pthread_attr_setguardsize( &Thread_attr, guardsize );
142  rtems_test_assert(!sc);
143
144  puts("Init - raise priority to max");
145  param.sched_priority = max_priority;
146  sc = pthread_setschedparam( Init_id, SCHED_RR, &param );
147  rtems_test_assert( !sc );
148
149 puts("Init - pthread_create");
150  sc = pthread_create( &Thread_id, &Thread_attr, Thread_1, NULL );
151  rtems_test_assert( !sc );
152
153  puts("Init - Lower priority");
154  fflush(stdout);
155  param.sched_priority = sched_get_priority_min( SCHED_RR );
156  sc = pthread_setschedparam( Init_id, SCHED_RR, &param );
157  rtems_test_assert(!sc);
158
159#if 0
160  sc = pthread_join( Thread_id, NULL );
161  rtems_test_assert( !sc );
162#endif
163
164  TEST_END();
165  rtems_test_exit(0);
166  return NULL; /* just so the compiler thinks we returned something */
167}
168#else
169void *POSIX_Init(
170  void *ignored
171)
172{
173  TEST_BEGIN();
174  puts( "  pthread_getattr_np NOT supported" );
175  TEST_END();
176  rtems_test_exit(0);
177  return NULL; /* just so the compiler thinks we returned something */
178}
179
180#endif
181/* configuration information */
182
183#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
184#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
185
186#define CONFIGURE_MAXIMUM_POSIX_THREADS  2
187
188#define CONFIGURE_POSIX_INIT_THREAD_TABLE
189
190#define CONFIGURE_INIT
191#include <rtems/confdefs.h>
192
193/* global variables */
Note: See TracBrowser for help on using the repository browser.