diff --git a/testsuites/samples/ChangeLog b/testsuites/samples/ChangeLog index 8d8d29c68c..44e78f6b6e 100644 --- a/testsuites/samples/ChangeLog +++ b/testsuites/samples/ChangeLog @@ -1,3 +1,8 @@ +2007-08-21 Chris Johns + + * capture/init.c, capture/system.h, capture/test1.c: Removed CRs + from files. Committed incorrectly. + 2007-08-17 Chris Johns * Makefile.am, README, configure.ac, capture/.cvsignore, diff --git a/testsuites/samples/capture/init.c b/testsuites/samples/capture/init.c index 891d342b46..e147b70e81 100644 --- a/testsuites/samples/capture/init.c +++ b/testsuites/samples/capture/init.c @@ -1,73 +1,73 @@ -/* Init - * - * This routine is the initialization task for this test program. - * It is called from init_exec and has the responsibility for creating - * and starting the tasks that make up the test. If the time of day - * clock is required for the test, it should also be set to a known - * value by this function. - * - * Input parameters: NONE - * - * Output parameters: NONE - * - * COPYRIGHT (c) 1989-1997. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may in - * the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - * - * $Id$ - */ - -#define CONFIGURE_INIT - -#include "system.h" -#include -#include - -#include -#include -#include - -void setup_tasks_to_watch (); - -volatile int can_proceed = 1; - -rtems_task Init( - rtems_task_argument ignored -) -{ - rtems_task_priority old_priority; - rtems_mode old_mode; - rtems_event_set out; - - /* lower the task priority to allow created tasks to execute */ - - rtems_task_set_priority(RTEMS_SELF, 20, &old_priority); - rtems_task_mode(RTEMS_PREEMPT, RTEMS_PREEMPT_MASK, &old_mode); - - printf( "\n*** CAPTURE ENGINE TEST ***\n" ); - - while (!can_proceed) - { - printf ("Sleeping\n"); - usleep (1000000); - } - - rtems_monitor_init (0); - rtems_capture_cli_init (0); - - setup_tasks_to_watch (); - - rtems_task_delete (RTEMS_SELF); - - printf( "\nblocking main\n" ); - - rtems_event_receive (RTEMS_EVENT_1, RTEMS_WAIT | RTEMS_EVENT_ANY, - 0, &out); - - printf( "\n*** END OF UNLIMITED TASK TEST ***\n" ); - exit( 0 ); -} - +/* Init + * + * This routine is the initialization task for this test program. + * It is called from init_exec and has the responsibility for creating + * and starting the tasks that make up the test. If the time of day + * clock is required for the test, it should also be set to a known + * value by this function. + * + * Input parameters: NONE + * + * Output parameters: NONE + * + * COPYRIGHT (c) 1989-1997. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may in + * the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#define CONFIGURE_INIT + +#include "system.h" +#include +#include + +#include +#include +#include + +void setup_tasks_to_watch (); + +volatile int can_proceed = 1; + +rtems_task Init( + rtems_task_argument ignored +) +{ + rtems_task_priority old_priority; + rtems_mode old_mode; + rtems_event_set out; + + /* lower the task priority to allow created tasks to execute */ + + rtems_task_set_priority(RTEMS_SELF, 20, &old_priority); + rtems_task_mode(RTEMS_PREEMPT, RTEMS_PREEMPT_MASK, &old_mode); + + printf( "\n*** CAPTURE ENGINE TEST ***\n" ); + + while (!can_proceed) + { + printf ("Sleeping\n"); + usleep (1000000); + } + + rtems_monitor_init (0); + rtems_capture_cli_init (0); + + setup_tasks_to_watch (); + + rtems_task_delete (RTEMS_SELF); + + printf( "\nblocking main\n" ); + + rtems_event_receive (RTEMS_EVENT_1, RTEMS_WAIT | RTEMS_EVENT_ANY, + 0, &out); + + printf( "\n*** END OF UNLIMITED TASK TEST ***\n" ); + exit( 0 ); +} + diff --git a/testsuites/samples/capture/system.h b/testsuites/samples/capture/system.h index d4d6b6dce5..b8f1e39c45 100644 --- a/testsuites/samples/capture/system.h +++ b/testsuites/samples/capture/system.h @@ -1,92 +1,92 @@ -/* system.h - * - * This include file contains information that is included in every - * function in the test set. - * - * COPYRIGHT (c) 1989-1997. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may in - * the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - * - * $Id$ - */ - -#include - -/* functions */ - -rtems_task Init( - rtems_task_argument argument -); - -rtems_task test_task( - rtems_task_argument my_number -); - -void -destory_all_tasks( - const char *who -); - -boolean status_code_bad( - rtems_status_code status_code -); - -void test1(); -void test2(); -void test3(); - -/* configuration information */ - -#include /* for device driver prototypes */ - -#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER -#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER - -#define CONFIGURE_RTEMS_INIT_TASKS_TABLE - -#define TASK_ALLOCATION_SIZE (5) -#define CONFIGURE_MAXIMUM_TASKS rtems_resource_unlimited(TASK_ALLOCATION_SIZE) -#define CONFIGURE_EXTRA_TASK_STACKS (75 * RTEMS_MINIMUM_STACK_SIZE) - -#define CONFIGURE_MAXIMUM_USER_EXTENSIONS (5) - -#include - -/* - * Keep track of the task id's created, use a large array. - */ - -#define MAX_TASKS (1000) -#define TASK_INDEX_OFFSET (1) - -extern rtems_id task_id[MAX_TASKS]; - -/* - * Increment the task name. - */ - -#define NEXT_TASK_NAME(c1, c2, c3, c4) \ - if (c4 == '9') { \ - if (c3 == '9') { \ - if (c2 == 'z') { \ - if (c1 == 'z') { \ - printf("not enough task letters for names !!!\n"); \ - exit( 1 ); \ - } else \ - c1++; \ - c2 = 'a'; \ - } else \ - c2++; \ - c3 = '0'; \ - } else \ - c3++; \ - c4 = '0'; \ - } \ - else \ - c4++ \ - - -/* end of include file */ +/* system.h + * + * This include file contains information that is included in every + * function in the test set. + * + * COPYRIGHT (c) 1989-1997. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may in + * the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#include + +/* functions */ + +rtems_task Init( + rtems_task_argument argument +); + +rtems_task test_task( + rtems_task_argument my_number +); + +void +destory_all_tasks( + const char *who +); + +boolean status_code_bad( + rtems_status_code status_code +); + +void test1(); +void test2(); +void test3(); + +/* configuration information */ + +#include /* for device driver prototypes */ + +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE + +#define TASK_ALLOCATION_SIZE (5) +#define CONFIGURE_MAXIMUM_TASKS rtems_resource_unlimited(TASK_ALLOCATION_SIZE) +#define CONFIGURE_EXTRA_TASK_STACKS (75 * RTEMS_MINIMUM_STACK_SIZE) + +#define CONFIGURE_MAXIMUM_USER_EXTENSIONS (5) + +#include + +/* + * Keep track of the task id's created, use a large array. + */ + +#define MAX_TASKS (1000) +#define TASK_INDEX_OFFSET (1) + +extern rtems_id task_id[MAX_TASKS]; + +/* + * Increment the task name. + */ + +#define NEXT_TASK_NAME(c1, c2, c3, c4) \ + if (c4 == '9') { \ + if (c3 == '9') { \ + if (c2 == 'z') { \ + if (c1 == 'z') { \ + printf("not enough task letters for names !!!\n"); \ + exit( 1 ); \ + } else \ + c1++; \ + c2 = 'a'; \ + } else \ + c2++; \ + c3 = '0'; \ + } else \ + c3++; \ + c4 = '0'; \ + } \ + else \ + c4++ \ + + +/* end of include file */ diff --git a/testsuites/samples/capture/test1.c b/testsuites/samples/capture/test1.c index cfe6abae5c..9242aa7e2f 100644 --- a/testsuites/samples/capture/test1.c +++ b/testsuites/samples/capture/test1.c @@ -1,270 +1,270 @@ -/* Test1 - * - * This test uses creates a number of tasks so the capture engine - * can show a trace. - * - * Input parameters: NONE - * - * Output parameters: NONE - * - * COPYRIGHT (c) 1989-1997. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may in - * the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - * - * $Id$ - */ - -#include "system.h" -#include -#include - -#include -#include - -static volatile int capture_CT1a_deleted; -static volatile int capture_CT1b_deleted; -static volatile int capture_CT1c_deleted; - -static void -capture_wait (uint32_t period) -{ - rtems_task_wake_after (TOD_MICROSECONDS_TO_TICKS (period * 1000)); -} - -/* - * CT1a: Claim the mutex and then wait a while then wake - * up and release the mutex. While this task waits with - * the mutex another higher priority task is started that - * just loops using all the processing time. It is not until - * another even higher priority thread blocks on the mutex - * does this task get raised to that priority and so - * releases the mutex. This will allow us to capture the - * action of priority inversion. - */ -static void -capture_CT1a (rtems_task_argument arg) -{ - rtems_id mutex = (rtems_id) arg; - rtems_status_code sc; - - sc = rtems_semaphore_obtain (mutex, RTEMS_WAIT, 0); - - if (sc != RTEMS_SUCCESSFUL) - fprintf (stdout, "error: CT1a: mutex obtain: %s\n", - rtems_status_text (sc)); - - capture_wait (2500); - - sc = rtems_semaphore_release (mutex); - - if (sc != RTEMS_SUCCESSFUL) - fprintf (stdout, "error: CT1a: mutex release: %s\n", - rtems_status_text (sc)); - - capture_CT1a_deleted = 1; - - rtems_task_delete (RTEMS_SELF); -} - -static void -capture_CT1b (rtems_task_argument arg) -{ - volatile int i; - - while (!capture_CT1c_deleted) - i++; - - capture_CT1b_deleted = 1; - - rtems_task_delete (RTEMS_SELF); -} - -static void -capture_CT1c (rtems_task_argument arg) -{ - rtems_id mutex = (rtems_id) arg; - rtems_status_code sc; - - sc = rtems_semaphore_obtain (mutex, RTEMS_WAIT, 0); - - if (sc != RTEMS_SUCCESSFUL) - fprintf (stdout, "error: CT1c: mutex obtain: %s\n", - rtems_status_text (sc)); - - capture_wait (500); - - sc = rtems_semaphore_release (mutex); - - if (sc != RTEMS_SUCCESSFUL) - fprintf (stdout, "error: CT1c: mutex release: %s\n", - rtems_status_text (sc)); - - capture_CT1c_deleted = 1; - - rtems_task_delete (RTEMS_SELF); -} - -static void -capture_test_1 (int argc, - char** argv, - rtems_monitor_command_arg_t* command_arg, - boolean verbose) -{ - rtems_status_code sc; - rtems_name name; - rtems_id id[3]; - rtems_id mutex; - int loops; - - capture_CT1a_deleted = 0; - capture_CT1b_deleted = 0; - capture_CT1c_deleted = 0; - - name = rtems_build_name('C', 'T', 'm', '1'); - - sc = rtems_semaphore_create (name, 1, - RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE | - RTEMS_INHERIT_PRIORITY, - 0, &mutex); - - if (sc != RTEMS_SUCCESSFUL) - { - fprintf (stdout, "error: Test 1: cannot mutex: %s\n", - rtems_status_text (sc)); - return; - } - - name = rtems_build_name('C', 'T', '1', 'a'); - - sc = rtems_task_create (name, 102, 2 * 1024, - RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL, - RTEMS_PREEMPT | RTEMS_TIMESLICE | RTEMS_NO_ASR, - &id[0]); - - if (sc != RTEMS_SUCCESSFUL) - { - fprintf (stdout, "error: Test 1: cannot create CT1a: %s\n", - rtems_status_text (sc)); - rtems_semaphore_delete (mutex); - return; - } - - sc = rtems_task_start (id[0], capture_CT1a, (rtems_task_argument) mutex); - - if (sc != RTEMS_SUCCESSFUL) - { - fprintf (stdout, "error: Test 1: cannot start CT1a: %s\n", - rtems_status_text (sc)); - rtems_task_delete (id[0]); - rtems_semaphore_delete (mutex); - return; - } - - capture_wait (1000); - - name = rtems_build_name('C', 'T', '1', 'b'); - - sc = rtems_task_create (name, 101, 2 * 1024, - RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL, - RTEMS_PREEMPT | RTEMS_TIMESLICE | RTEMS_NO_ASR, - &id[1]); - - if (sc != RTEMS_SUCCESSFUL) - { - fprintf (stdout, "error: Test 1: cannot create CT1b: %s\n", - rtems_status_text (sc)); - rtems_task_delete (id[0]); - rtems_semaphore_delete (mutex); - return; - } - - sc = rtems_task_start (id[1], capture_CT1b, 0); - - if (sc != RTEMS_SUCCESSFUL) - { - fprintf (stdout, "error: Test 1: cannot start CT1b: %s\n", - rtems_status_text (sc)); - rtems_task_delete (id[1]); - rtems_task_delete (id[0]); - rtems_semaphore_delete (mutex); - return; - } - - capture_wait (1000); - - name = rtems_build_name('C', 'T', '1', 'c'); - - sc = rtems_task_create (name, 100, 2 * 1024, - RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL, - RTEMS_PREEMPT | RTEMS_TIMESLICE | RTEMS_NO_ASR, - &id[2]); - - if (sc != RTEMS_SUCCESSFUL) - { - fprintf (stdout, "error: Test 1: cannot create CT1c: %s\n", - rtems_status_text (sc)); - rtems_task_delete (id[1]); - rtems_task_delete (id[0]); - rtems_semaphore_delete (mutex); - return; - } - - sc = rtems_task_start (id[2], capture_CT1c, (rtems_task_argument) mutex); - - if (sc != RTEMS_SUCCESSFUL) - { - fprintf (stdout, "error: Test 1: cannot start CT1c: %s\n", - rtems_status_text (sc)); - rtems_task_delete (id[2]); - rtems_task_delete (id[1]); - rtems_task_delete (id[0]); - rtems_semaphore_delete (mutex); - return; - } - - loops = 15; - - while (!(capture_CT1a_deleted || capture_CT1b_deleted || - capture_CT1c_deleted) && loops) - { - loops--; - capture_wait (1000); - } - - if (!loops) - { - fprintf (stdout, "error: Test 1: test tasks did not delete\n"); - rtems_task_delete (id[2]); - rtems_task_delete (id[1]); - rtems_task_delete (id[0]); - } - - sc = rtems_semaphore_delete (mutex); - if (sc != RTEMS_SUCCESSFUL) - fprintf (stdout, "error: Test 1: deleting the mutex: %s\n", - rtems_status_text (sc)); -} - -static rtems_monitor_command_entry_t capture_cmds[] = -{ - { - "test1", - "usage: \n", - 0, - capture_test_1, - { 0 }, - 0 - } -}; - -void setup_tasks_to_watch () -{ - int cmd; - for (cmd = 0; - cmd < sizeof (capture_cmds) / sizeof (rtems_monitor_command_entry_t); - cmd++) - rtems_monitor_insert_cmd (&capture_cmds[cmd]); -} +/* Test1 + * + * This test uses creates a number of tasks so the capture engine + * can show a trace. + * + * Input parameters: NONE + * + * Output parameters: NONE + * + * COPYRIGHT (c) 1989-1997. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may in + * the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#include "system.h" +#include +#include + +#include +#include + +static volatile int capture_CT1a_deleted; +static volatile int capture_CT1b_deleted; +static volatile int capture_CT1c_deleted; + +static void +capture_wait (uint32_t period) +{ + rtems_task_wake_after (TOD_MICROSECONDS_TO_TICKS (period * 1000)); +} + +/* + * CT1a: Claim the mutex and then wait a while then wake + * up and release the mutex. While this task waits with + * the mutex another higher priority task is started that + * just loops using all the processing time. It is not until + * another even higher priority thread blocks on the mutex + * does this task get raised to that priority and so + * releases the mutex. This will allow us to capture the + * action of priority inversion. + */ +static void +capture_CT1a (rtems_task_argument arg) +{ + rtems_id mutex = (rtems_id) arg; + rtems_status_code sc; + + sc = rtems_semaphore_obtain (mutex, RTEMS_WAIT, 0); + + if (sc != RTEMS_SUCCESSFUL) + fprintf (stdout, "error: CT1a: mutex obtain: %s\n", + rtems_status_text (sc)); + + capture_wait (2500); + + sc = rtems_semaphore_release (mutex); + + if (sc != RTEMS_SUCCESSFUL) + fprintf (stdout, "error: CT1a: mutex release: %s\n", + rtems_status_text (sc)); + + capture_CT1a_deleted = 1; + + rtems_task_delete (RTEMS_SELF); +} + +static void +capture_CT1b (rtems_task_argument arg) +{ + volatile int i; + + while (!capture_CT1c_deleted) + i++; + + capture_CT1b_deleted = 1; + + rtems_task_delete (RTEMS_SELF); +} + +static void +capture_CT1c (rtems_task_argument arg) +{ + rtems_id mutex = (rtems_id) arg; + rtems_status_code sc; + + sc = rtems_semaphore_obtain (mutex, RTEMS_WAIT, 0); + + if (sc != RTEMS_SUCCESSFUL) + fprintf (stdout, "error: CT1c: mutex obtain: %s\n", + rtems_status_text (sc)); + + capture_wait (500); + + sc = rtems_semaphore_release (mutex); + + if (sc != RTEMS_SUCCESSFUL) + fprintf (stdout, "error: CT1c: mutex release: %s\n", + rtems_status_text (sc)); + + capture_CT1c_deleted = 1; + + rtems_task_delete (RTEMS_SELF); +} + +static void +capture_test_1 (int argc, + char** argv, + rtems_monitor_command_arg_t* command_arg, + boolean verbose) +{ + rtems_status_code sc; + rtems_name name; + rtems_id id[3]; + rtems_id mutex; + int loops; + + capture_CT1a_deleted = 0; + capture_CT1b_deleted = 0; + capture_CT1c_deleted = 0; + + name = rtems_build_name('C', 'T', 'm', '1'); + + sc = rtems_semaphore_create (name, 1, + RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE | + RTEMS_INHERIT_PRIORITY, + 0, &mutex); + + if (sc != RTEMS_SUCCESSFUL) + { + fprintf (stdout, "error: Test 1: cannot mutex: %s\n", + rtems_status_text (sc)); + return; + } + + name = rtems_build_name('C', 'T', '1', 'a'); + + sc = rtems_task_create (name, 102, 2 * 1024, + RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL, + RTEMS_PREEMPT | RTEMS_TIMESLICE | RTEMS_NO_ASR, + &id[0]); + + if (sc != RTEMS_SUCCESSFUL) + { + fprintf (stdout, "error: Test 1: cannot create CT1a: %s\n", + rtems_status_text (sc)); + rtems_semaphore_delete (mutex); + return; + } + + sc = rtems_task_start (id[0], capture_CT1a, (rtems_task_argument) mutex); + + if (sc != RTEMS_SUCCESSFUL) + { + fprintf (stdout, "error: Test 1: cannot start CT1a: %s\n", + rtems_status_text (sc)); + rtems_task_delete (id[0]); + rtems_semaphore_delete (mutex); + return; + } + + capture_wait (1000); + + name = rtems_build_name('C', 'T', '1', 'b'); + + sc = rtems_task_create (name, 101, 2 * 1024, + RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL, + RTEMS_PREEMPT | RTEMS_TIMESLICE | RTEMS_NO_ASR, + &id[1]); + + if (sc != RTEMS_SUCCESSFUL) + { + fprintf (stdout, "error: Test 1: cannot create CT1b: %s\n", + rtems_status_text (sc)); + rtems_task_delete (id[0]); + rtems_semaphore_delete (mutex); + return; + } + + sc = rtems_task_start (id[1], capture_CT1b, 0); + + if (sc != RTEMS_SUCCESSFUL) + { + fprintf (stdout, "error: Test 1: cannot start CT1b: %s\n", + rtems_status_text (sc)); + rtems_task_delete (id[1]); + rtems_task_delete (id[0]); + rtems_semaphore_delete (mutex); + return; + } + + capture_wait (1000); + + name = rtems_build_name('C', 'T', '1', 'c'); + + sc = rtems_task_create (name, 100, 2 * 1024, + RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL, + RTEMS_PREEMPT | RTEMS_TIMESLICE | RTEMS_NO_ASR, + &id[2]); + + if (sc != RTEMS_SUCCESSFUL) + { + fprintf (stdout, "error: Test 1: cannot create CT1c: %s\n", + rtems_status_text (sc)); + rtems_task_delete (id[1]); + rtems_task_delete (id[0]); + rtems_semaphore_delete (mutex); + return; + } + + sc = rtems_task_start (id[2], capture_CT1c, (rtems_task_argument) mutex); + + if (sc != RTEMS_SUCCESSFUL) + { + fprintf (stdout, "error: Test 1: cannot start CT1c: %s\n", + rtems_status_text (sc)); + rtems_task_delete (id[2]); + rtems_task_delete (id[1]); + rtems_task_delete (id[0]); + rtems_semaphore_delete (mutex); + return; + } + + loops = 15; + + while (!(capture_CT1a_deleted || capture_CT1b_deleted || + capture_CT1c_deleted) && loops) + { + loops--; + capture_wait (1000); + } + + if (!loops) + { + fprintf (stdout, "error: Test 1: test tasks did not delete\n"); + rtems_task_delete (id[2]); + rtems_task_delete (id[1]); + rtems_task_delete (id[0]); + } + + sc = rtems_semaphore_delete (mutex); + if (sc != RTEMS_SUCCESSFUL) + fprintf (stdout, "error: Test 1: deleting the mutex: %s\n", + rtems_status_text (sc)); +} + +static rtems_monitor_command_entry_t capture_cmds[] = +{ + { + "test1", + "usage: \n", + 0, + capture_test_1, + { 0 }, + 0 + } +}; + +void setup_tasks_to_watch () +{ + int cmd; + for (cmd = 0; + cmd < sizeof (capture_cmds) / sizeof (rtems_monitor_command_entry_t); + cmd++) + rtems_monitor_insert_cmd (&capture_cmds[cmd]); +}