source: rtems/testsuites/tmtests/tm25/task1.c @ c499856

4.11
Last change on this file since c499856 was c499856, checked in by Chris Johns <chrisj@…>, on Mar 20, 2014 at 9:10:47 PM

Change all references of rtems.com to rtems.org.

  • Property mode set to 100644
File size: 2.3 KB
Line 
1/*
2 *  COPYRIGHT (c) 1989-2013.
3 *  On-Line Applications Research Corporation (OAR).
4 *
5 *  The license and distribution terms for this file may be
6 *  found in the file LICENSE in this distribution or at
7 *  http://www.rtems.org/license/LICENSE.
8 */
9
10#ifdef HAVE_CONFIG_H
11#include "config.h"
12#endif
13
14#define CONFIGURE_INIT
15#include "system.h"
16
17rtems_id Semaphore_id;
18
19rtems_task High_tasks(
20  rtems_task_argument argument
21);
22
23rtems_task Low_task(
24  rtems_task_argument argument
25);
26
27rtems_task Init(
28  rtems_task_argument argument
29)
30{
31  rtems_id          task_id;
32  uint32_t    index;
33  rtems_status_code status;
34
35  Print_Warning();
36
37  puts( "\n\n*** TIME TEST 25 ***" );
38
39  status = rtems_semaphore_create(
40    rtems_build_name( 'S', 'M', '1', ' ') ,
41    0,
42    RTEMS_DEFAULT_ATTRIBUTES,
43    RTEMS_NO_PRIORITY,
44    &Semaphore_id
45  );
46  directive_failed( status, "rtems_semaphore_create of SM1" );
47
48  status = rtems_task_create(
49    rtems_build_name( 'L', 'O', 'W', ' ' ),
50    RTEMS_MAXIMUM_PRIORITY - 1u,
51    RTEMS_MINIMUM_STACK_SIZE,
52    RTEMS_DEFAULT_MODES,
53    RTEMS_DEFAULT_ATTRIBUTES,
54    &task_id
55  );
56  directive_failed( status, "rtems_task_create LOW" );
57
58  status = rtems_task_start( task_id, Low_task, 0 );
59  directive_failed( status, "rtems_task_start LOW" );
60
61  for ( index=1 ; index <= OPERATION_COUNT ; index++ ) {
62    status = rtems_task_create(
63      rtems_build_name( 'T', 'I', 'M', 'E' ),
64      (RTEMS_MAXIMUM_PRIORITY / 2u) + 1u,
65      RTEMS_MINIMUM_STACK_SIZE,
66      RTEMS_DEFAULT_MODES,
67      RTEMS_DEFAULT_ATTRIBUTES,
68      &task_id
69    );
70    directive_failed( status, "rtems_task_create LOOP" );
71
72    status = rtems_task_start( task_id, High_tasks, 0 );
73    directive_failed( status, "rtems_task_start LOOP" );
74  }
75
76  status = rtems_task_delete( RTEMS_SELF );
77  directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
78}
79
80rtems_task High_tasks(
81  rtems_task_argument argument
82)
83{
84  (void) rtems_semaphore_obtain(
85    Semaphore_id,
86    RTEMS_DEFAULT_OPTIONS,
87    0xffffffff
88  );
89}
90
91rtems_task Low_task(
92  rtems_task_argument argument
93)
94{
95  benchmark_timer_initialize();
96    (void) rtems_clock_tick();
97  end_time = benchmark_timer_read();
98
99  put_time(
100    "rtems_clock_tick: only case",
101    end_time,
102    1,
103    0,
104    CALLING_OVERHEAD_CLOCK_TICK
105  );
106
107  puts( "*** END OF TEST 25 ***" );
108  rtems_test_exit( 0 );
109}
Note: See TracBrowser for help on using the repository browser.