OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [tests/] [tmtests/] [tm02/] [task1.c] - Blame information for rev 577

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 unneback
/*
2
 *
3
 *  COPYRIGHT (c) 1989-1999.
4
 *  On-Line Applications Research Corporation (OAR).
5
 *
6
 *  The license and distribution terms for this file may be
7
 *  found in the file LICENSE in this distribution or at
8
 *  http://www.OARcorp.com/rtems/license.html.
9
 *
10
 *  $Id: task1.c,v 1.2 2001-09-27 12:02:41 chris Exp $
11
 */
12
 
13
#define TEST_INIT
14
#include "system.h"
15
 
16
rtems_id High_id;
17
rtems_id Low_id;
18
rtems_id Semaphore_id;
19
 
20
rtems_task High_task(
21
  rtems_task_argument argument
22
);
23
 
24
rtems_task Middle_tasks(
25
  rtems_task_argument argument
26
);
27
 
28
rtems_task Low_task(
29
  rtems_task_argument argument
30
);
31
 
32
 
33
void test_init();
34
 
35
rtems_task Init(
36
  rtems_task_argument argument
37
)
38
{
39
  rtems_status_code status;
40
 
41
  Print_Warning();
42
 
43
  puts( "\n\n*** TIME TEST 2 ***" );
44
 
45
  test_init();
46
 
47
  status = rtems_task_delete( RTEMS_SELF );
48
  directive_failed( status, "rtems_task_delete" );
49
}
50
 
51
void test_init()
52
{
53
  rtems_status_code   status;
54
  rtems_unsigned32    index;
55
  rtems_task_priority priority;
56
 
57
  priority = 5;
58
 
59
  status = rtems_task_create(
60
    rtems_build_name( 'H', 'I', 'G', 'H' ),
61
    priority,
62
    RTEMS_MINIMUM_STACK_SIZE,
63
    RTEMS_DEFAULT_MODES,
64
    RTEMS_DEFAULT_ATTRIBUTES,
65
    &High_id
66
  );
67
  directive_failed( status, "rtems_task_create of high task" );
68
 
69
  priority++;
70
 
71
  status = rtems_task_start( High_id, High_task, 0 );
72
  directive_failed( status, "rtems_task_start of high task" );
73
 
74
  for ( index=2 ; index <= OPERATION_COUNT ; index++ ) {
75
    status = rtems_task_create(
76
      rtems_build_name( 'M', 'I', 'D', ' ' ),
77
      priority,
78
      RTEMS_MINIMUM_STACK_SIZE,
79
      RTEMS_DEFAULT_MODES,
80
      RTEMS_DEFAULT_ATTRIBUTES,
81
      &Low_id
82
    );
83
    directive_failed( status, "rtems_task_create middle" );
84
 
85
    priority++;
86
 
87
    status = rtems_task_start( Low_id, Middle_tasks, 0 );
88
    directive_failed( status, "rtems_task_start middle" );
89
  }
90
 
91
  status = rtems_task_create(
92
    rtems_build_name( 'L', 'O', 'W', ' ' ),
93
    priority,
94
    RTEMS_MINIMUM_STACK_SIZE,
95
    RTEMS_DEFAULT_MODES,
96
    RTEMS_DEFAULT_ATTRIBUTES,
97
    &Low_id
98
  );
99
  directive_failed( status, "rtems_task_create low" );
100
 
101
  status = rtems_task_start( Low_id, Low_task, 0 );
102
  directive_failed( status, "rtems_task_start low" );
103
 
104
  status = rtems_semaphore_create(
105
    rtems_build_name( 'S', 'M', '1', ' '),
106
    0,
107
    RTEMS_DEFAULT_ATTRIBUTES,
108
    RTEMS_NO_PRIORITY,
109
    &Semaphore_id
110
  );
111
  directive_failed( status, "rtems_semaphore_create of SM1" );
112
}
113
 
114
rtems_task High_task(
115
  rtems_task_argument argument
116
)
117
{
118
  rtems_status_code status;
119
 
120
  Timer_initialize();           /* start blocking rtems_semaphore_obtain time */
121
  status = rtems_semaphore_obtain(
122
    Semaphore_id,
123
    RTEMS_DEFAULT_OPTIONS,
124
    RTEMS_NO_TIMEOUT
125
  );
126
}
127
 
128
rtems_task Middle_tasks(
129
  rtems_task_argument argument
130
)
131
{
132
  rtems_status_code status;
133
 
134
  status = rtems_semaphore_obtain(
135
    Semaphore_id,
136
    RTEMS_DEFAULT_OPTIONS,
137
    RTEMS_NO_TIMEOUT
138
  );
139
}
140
 
141
rtems_task Low_task(
142
  rtems_task_argument argument
143
)
144
{
145
  end_time = Read_timer();
146
 
147
  put_time(
148
    "rtems_semaphore_obtain: not available -- caller blocks",
149
    end_time,
150
    OPERATION_COUNT,
151
    0,
152
    CALLING_OVERHEAD_SEMAPHORE_OBTAIN
153
  );
154
 
155
  puts( "*** END OF TEST 2 ***" );
156
  exit( 0 );
157
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.