diff options
author | Bjorn Larsson <bjornlarsson@oarcorp.com> | 2014-03-27 09:47:24 -0500 |
---|---|---|
committer | Jennifer Averett <jennifer.averett@oarcorp.com> | 2014-03-28 13:09:06 -0500 |
commit | 719c7e55e4e9ee8c3e0184409cfd5862d501b1ba (patch) | |
tree | ee3d3859aab4bd87cb30637ac75215c7cf229785 /testsuites/sptests/sptask_err03/init.c | |
parent | spevent_err03: New test split from sp09 screen 4. (diff) | |
download | rtems-719c7e55e4e9ee8c3e0184409cfd5862d501b1ba.tar.bz2 |
sptask_err03: New test split from sp09 screen 3.
Diffstat (limited to 'testsuites/sptests/sptask_err03/init.c')
-rw-r--r-- | testsuites/sptests/sptask_err03/init.c | 260 |
1 files changed, 260 insertions, 0 deletions
diff --git a/testsuites/sptests/sptask_err03/init.c b/testsuites/sptests/sptask_err03/init.c new file mode 100644 index 0000000000..9d0ec294d5 --- /dev/null +++ b/testsuites/sptests/sptask_err03/init.c @@ -0,0 +1,260 @@ +/* + * COPYRIGHT (c) 2014. + * 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. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#define CONFIGURE_INIT +#include "system.h" + +const char rtems_test_name[] = "SP TASK ERROR 03"; + +rtems_task Init( + rtems_task_argument argument +) +{ + rtems_name task_name; + rtems_status_code status; + bool skipUnsatisfied; + + TEST_BEGIN(); + + Task_name[ 1 ] = rtems_build_name( 'T', 'A', '1', ' ' ); + Task_name[ 2 ] = rtems_build_name( 'T', 'A', '2', ' ' ); + Task_name[ 3 ] = rtems_build_name( 'T', 'A', '3', ' ' ); + Task_name[ 4 ] = rtems_build_name( 'T', 'A', '4', ' ' ); + Task_name[ 5 ] = rtems_build_name( 'T', 'A', '5', ' ' ); + Task_name[ 6 ] = rtems_build_name( 'T', 'A', '6', ' ' ); + Task_name[ 7 ] = rtems_build_name( 'T', 'A', '7', ' ' ); + Task_name[ 8 ] = rtems_build_name( 'T', 'A', '8', ' ' ); + Task_name[ 9 ] = rtems_build_name( 'T', 'A', '9', ' ' ); + Task_name[ 10 ] = rtems_build_name( 'T', 'A', 'A', ' ' ); + + /* task create bad name */ + task_name = 1; + status = rtems_task_create( + 0, + 1, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Junk_id + ); + fatal_directive_status( + status, + RTEMS_INVALID_NAME, + "rtems_task_create with illegal name" + ); + puts( "TA1 - rtems_task_create - RTEMS_INVALID_NAME" ); + + /* null ID */ + status = rtems_task_create( + Task_name[ 1 ], + 4, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + NULL + ); + fatal_directive_status( + status, + RTEMS_INVALID_ADDRESS, + "rtems_task_create with NULL ID param" + ); + puts( "TA1 - rtems_task_create - RTEMS_INVALID_ADDRESS" ); + + /* + * If the bsp provides its own stack allocator, then + * skip the test that tries to allocate a stack that is too big. + * + * If on the m32c, we can't even ask for enough memory to trip this + * error. + */ + + skipUnsatisfied = false; + if (rtems_configuration_get_stack_allocate_hook()) + skipUnsatisfied = true; + #if defined(__m32c__) + skipUnsatisfied = true; + #endif + + if ( skipUnsatisfied ) { + puts( + "TA1 - rtems_task_create - stack size - RTEMS_UNSATISFIED -- SKIPPED" + ); + } else { + status = rtems_task_create( + task_name, + 1, + rtems_configuration_get_work_space_size(), + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Junk_id + ); + fatal_directive_status( + status, + RTEMS_UNSATISFIED, + "rtems_task_create with a stack size larger than the workspace" + ); + puts( "TA1 - rtems_task_create - stack size - RTEMS_UNSATISFIED" ); + } + status = rtems_task_create( + Task_name[ 1 ], + 4, + RTEMS_MINIMUM_STACK_SIZE * 3, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Task_id[ 1 ] + ); + directive_failed( status, "rtems_task_create of TA1" ); + + status = rtems_task_create( + Task_name[ 2 ], + 4, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Task_id[ 2 ] + ); + directive_failed( status, "rtems_task_create of TA2" ); + puts( "TA1 - rtems_task_create - TA2 created - RTEMS_SUCCESSFUL" ); + + status = rtems_task_suspend( Task_id[ 2 ] ); + directive_failed( status, "rtems_task_suspend of TA2" ); + puts( "TA1 - rtems_task_suspend - suspend TA2 - RTEMS_SUCCESSFUL" ); + + status = rtems_task_suspend( Task_id[ 2 ] ); + fatal_directive_status( + status, + RTEMS_ALREADY_SUSPENDED, + "rtems_task_suspend of suspended TA2" + ); + puts( "TA1 - rtems_task_suspend - suspend TA2 - RTEMS_ALREADY_SUSPENDED" ); + + status = rtems_task_resume( Task_id[ 2 ] ); + directive_failed( status, "rtems_task_resume of TA2" ); + puts( "TA1 - rtems_task_resume - TA2 resumed - RTEMS_SUCCESSFUL" ); + + status = rtems_task_create( + Task_name[ 3 ], + 4, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Task_id[ 3 ] + ); + directive_failed( status, "rtems_task_create of TA3" ); + puts( "TA1 - rtems_task_create - TA3 created - RTEMS_SUCCESSFUL" ); + + status = rtems_task_create( + Task_name[ 5 ], + 4, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Task_id[ 5 ] + ); + directive_failed( status, "rtems_task_create of TA5" ); + puts( "TA1 - rtems_task_create - 5 created - RTEMS_SUCCESSFUL" ); + + status = rtems_task_create( + Task_name[ 6 ], + 4, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Task_id[ 6 ] + ); + directive_failed( status, "rtems_task_create of TA6" ); + puts( "TA1 - rtems_task_create - 6 created - RTEMS_SUCCESSFUL" ); + + status = rtems_task_create( + Task_name[ 7 ], + 4, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Task_id[ 7 ] + ); + directive_failed( status, "rtems_task_create of TA7" ); + puts( "TA1 - rtems_task_create - 7 created - RTEMS_SUCCESSFUL" ); + + status = rtems_task_create( + Task_name[ 8 ], + 4, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Task_id[ 8 ] + ); + directive_failed( status, "rtems_task_create of TA8" ); + puts( "TA1 - rtems_task_create - 8 created - RTEMS_SUCCESSFUL" ); + + status = rtems_task_create( + Task_name[ 9 ], + 4, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Task_id[ 9 ] + ); + directive_failed( status, "rtems_task_create of TA9" ); + puts( "TA1 - rtems_task_create - 9 created - RTEMS_SUCCESSFUL" ); + + status = rtems_task_create( + Task_name[ 10 ], + 4, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Task_id[ 10 ] + ); + directive_failed( status, "rtems_task_create of TA10" ); + puts( "TA1 - rtems_task_create - 10 created - RTEMS_SUCCESSFUL" ); + + status = rtems_task_create( + task_name, + 4, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Junk_id + ); + fatal_directive_status( + status, + RTEMS_TOO_MANY, + "rtems_task_create for too many tasks" + ); + puts( "TA1 - rtems_task_create - 11 - RTEMS_TOO_MANY" ); + + /* + * The check for an object being global is only made if + * multiprocessing is enabled. + */ + +#if defined(RTEMS_MULTIPROCESSING) + status = rtems_task_create( + task_name, + 4, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_GLOBAL, + &Junk_id + ); + fatal_directive_status( + status, + RTEMS_MP_NOT_CONFIGURED, + "rtems_task_create of global task in a single cpu system" + ); +#endif + puts( "TA1 - rtems_task_create - RTEMS_MP_NOT_CONFIGURED" ); + + TEST_END(); +} |