summaryrefslogtreecommitdiffstats
path: root/c/src/tests/psxtests/psx11/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/tests/psxtests/psx11/init.c')
-rw-r--r--c/src/tests/psxtests/psx11/init.c108
1 files changed, 108 insertions, 0 deletions
diff --git a/c/src/tests/psxtests/psx11/init.c b/c/src/tests/psxtests/psx11/init.c
new file mode 100644
index 0000000000..b8070994a1
--- /dev/null
+++ b/c/src/tests/psxtests/psx11/init.c
@@ -0,0 +1,108 @@
+/*
+ * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
+ * On-Line Applications Research Corporation (OAR).
+ * All rights assigned to U.S. Government, 1994.
+ *
+ * This material may be reproduced by or for the U.S. Government pursuant
+ * to the copyright license under the clause at DFARS 252.227-7013. This
+ * notice must appear in all copies of this file and its derivatives.
+ *
+ * $Id$
+ */
+
+#define CONFIGURE_INIT
+#include "system.h"
+#include <errno.h>
+
+void *POSIX_Init(
+ void *argument
+)
+{
+ int status;
+ struct sched_param param;
+ pthread_attr_t attr;
+
+ puts( "\n\n*** POSIX TEST 11 ***" );
+
+ /* set the time of day, and print our buffer in multiple ways */
+
+ set_time( TM_FRIDAY, TM_MAY, 24, 96, 11, 5, 0 );
+
+ /* get id of this thread */
+
+ Init_id = pthread_self();
+ printf( "Init's ID is 0x%08x\n", Init_id );
+
+ /* exercise pthread_setschedparam */
+
+ param.sched_priority = 127;
+
+ puts( "Init: Setting scheduling parameters to FIFO with priority 127" );
+ status = pthread_setschedparam( Init_id, SCHED_FIFO, &param );
+ assert( !status );
+
+ param.sched_priority = 125;
+
+ puts( "Init: Setting scheduling parameters to RR with priority 125" );
+ status = pthread_setschedparam( Init_id, SCHED_RR, &param );
+ assert( !status );
+
+ param.sched_priority = 121;
+
+ puts( "Init: Setting scheduling parameters to OTHER with priority 121" );
+ status = pthread_setschedparam( Init_id, SCHED_OTHER, &param );
+ assert( !status );
+
+ /* create a thread as SCHED_FIFO */
+
+ puts( "Init: create a thread of SCHED_FIFO with priority 120" );
+ status = pthread_attr_init( &attr );
+ assert( !status );
+
+ attr.schedpolicy = SCHED_FIFO;
+ attr.schedparam.sched_priority = 120;
+
+ status = pthread_create( &Task_id, &attr, Task_1, NULL );
+ assert( !status );
+
+ puts( "Init: join with the other thread" );
+ status = pthread_join( Task_id, NULL );
+ assert( !status );
+
+ /* create a thread as SCHED_RR */
+
+ puts( "Init: create a thread of SCHED_RR with priority 120" );
+ status = pthread_attr_init( &attr );
+ assert( !status );
+
+ attr.schedpolicy = SCHED_RR;
+ attr.schedparam.sched_priority = 120;
+
+ status = pthread_create( &Task_id, &attr, Task_1, NULL );
+ assert( !status );
+
+ puts( "Init: join with the other thread" );
+ status = pthread_join( Task_id, NULL );
+ assert( !status );
+
+ /* create a thread as SCHED_OTHER */
+
+ puts( "Init: create a thread of SCHED_OTHER with priority 120" );
+ status = pthread_attr_init( &attr );
+ assert( !status );
+
+ attr.schedpolicy = SCHED_OTHER;
+ attr.schedparam.sched_priority = 120;
+
+ status = pthread_create( &Task_id, &attr, Task_1, NULL );
+ assert( !status );
+
+ puts( "Init: join with the other thread" );
+ status = pthread_join( Task_id, NULL );
+ assert( !status );
+
+ puts( "*** END OF POSIX TEST 11 ***" );
+ exit( 0 );
+
+ return NULL; /* just so the compiler thinks we returned something */
+}