diff options
author | Ralf Corsepius <ralf.corsepius@rtems.org> | 2003-11-11 00:59:49 +0000 |
---|---|---|
committer | Ralf Corsepius <ralf.corsepius@rtems.org> | 2003-11-11 00:59:49 +0000 |
commit | ff6ab1b594d9f073ece9b7fedf1f6977f52aeee5 (patch) | |
tree | f0b2e3afb63f53a922a0c42137a6d6763548edc5 /c/src/tests/psxtests/psx05/init.c | |
parent | 2003-11-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de> (diff) | |
download | rtems-ff6ab1b594d9f073ece9b7fedf1f6977f52aeee5.tar.bz2 |
2003-11-10 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* .cvsignore: Remove.
* ChangeLog: Remove.
* Makefile.am: Remove.
* configure.ac: Remove.
* psxtests.am: Remove.
* include/.cvsignore: Remove.
* include/Makefile.am: Remove.
* include/pmacros.h: Remove.
* psx01/.cvsignore: Remove.
* psx01/Makefile.am: Remove.
* psx01/init.c: Remove.
* psx01/psx01.scn: Remove.
* psx01/system.h: Remove.
* psx01/task.c: Remove.
* psx02/.cvsignore: Remove.
* psx02/Makefile.am: Remove.
* psx02/init.c: Remove.
* psx02/psx02.scn: Remove.
* psx02/system.h: Remove.
* psx02/task.c: Remove.
* psx03/.cvsignore: Remove.
* psx03/Makefile.am: Remove.
* psx03/init.c: Remove.
* psx03/psx03.scn: Remove.
* psx03/system.h: Remove.
* psx03/task.c: Remove.
* psx04/.cvsignore: Remove.
* psx04/Makefile.am: Remove.
* psx04/init.c: Remove.
* psx04/psx04.scn: Remove.
* psx04/system.h: Remove.
* psx04/task1.c: Remove.
* psx04/task2.c: Remove.
* psx04/task3.c: Remove.
* psx05/.cvsignore: Remove.
* psx05/Makefile.am: Remove.
* psx05/init.c: Remove.
* psx05/psx05.scn: Remove.
* psx05/system.h: Remove.
* psx05/task.c: Remove.
* psx05/task2.c: Remove.
* psx05/task3.c: Remove.
* psx06/.cvsignore: Remove.
* psx06/Makefile.am: Remove.
* psx06/init.c: Remove.
* psx06/psx06.scn: Remove.
* psx06/system.h: Remove.
* psx06/task.c: Remove.
* psx06/task2.c: Remove.
* psx07/.cvsignore: Remove.
* psx07/Makefile.am: Remove.
* psx07/init.c: Remove.
* psx07/psx07.scn: Remove.
* psx07/system.h: Remove.
* psx07/task.c: Remove.
* psx08/.cvsignore: Remove.
* psx08/Makefile.am: Remove.
* psx08/init.c: Remove.
* psx08/psx08.scn: Remove.
* psx08/system.h: Remove.
* psx08/task1.c: Remove.
* psx08/task2.c: Remove.
* psx08/task3.c: Remove.
* psx09/.cvsignore: Remove.
* psx09/Makefile.am: Remove.
* psx09/init.c: Remove.
* psx09/psx09.scn: Remove.
* psx09/system.h: Remove.
* psx10/.cvsignore: Remove.
* psx10/Makefile.am: Remove.
* psx10/init.c: Remove.
* psx10/psx10.scn: Remove.
* psx10/system.h: Remove.
* psx10/task.c: Remove.
* psx10/task2.c: Remove.
* psx10/task3.c: Remove.
* psx11/.cvsignore: Remove.
* psx11/Makefile.am: Remove.
* psx11/init.c: Remove.
* psx11/psx11.scn: Remove.
* psx11/system.h: Remove.
* psx11/task.c: Remove.
* psx12/.cvsignore: Remove.
* psx12/Makefile.am: Remove.
* psx12/init.c: Remove.
* psx12/psx12.scn: Remove.
* psx12/system.h: Remove.
* psx12/task.c: Remove.
* psx13/.cvsignore: Remove.
* psx13/Makefile.am: Remove.
* psx13/main.c: Remove.
* psx13/psx13.scn: Remove.
* psx13/test.c: Remove.
* psxcancel/.cvsignore: Remove.
* psxcancel/Makefile.am: Remove.
* psxcancel/init.c: Remove.
* psxcancel/psxcancel.scn: Remove.
* psxchroot01/.cvsignore: Remove.
* psxchroot01/Makefile.am: Remove.
* psxchroot01/main.c: Remove.
* psxchroot01/psxchroot01.scn: Remove.
* psxchroot01/test.c: Remove.
* psxfile01/.cvsignore: Remove.
* psxfile01/Makefile.am: Remove.
* psxfile01/main.c: Remove.
* psxfile01/psxfile01.scn: Remove.
* psxfile01/test.c: Remove.
* psxfile01/test_cat.c: Remove.
* psxfile01/test_extend.c: Remove.
* psxfile01/test_write.c: Remove.
* psxhdrs/.cvsignore: Remove.
* psxhdrs/Makefile.am: Remove.
* psxhdrs/clock01.c: Remove.
* psxhdrs/clock02.c: Remove.
* psxhdrs/clock03.c: Remove.
* psxhdrs/clock04.c: Remove.
* psxhdrs/clock05.c: Remove.
* psxhdrs/clock06.c: Remove.
* psxhdrs/cond01.c: Remove.
* psxhdrs/cond02.c: Remove.
* psxhdrs/cond03.c: Remove.
* psxhdrs/cond04.c: Remove.
* psxhdrs/cond05.c: Remove.
* psxhdrs/cond06.c: Remove.
* psxhdrs/cond07.c: Remove.
* psxhdrs/cond08.c: Remove.
* psxhdrs/cond09.c: Remove.
* psxhdrs/cond10.c: Remove.
* psxhdrs/key01.c: Remove.
* psxhdrs/key02.c: Remove.
* psxhdrs/key03.c: Remove.
* psxhdrs/key04.c: Remove.
* psxhdrs/mutex01.c: Remove.
* psxhdrs/mutex02.c: Remove.
* psxhdrs/mutex03.c: Remove.
* psxhdrs/mutex04.c: Remove.
* psxhdrs/mutex05.c: Remove.
* psxhdrs/mutex06.c: Remove.
* psxhdrs/mutex07.c: Remove.
* psxhdrs/mutex08.c: Remove.
* psxhdrs/mutex09.c: Remove.
* psxhdrs/mutex10.c: Remove.
* psxhdrs/mutex11.c: Remove.
* psxhdrs/mutex12.c: Remove.
* psxhdrs/mutex13.c: Remove.
* psxhdrs/mutex14.c: Remove.
* psxhdrs/mutex15.c: Remove.
* psxhdrs/mutex16.c: Remove.
* psxhdrs/proc01.c: Remove.
* psxhdrs/proc02.c: Remove.
* psxhdrs/proc03.c: Remove.
* psxhdrs/proc04.c: Remove.
* psxhdrs/proc05.c: Remove.
* psxhdrs/proc06.c: Remove.
* psxhdrs/proc07.c: Remove.
* psxhdrs/proc08.c: Remove.
* psxhdrs/proc09.c: Remove.
* psxhdrs/proc10.c: Remove.
* psxhdrs/proc11.c: Remove.
* psxhdrs/proc12.c: Remove.
* psxhdrs/proc13.c: Remove.
* psxhdrs/proc14.c: Remove.
* psxhdrs/pthread01.c: Remove.
* psxhdrs/pthread02.c: Remove.
* psxhdrs/pthread03.c: Remove.
* psxhdrs/pthread04.c: Remove.
* psxhdrs/pthread05.c: Remove.
* psxhdrs/pthread06.c: Remove.
* psxhdrs/pthread07.c: Remove.
* psxhdrs/pthread08.c: Remove.
* psxhdrs/pthread09.c: Remove.
* psxhdrs/pthread10.c: Remove.
* psxhdrs/pthread11.c: Remove.
* psxhdrs/pthread12.c: Remove.
* psxhdrs/pthread13.c: Remove.
* psxhdrs/pthread14.c: Remove.
* psxhdrs/pthread15.c: Remove.
* psxhdrs/pthread16.c: Remove.
* psxhdrs/pthread17.c: Remove.
* psxhdrs/pthread18.c: Remove.
* psxhdrs/pthread19.c: Remove.
* psxhdrs/pthread20.c: Remove.
* psxhdrs/pthread21.c: Remove.
* psxhdrs/pthread22.c: Remove.
* psxhdrs/pthread23.c: Remove.
* psxhdrs/pthread24.c: Remove.
* psxhdrs/pthread25.c: Remove.
* psxhdrs/pthread26.c: Remove.
* psxhdrs/pthread27.c: Remove.
* psxhdrs/pthread28.c: Remove.
* psxhdrs/pthread29.c: Remove.
* psxhdrs/pthread30.c: Remove.
* psxhdrs/pthread31.c: Remove.
* psxhdrs/pthread32.c: Remove.
* psxhdrs/pthread33.c: Remove.
* psxhdrs/pthread34.c: Remove.
* psxhdrs/pthread35.c: Remove.
* psxhdrs/pthread36.c: Remove.
* psxhdrs/sched01.c: Remove.
* psxhdrs/sched02.c: Remove.
* psxhdrs/sched03.c: Remove.
* psxhdrs/sched04.c: Remove.
* psxhdrs/sched05.c: Remove.
* psxhdrs/sched06.c: Remove.
* psxhdrs/sched07.c: Remove.
* psxhdrs/sched08.c: Remove.
* psxhdrs/signal01.c: Remove.
* psxhdrs/signal02.c: Remove.
* psxhdrs/signal03.c: Remove.
* psxhdrs/signal04.c: Remove.
* psxhdrs/signal05.c: Remove.
* psxhdrs/signal06.c: Remove.
* psxhdrs/signal07.c: Remove.
* psxhdrs/signal08.c: Remove.
* psxhdrs/signal09.c: Remove.
* psxhdrs/signal10.c: Remove.
* psxhdrs/signal11.c: Remove.
* psxhdrs/signal12.c: Remove.
* psxhdrs/signal13.c: Remove.
* psxhdrs/signal14.c: Remove.
* psxhdrs/signal15.c: Remove.
* psxhdrs/signal16.c: Remove.
* psxhdrs/signal17.c: Remove.
* psxhdrs/signal18.c: Remove.
* psxhdrs/signal19.c: Remove.
* psxhdrs/signal20.c: Remove.
* psxhdrs/signal21.c: Remove.
* psxhdrs/signal22.c: Remove.
* psxhdrs/signal23.c: Remove.
* psxhdrs/sync01.c: Remove.
* psxhdrs/sync02.c: Remove.
* psxhdrs/sync03.c: Remove.
* psxhdrs/time01.c: Remove.
* psxhdrs/time02.c: Remove.
* psxhdrs/time03.c: Remove.
* psxhdrs/time04.c: Remove.
* psxhdrs/time05.c: Remove.
* psxhdrs/time06.c: Remove.
* psxhdrs/time07.c: Remove.
* psxhdrs/time08.c: Remove.
* psxhdrs/time09.c: Remove.
* psxhdrs/time10.c: Remove.
* psxhdrs/time11.c: Remove.
* psxhdrs/time12.c: Remove.
* psxhdrs/time13.c: Remove.
* psxhdrs/timer01.c: Remove.
* psxhdrs/timer02.c: Remove.
* psxhdrs/timer03.c: Remove.
* psxhdrs/timer04.c: Remove.
* psxhdrs/timer05.c: Remove.
* psxhdrs/timer06.c: Remove.
* psxhdrs/timer07.c: Remove.
* psxmount/.cvsignore: Remove.
* psxmount/Makefile.am: Remove.
* psxmount/main.c: Remove.
* psxmount/psxmount.scn: Remove.
* psxmount/test.c: Remove.
* psxmsgq01/.cvsignore: Remove.
* psxmsgq01/Makefile.am: Remove.
* psxmsgq01/init.c: Remove.
* psxmsgq01/psxmsgq01.scn: Remove.
* psxmsgq01/system.h: Remove.
* psxreaddir/.cvsignore: Remove.
* psxreaddir/Makefile.am: Remove.
* psxreaddir/main.c: Remove.
* psxreaddir/psxreaddir.scn: Remove.
* psxreaddir/test.c: Remove.
* psxsem01/.cvsignore: Remove.
* psxsem01/Makefile.am: Remove.
* psxsem01/init.c: Remove.
* psxsem01/psxsem01.scn: Remove.
* psxsem01/system.h: Remove.
* psxstat/.cvsignore: Remove.
* psxstat/Makefile.am: Remove.
* psxstat/main.c: Remove.
* psxstat/psxstat.scn: Remove.
* psxstat/test.c: Remove.
* psxtime/.cvsignore: Remove.
* psxtime/Makefile.am: Remove.
* psxtime/main.c: Remove.
* psxtime/psxtime.scn: Remove.
* psxtime/test.c: Remove.
* psxtimer/.cvsignore: Remove.
* psxtimer/Makefile.am: Remove.
* psxtimer/psxtimer.c: Remove.
* psxtimer/psxtimer.scn: Remove.
* psxtimer/system.h: Remove.
Diffstat (limited to 'c/src/tests/psxtests/psx05/init.c')
-rw-r--r-- | c/src/tests/psxtests/psx05/init.c | 583 |
1 files changed, 0 insertions, 583 deletions
diff --git a/c/src/tests/psxtests/psx05/init.c b/c/src/tests/psxtests/psx05/init.c deleted file mode 100644 index a8dff61a1d..0000000000 --- a/c/src/tests/psxtests/psx05/init.c +++ /dev/null @@ -1,583 +0,0 @@ -/* - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - * - * $Id$ - */ - -#define CONFIGURE_INIT -#include "system.h" -#include <errno.h> - -#define MUTEX_BAD_ID 0xfffffffe - -void Print_mutexattr( - char *msg, - pthread_mutexattr_t *attr -) -{ - int status; - int protocol; - int prioceiling; - int pshared; - - /* protocol */ - - status = pthread_mutexattr_getprotocol( attr, &protocol ); - assert( !status ); - - printf( "%smutex protocol is (%d) -- ", msg, protocol ); - switch ( protocol ) { - case PTHREAD_PRIO_NONE: - puts( "PTHREAD_PRIO_NONE" ); - break; - case PTHREAD_PRIO_INHERIT: - puts( "PTHREAD_PRIO_INHERIT" ); - break; - case PTHREAD_PRIO_PROTECT: - puts( "PTHREAD_PRIO_PROTECT" ); - break; - default: - puts( "UNKNOWN" ); - assert( 0 ); - break; - } - - /* priority ceiling */ - - status = pthread_mutexattr_getprioceiling( attr, &prioceiling ); - assert( !status ); - printf( "%smutex priority ceiling is %d\n", msg, prioceiling ); - - /* process shared */ - - status = pthread_mutexattr_getpshared( attr, &pshared ); - assert( !status ); - printf( "%smutex process shared is (%d) -- ", msg, pshared ); - switch ( pshared ) { - case PTHREAD_PROCESS_PRIVATE: - puts( "PTHREAD_PROCESS_PRIVATE" ); - break; - case PTHREAD_PROCESS_SHARED: - puts( "PTHREAD_PROCESS_SHARED" ); - break; - default: - puts( "UNKNOWN" ); - assert( 0 ); - break; - } -} - -void *POSIX_Init( - void *argument -) -{ - int status; - pthread_mutexattr_t attr; - pthread_mutexattr_t destroyed_attr; - struct timespec times; - struct sched_param param; - int pshared; - int policy; - int protocol; - int ceiling; - int old_ceiling; - - assert( MUTEX_BAD_ID != PTHREAD_MUTEX_INITIALIZER ); - Mutex_bad_id = MUTEX_BAD_ID; - - puts( "\n\n*** POSIX TEST 5 ***" ); - - /* 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 ); - - /* tes pthread_mutex_attr_init */ - - puts( "Init: pthread_mutexattr_init - EINVAL (NULL attr)" ); - status = pthread_mutexattr_init( NULL ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_init - SUCCESSFUL" ); - status = pthread_mutexattr_init( &attr ); - assert( !status ); - - Print_mutexattr( "Init: ", &attr ); - - /* create an "uninitialized" attribute structure */ - - status = pthread_mutexattr_init( &destroyed_attr ); - assert( !status ); - - puts( "Init: pthread_mutexattr_destroy - SUCCESSFUL" ); - status = pthread_mutexattr_destroy( &destroyed_attr ); - assert( !status ); - - puts( "Init: pthread_mutexattr_destroy - EINVAL (NULL attr)" ); - status = pthread_mutexattr_destroy( NULL ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_destroy - EINVAL (not initialized)" ); - status = pthread_mutexattr_destroy( &destroyed_attr ); - assert( status == EINVAL ); - - /* error cases for set and get pshared attribute */ - - empty_line(); - - puts( "Init: pthread_mutexattr_getpshared - EINVAL (NULL attr)" ); - status = pthread_mutexattr_getpshared( NULL, &pshared ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_getpshared - EINVAL (NULL pshared)" ); - status = pthread_mutexattr_getpshared( &attr, NULL ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_getpshared - EINVAL (not initialized)" ); - status = pthread_mutexattr_getpshared( &destroyed_attr, &pshared ); - assert( status == EINVAL ); - - pshared = PTHREAD_PROCESS_PRIVATE; - puts( "Init: pthread_mutexattr_setpshared - EINVAL (NULL attr)" ); - status = pthread_mutexattr_setpshared( NULL, pshared ); - assert( status == EINVAL ); - - pshared = PTHREAD_PROCESS_PRIVATE; - puts( "Init: pthread_mutexattr_setpshared - EINVAL (not initialized)" ); - status = pthread_mutexattr_setpshared( &destroyed_attr, pshared ); - assert( status == EINVAL ); - - /* error cases for set and get protocol attribute */ - - empty_line(); - - puts( "Init: pthread_mutexattr_getprotocol - EINVAL (NULL attr)" ); - status = pthread_mutexattr_getprotocol( NULL, &protocol ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_getprotocol - EINVAL (NULL protocol)" ); - status = pthread_mutexattr_getprotocol( &attr, NULL ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_getprotocol - EINVAL (not initialized)" ); - status = pthread_mutexattr_getprotocol( &destroyed_attr, &protocol ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_setprotocol - EINVAL (NULL attr)" ); - status = pthread_mutexattr_setprotocol( NULL, PTHREAD_PRIO_NONE ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_setprotocol - EINVAL (invalid protocol)" ); - status = pthread_mutexattr_setprotocol( &attr, -1 ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_setprotocol - EINVAL (not initialized)" ); - status = pthread_mutexattr_setprotocol( &destroyed_attr, -1 ); - assert( status == EINVAL ); - - /* error cases for set and get prioceiling attribute */ - - empty_line(); - - puts( "Init: pthread_mutexattr_getprioceiling - EINVAL (NULL attr)" ); - status = pthread_mutexattr_getprioceiling( NULL, &ceiling ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_getprioceiling - EINVAL (NULL prioceiling)" ); - status = pthread_mutexattr_getprioceiling( &attr, NULL ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_getprioceiling - EINVAL (not initialized)" ); - status = pthread_mutexattr_getprioceiling( &destroyed_attr, &ceiling ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_setprioceiling - EINVAL (NULL attr)" ); - status = pthread_mutexattr_setprioceiling( NULL, 128 ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_setprioceiling - EINVAL (invalid priority)" ); - status = pthread_mutexattr_setprioceiling( &attr, 512 ); - if ( status != EINVAL ) - printf( "status = %d\n", status ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutexattr_setprioceiling - EINVAL (not initialized)" ); - status = pthread_mutexattr_setprioceiling( &destroyed_attr, -1 ); - assert( status == EINVAL ); - - /* create a thread */ - - status = pthread_create( &Task_id, NULL, Task_1, NULL ); - assert( !status ); - - /* now try some basic mutex operations */ - - empty_line(); - - puts( "Init: pthread_mutex_init - EINVAL (NULL mutex_id)" ); - status = pthread_mutex_init( NULL, &attr ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutex_init - EINVAL (not initialized attr)" ); - status = pthread_mutex_init( &Mutex_id, &destroyed_attr ); - assert( status == EINVAL ); - - /* must get around error checks in attribute set routines */ - attr.protocol = -1; - - puts( "Init: pthread_mutex_init - EINVAL (bad protocol)" ); - status = pthread_mutex_init( &Mutex_id, &attr ); - assert( status == EINVAL ); - - /* must get around error checks in attribute set routines */ - attr.protocol = PTHREAD_PRIO_INHERIT; - attr.prio_ceiling = -1; - - puts( "Init: pthread_mutex_init - EINVAL (bad priority ceiling)" ); - status = pthread_mutex_init( &Mutex_id, &attr ); - assert( status == EINVAL ); - - /* now set up for a success pthread_mutex_init */ - - puts( "Init: Resetting mutex attributes" ); - status = pthread_mutexattr_init( &attr ); - assert( !status ); - - puts( "Init: Changing mutex attributes" ); - status = pthread_mutexattr_setprotocol( &attr, PTHREAD_PRIO_INHERIT ); - assert( !status ); - - status = pthread_mutexattr_setprioceiling( &attr, 128 ); - assert( !status ); - - status = pthread_mutexattr_setpshared( &attr, PTHREAD_PROCESS_SHARED ); - assert( !status ); - - Print_mutexattr( "Init: ", &attr ); - - puts( "Init: Resetting mutex attributes" ); - status = pthread_mutexattr_init( &attr ); - assert( !status ); - - /* - * Set the protocol to priority ceiling so the owner check happens - * and the EPERM test (later) will work. - */ - - status = pthread_mutexattr_setprotocol( &attr, PTHREAD_PRIO_INHERIT ); - assert( !status ); - - puts( "Init: pthread_mutex_init - SUCCESSFUL" ); - status = pthread_mutex_init( &Mutex_id, &attr ); - if ( status ) - printf( "status = %d\n", status ); - assert( !status ); - - /* - * This is not required to be an error and when it is, there are - * behavioral conflicts with other implementations. - */ - puts( "Init: pthread_mutex_init - EBUSY (reinitialize an existing mutex) - skipped" ); - -#if 0 - status = pthread_mutex_init( &Mutex_id, &attr ); - if ( !status ) - printf( "status = %d\n", status ); - assert( status == EBUSY ); -#endif - - puts( "Init: pthread_mutex_trylock - EINVAL (illegal ID)" ); - status = pthread_mutex_trylock( &Mutex_bad_id ); - if ( status != EINVAL ) - printf( "status = %d\n", status ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutex_trylock - SUCCESSFUL" ); - status = pthread_mutex_trylock( &Mutex_id ); - if ( status ) - printf( "status = %d\n", status ); - assert( !status ); - - puts( "Init: pthread_mutex_trylock - EDEADLK (already locked)" ); - status = pthread_mutex_trylock( &Mutex_id ); - if ( status != EDEADLK ) - printf( "status = %d\n", status ); - assert( status == EDEADLK ); - - puts( "Init: pthread_mutex_lock - EDEADLK (already locked)" ); - status = pthread_mutex_lock( &Mutex_id ); - if ( status != EDEADLK ) - printf( "status = %d\n", status ); - assert( status == EDEADLK ); - - puts( "Init: Sleep 1 second" ); - - sleep( 1 ); - - /* switch to task 1 */ - - puts( "Init: pthread_mutex_unlock - EINVAL (invalid id)" ); - status = pthread_mutex_unlock( &Mutex_bad_id ); - if ( status != EINVAL ) - printf( "status = %d\n", status ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutex_unlock - SUCCESSFUL" ); - status = pthread_mutex_unlock( &Mutex_id ); - if ( status ) - printf( "status = %d\n", status ); - assert( !status ); - - puts( "Init: pthread_mutex_unlock - EPERM (not owner)" ); - status = pthread_mutex_unlock( &Mutex_id ); - if ( status != EPERM ) - printf( "status = %d\n", status ); - assert( status == EPERM ); - - times.tv_sec = 0; - times.tv_nsec = 500000000; - puts( "Init: pthread_mutex_timedlock - time out in 1/2 second" ); - status = pthread_mutex_timedlock( &Mutex_id, × ); - if ( status != EAGAIN ) - printf( "status = %d\n", status ); - assert( status == EAGAIN ); - - /* switch to idle */ - - puts( "Init: pthread_mutex_timedlock - EAGAIN (timeout)" ); - - /* destroy a mutex */ - - empty_line(); - - puts( "Init: pthread_mutex_init - SUCCESSFUL" ); - status = pthread_mutex_init( &Mutex2_id, &attr ); - if ( status ) - printf( "status = %d\n", status ); - assert( !status ); - - puts( "Init: pthread_mutex_init - EAGAIN (too many)" ); - status = pthread_mutex_init( &Mutex3_id, &attr ); - assert( status == EAGAIN ); - - puts( "Init: pthread_mutexattr_destroy - SUCCESSFUL" ); - status = pthread_mutexattr_destroy( &attr ); - assert( !status ); - - puts( "Init: pthread_mutex_destroy - SUCCESSFUL" ); - status = pthread_mutex_destroy( &Mutex2_id ); - assert( !status ); - - puts( "Init: pthread_mutex_destroy - EINVAL (invalid id)" ); - status = pthread_mutex_destroy( &Mutex_bad_id ); - assert( status == EINVAL ); - - /* destroy a busy mutex */ - - empty_line(); - - puts( "Init: pthread_mutexattr_init - SUCCESSFUL" ); - status = pthread_mutexattr_init( &attr ); - assert( !status ); - - puts( "Init: pthread_mutex_init - SUCCESSFUL" ); - status = pthread_mutex_init( &Mutex2_id, &attr ); - assert( !status ); - - puts( "Init: pthread_mutex_trylock - SUCCESSFUL" ); - status = pthread_mutex_trylock( &Mutex2_id ); - if ( status ) - printf( "status = %d\n", status ); - assert( !status ); - - puts( "Init: pthread_mutex_destroy - EBUSY (already locked)" ); - status = pthread_mutex_destroy( &Mutex2_id ); - if ( status != EBUSY ) - printf( "status = %d\n", status ); - assert( status == EBUSY ); - - puts( "Init: pthread_mutex_unlock - SUCCESSFUL" ); - status = pthread_mutex_unlock( &Mutex2_id ); - assert( !status ); - - puts( "Init: pthread_mutex_destroy - SUCCESSFUL" ); - status = pthread_mutex_destroy( &Mutex2_id ); - assert( !status ); - - /* priority inherit mutex */ - - empty_line(); - - puts( "Init: pthread_mutexattr_init - SUCCESSFUL" ); - status = pthread_mutexattr_init( &attr ); - assert( !status ); - - puts( - "Init: pthread_mutexattr_setprotocol - SUCCESSFUL (PTHREAD_PRIO_INHERIT)" - ); - status = pthread_mutexattr_setprotocol( &attr, PTHREAD_PRIO_INHERIT ); - assert( !status ); - - puts( "Init: pthread_mutex_init - SUCCESSFUL" ); - status = pthread_mutex_init( &Mutex2_id, &attr ); - assert( !status ); - - puts( "Init: pthread_mutex_trylock - SUCCESSFUL" ); - status = pthread_mutex_trylock( &Mutex2_id ); - assert( !status ); - - /* create a thread at a lower priority */ - - status = pthread_create( &Task2_id, NULL, Task_2, NULL ); - assert( !status ); - - /* set priority of Task2 to highest priority */ - - param.sched_priority = 254; - - puts( "Init: pthread_setschedparam - Setting Task2 priority to highest" ); - status = pthread_setschedparam( Task2_id, SCHED_FIFO, ¶m ); - assert( !status ); - - /* switching to Task2 */ - - status = pthread_getschedparam( pthread_self(), &policy, ¶m ); - assert( !status ); - printf( "Init: pthread_getschedparam - priority = %d\n", param.sched_priority); - - puts( "Init: pthread_mutex_unlock - SUCCESSFUL" ); - status = pthread_mutex_unlock( &Mutex2_id ); - assert( !status ); - - puts( "Init: pthread_mutexattr_destroy - SUCCESSFUL" ); - status = pthread_mutexattr_destroy( &attr ); - assert( !status ); - - puts( "Init: pthread_mutex_destroy - SUCCESSFUL" ); - status = pthread_mutex_destroy( &Mutex2_id ); - assert( !status ); - - /* priority ceiling mutex */ - - empty_line(); - - puts( "Init: pthread_mutexattr_init - SUCCESSFUL" ); - status = pthread_mutexattr_init( &attr ); - assert( !status ); - - puts( - "Init: pthread_mutexattr_setprotocol - SUCCESSFUL (PTHREAD_PRIO_PROTECT)" - ); - status = pthread_mutexattr_setprotocol( &attr, PTHREAD_PRIO_PROTECT ); - assert( !status ); - - puts( "Init: pthread_mutex_init - SUCCESSFUL" ); - status = pthread_mutex_init( &Mutex2_id, &attr ); - assert( !status ); - - puts( "Init: pthread_mutex_getprioceiling - EINVAL (invalid id)" ); - status = pthread_mutex_getprioceiling( &Mutex_bad_id, &ceiling ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutex_getprioceiling - EINVAL (NULL ceiling)" ); - status = pthread_mutex_getprioceiling( &Mutex2_id, NULL ); - assert( status == EINVAL ); - - status = pthread_mutex_getprioceiling( &Mutex2_id, &ceiling ); - assert( !status ); - printf( "Init: pthread_mutex_getprioceiling - %d\n", ceiling ); - - puts( "Init: pthread_mutex_setprioceiling - EINVAL (invalid id)" ); - status = pthread_mutex_setprioceiling( &Mutex_bad_id, 200, &old_ceiling ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutex_setprioceiling - EINVAL (illegal priority)" ); - status = pthread_mutex_setprioceiling( &Mutex2_id, 512, &old_ceiling ); - assert( status == EINVAL ); - - puts( "Init: pthread_mutex_setprioceiling - EINVAL (NULL ceiling)" ); - status = pthread_mutex_setprioceiling( &Mutex2_id, 128, NULL ); - assert( status == EINVAL ); - - /* normal cases of set priority ceiling */ - - puts( "Init: pthread_mutex_setprioceiling - new ceiling = 200" ); - status = pthread_mutex_setprioceiling( &Mutex2_id, 200, &old_ceiling ); - assert( !status ); - printf( - "Init: pthread_mutex_setprioceiling - old ceiling = %d\n",old_ceiling - ); - - status = pthread_getschedparam( pthread_self(), &policy, ¶m ); - assert( !status ); - printf( - "Init: pthread_getschedparam - priority = %d\n", param.sched_priority - ); - - puts( "Init: pthread_mutex_trylock - SUCCESSFUL" ); - status = pthread_mutex_trylock( &Mutex2_id ); - assert( !status ); - - status = pthread_getschedparam( pthread_self(), &policy, ¶m ); - assert( !status ); - printf( - "Init: pthread_getschedparam - priority = %d\n", param.sched_priority - ); - - /* create a thread at a higher priority */ - - status = pthread_create( &Task3_id, NULL, Task_3, NULL ); - assert( !status ); - - /* set priority of Task3 to highest priority */ - - param.sched_priority = 199; - - status = pthread_setschedparam( Task3_id, SCHED_FIFO, ¶m ); - assert( !status ); - puts( "Init: pthread_setschedparam - set Task3 priority to highest" ); - - /* DOES NOT SWITCH to Task3 */ - - puts( "Init: Sleep 1 second" ); - assert( !status ); - sleep( 1 ); - - /* switch to task 3 */ - - puts( "Init: pthread_mutex_unlock - SUCCESSFUL" ); - status = pthread_mutex_unlock( &Mutex2_id ); - assert( !status ); - - status = pthread_mutex_getprioceiling( &Mutex2_id, &ceiling ); - assert( !status ); - printf( "Init: pthread_mutex_getprioceiling- ceiling = %d\n", ceiling ); - - /* set priority of Init to highest priority */ - - param.sched_priority = 254; - - status = pthread_setschedparam( Init_id, SCHED_FIFO, ¶m ); - assert( !status ); - puts( "Init: pthread_setschedparam - set Init priority to highest" ); - - puts( "Init: pthread_mutex_lock - EINVAL (priority ceiling violation)" ); - status = pthread_mutex_lock( &Mutex2_id ); - if ( status != EINVAL ) - printf( "status = %d\n", status ); - assert( status == EINVAL ); - - puts( "*** END OF POSIX TEST 5 ***" ); - rtems_test_exit( 0 ); - - return NULL; /* just so the compiler thinks we returned something */ -} |