summaryrefslogtreecommitdiffstats
path: root/testsuites/samples/capture
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2007-08-21 10:49:31 +0000
committerChris Johns <chrisj@rtems.org>2007-08-21 10:49:31 +0000
commita23427e7b7ae9d43bd4d4ee3e7cd167844a109d6 (patch)
treedc7875f56bc73b5548022eebea89eac49f3440ca /testsuites/samples/capture
parent2007-08-20 Chris Johns <chisj@rtems.org> (diff)
downloadrtems-a23427e7b7ae9d43bd4d4ee3e7cd167844a109d6.tar.bz2
2007-08-21 Chris Johns <chrisj@rtems.org>
* capture/init.c, capture/system.h, capture/test1.c: Removed CRs from files. Committed incorrectly.
Diffstat (limited to 'testsuites/samples/capture')
-rw-r--r--testsuites/samples/capture/init.c146
-rw-r--r--testsuites/samples/capture/system.h184
-rw-r--r--testsuites/samples/capture/test1.c540
3 files changed, 435 insertions, 435 deletions
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 <stdio.h>
-#include <stdlib.h>
-
-#include <rtems.h>
-#include <rtems/capture-cli.h>
-#include <rtems/monitor.h>
-
-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 <stdio.h>
+#include <stdlib.h>
+
+#include <rtems.h>
+#include <rtems/capture-cli.h>
+#include <rtems/monitor.h>
+
+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 <rtems.h>
-
-/* 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 <bsp.h> /* 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 <rtems/confdefs.h>
-
-/*
- * 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 <rtems.h>
+
+/* 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 <bsp.h> /* 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 <rtems/confdefs.h>
+
+/*
+ * 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 <stdio.h>
-#include <stdlib.h>
-
-#include <rtems.h>
-#include <rtems/monitor.h>
-
-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 <stdio.h>
+#include <stdlib.h>
+
+#include <rtems.h>
+#include <rtems/monitor.h>
+
+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]);
+}