source:
rtems/testsuites/tmtests/tm14/task1.c
@
dcdb62d
Last change on this file since dcdb62d was 95a81ab, checked in by Joel Sherrill <joel.sherrill@…>, on 09/04/03 at 18:53:55 | |
---|---|
|
|
File size: 3.0 KB |
Line | |
---|---|
1 | /* |
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.rtems.com/license/LICENSE. |
9 | * |
10 | * $Id$ |
11 | */ |
12 | |
13 | #define TEST_INIT |
14 | #include "system.h" |
15 | |
16 | rtems_id Queue_id; |
17 | |
18 | long Buffer[4]; |
19 | |
20 | rtems_task test_init( |
21 | rtems_task_argument argument |
22 | ); |
23 | |
24 | rtems_task High_task( |
25 | rtems_task_argument argument |
26 | ); |
27 | |
28 | rtems_task Low_tasks( |
29 | rtems_task_argument argument |
30 | ); |
31 | |
32 | #define MESSAGE_SIZE (sizeof(long) * 4) |
33 | |
34 | rtems_task Init( |
35 | rtems_task_argument argument |
36 | ) |
37 | { |
38 | rtems_id task_id; |
39 | rtems_status_code status; |
40 | |
41 | Print_Warning(); |
42 | |
43 | puts( "\n\n*** TIME TEST 14 ***" ); |
44 | |
45 | status = rtems_task_create( |
46 | 1, |
47 | 251, |
48 | RTEMS_MINIMUM_STACK_SIZE, |
49 | RTEMS_DEFAULT_MODES, |
50 | RTEMS_DEFAULT_ATTRIBUTES, |
51 | &task_id |
52 | ); |
53 | directive_failed( status, "rtems_task_create" ); |
54 | |
55 | status = rtems_task_start( task_id, test_init, 0 ); |
56 | directive_failed( status, "rtems_task_start" ); |
57 | |
58 | status = rtems_task_delete( RTEMS_SELF ); |
59 | directive_failed( status, "rtems_task_delete of RTEMS_SELF" ); |
60 | } |
61 | |
62 | rtems_task test_init( |
63 | rtems_task_argument argument |
64 | ) |
65 | { |
66 | rtems_unsigned32 index; |
67 | rtems_task_entry task_entry; |
68 | rtems_task_priority priority; |
69 | rtems_id task_id; |
70 | rtems_status_code status; |
71 | |
72 | |
73 | status = rtems_message_queue_create( |
74 | rtems_build_name( 'M', 'Q', '1', ' ' ), |
75 | OPERATION_COUNT, |
76 | MESSAGE_SIZE, |
77 | RTEMS_DEFAULT_ATTRIBUTES, |
78 | &Queue_id |
79 | ); |
80 | directive_failed( status, "rtems_message_queue_create" ); |
81 | |
82 | priority = 250; |
83 | |
84 | for( index = 0; index <= OPERATION_COUNT ; index++ ) { |
85 | status = rtems_task_create( |
86 | rtems_build_name( 'T', 'I', 'M', 'E' ), |
87 | priority, |
88 | RTEMS_MINIMUM_STACK_SIZE, |
89 | RTEMS_DEFAULT_MODES, |
90 | RTEMS_DEFAULT_ATTRIBUTES, |
91 | &task_id |
92 | ); |
93 | directive_failed( status, "rtems_task_create LOOP" ); |
94 | |
95 | priority--; |
96 | |
97 | if ( index==OPERATION_COUNT ) task_entry = High_task; |
98 | else task_entry = Low_tasks; |
99 | |
100 | status = rtems_task_start( task_id, task_entry, 0 ); |
101 | directive_failed( status, "rtems_task_start LOOP" ); |
102 | } |
103 | } |
104 | |
105 | rtems_task High_task( |
106 | rtems_task_argument argument |
107 | ) |
108 | { |
109 | rtems_unsigned32 index; |
110 | |
111 | Timer_initialize(); |
112 | for ( index=1 ; index <= OPERATION_COUNT ; index++ ) |
113 | (void) Empty_function(); |
114 | overhead = Read_timer(); |
115 | |
116 | Timer_initialize(); |
117 | for ( index=1 ; index <= OPERATION_COUNT ; index++ ) |
118 | (void) rtems_message_queue_urgent( Queue_id, Buffer, MESSAGE_SIZE ); |
119 | end_time = Read_timer(); |
120 | |
121 | put_time( |
122 | "rtems_message_queue_urgent: task readied -- returns to caller", |
123 | end_time, |
124 | OPERATION_COUNT, |
125 | overhead, |
126 | CALLING_OVERHEAD_MESSAGE_QUEUE_URGENT |
127 | ); |
128 | |
129 | puts( "*** END OF TEST 14 ***" ); |
130 | rtems_test_exit( 0 ); |
131 | } |
132 | |
133 | rtems_task Low_tasks( |
134 | rtems_task_argument argument |
135 | ) |
136 | { |
137 | rtems_unsigned32 size; |
138 | |
139 | (void) rtems_message_queue_receive( |
140 | Queue_id, |
141 | (long (*)[4]) Buffer, |
142 | &size, |
143 | RTEMS_DEFAULT_OPTIONS, |
144 | RTEMS_NO_TIMEOUT |
145 | ); |
146 | } |
Note: See TracBrowser
for help on using the repository browser.