source: rtems/testsuites/sptests/spfifo03/init.c @ 9b4422a2

4.115
Last change on this file since 9b4422a2 was 9b4422a2, checked in by Joel Sherrill <joel.sherrill@…>, on 05/03/12 at 15:09:24

Remove All CVS Id Strings Possible Using a Script

Script does what is expected and tries to do it as
smartly as possible.

+ remove occurrences of two blank comment lines

next to each other after Id string line removed.

+ remove entire comment blocks which only exited to

contain CVS Ids

+ If the processing left a blank line at the top of

a file, it was removed.

  • Property mode set to 100644
File size: 5.5 KB
Line 
1/*  Init
2 *
3 *  This routine is the initialization task for this test program.
4 *  It is a user initialization task and has the responsibility
5 *  of invoking the test routine
6 *
7 *  Input parameters:
8 *    not_used
9 *
10 *  Output parameters:  NONE
11 *
12 *  COPYRIGHT (c) 1989-1999.
13 *  On-Line Applications Research Corporation (OAR).
14 *
15 *  The license and distribution terms for this file may be
16 *  found in the file LICENSE in this distribution or at
17 *  http://www.rtems.com/license/LICENSE.
18 */
19
20#ifdef HAVE_CONFIG_H
21#include "config.h"
22#endif
23
24#include <bsp.h>
25#include <tmacros.h>
26#include <stdio.h>
27#include <sys/types.h>
28#include <sys/stat.h>
29#include <fcntl.h>
30#include <unistd.h>
31#include <errno.h>
32
33#include <rtems.h>
34#include <rtems/libio.h>
35
36#define SEND_RCV_BUFSIZ 12
37rtems_id Barrier;
38
39rtems_task read_task(rtems_task_argument not_used)
40{
41  int fd = 0;
42  int status = -1;
43
44  char recvBuf_r1[SEND_RCV_BUFSIZ] = {0};
45  char recvBuf_r2[SEND_RCV_BUFSIZ] = {0};
46
47  puts("\nRead task activated, waiting till writer opens");
48
49  status = rtems_barrier_wait( Barrier, RTEMS_NO_TIMEOUT );
50  rtems_test_assert( status == RTEMS_SUCCESSFUL );
51
52  sleep(1);
53
54  puts("\nNow, reader opening file(1)"); 
55  fd = open("/tmp/fifo01", O_RDONLY);
56  if(fd <= 0) {
57    printf("Error opening file: (%d) :: %s", errno, strerror(errno));
58    rtems_test_assert(0);
59  }
60
61  status = read(fd, recvBuf_r1, sizeof(recvBuf_r1)-1);
62  rtems_test_assert(status == sizeof(recvBuf_r1)-1);
63
64  printf("\n@ receiver (being a unblocked reader): Got %s", recvBuf_r1);
65
66  status = close(fd);
67  rtems_test_assert(status == 0);
68
69  status = rtems_barrier_wait( Barrier, RTEMS_NO_TIMEOUT );
70  rtems_test_assert( status == RTEMS_SUCCESSFUL );
71 
72  puts("\nReader opening file(2)");
73  fd = open("/tmp/fifo01", O_RDONLY);
74  if(fd <= 0) {
75    printf("Error opening file: (%d) :: %s", errno, strerror(errno));
76    rtems_test_assert(0);
77  }
78
79  status = read(fd, recvBuf_r2, sizeof(recvBuf_r2)-1);
80  rtems_test_assert(status == sizeof(recvBuf_r2)-1);
81
82  printf("\n@ receiver (being a blocked reader): Got %s", recvBuf_r2);
83
84  status = close(fd);
85  rtems_test_assert(status == 0);
86 
87 
88  puts("\nReader done!");
89  status = rtems_barrier_wait( Barrier, RTEMS_NO_TIMEOUT );
90  rtems_test_assert( status == RTEMS_SUCCESSFUL );
91  rtems_task_delete( RTEMS_SELF );
92}
93
94
95void test_main(void) //Also acts as the write task
96{
97
98  rtems_id readTaskID;
99
100  rtems_name readTaskName;
101
102  char sendBuf_r1[SEND_RCV_BUFSIZ] = {0};
103  char sendBuf_r2[SEND_RCV_BUFSIZ] = {0};
104  int status = -1;
105  int fd = 0;
106
107
108  strcpy( sendBuf_r1, "SendBuffer1" );
109  strcpy( sendBuf_r2, "SendBuffer2" );
110
111  memset( &Barrier, 0, sizeof(Barrier) );
112  status = rtems_barrier_create (
113    rtems_build_name ( 'B', 'A', 'R', 't' ),
114    RTEMS_BARRIER_AUTOMATIC_RELEASE,
115    2,
116    &Barrier
117    );
118
119  rtems_test_assert( status == RTEMS_SUCCESSFUL );
120
121  puts("\n\n*** FIFO / PIPE OPEN TEST - 6 ***");
122
123  puts("\nCreating a task name and a task");
124  readTaskName = rtems_build_name('T','A','r',' ');
125
126  status = rtems_task_create(
127                             readTaskName,
128                             1,
129                             RTEMS_MINIMUM_STACK_SIZE * 2,
130                             RTEMS_INTERRUPT_LEVEL(31),
131                             RTEMS_DEFAULT_ATTRIBUTES,
132                             &readTaskID
133                             );
134 
135  rtems_test_assert( status == RTEMS_SUCCESSFUL );
136
137  puts("\ncreating directory /tmp");
138  status = mkdir("/tmp", 0777);
139  rtems_test_assert(status == 0);
140
141  puts("\ncreating fifo file /tmp/fifo01");
142  status = mkfifo("/tmp/fifo01", 0777);
143  rtems_test_assert(status == 0);
144
145  puts("\nStarting the read task");
146  status = rtems_task_start(readTaskID, read_task, 0);
147  rtems_test_assert(status == 0);
148
149  status = rtems_barrier_wait( Barrier, RTEMS_NO_TIMEOUT );
150  rtems_test_assert( status == RTEMS_SUCCESSFUL );
151
152  puts("\nWriter opening file(1)");
153  fd = open("/tmp/fifo01", O_WRONLY);
154  if(fd <= 0) {
155    printf("Error opening file: (%d) :: %s", errno, strerror(errno));
156    rtems_test_assert(0);
157  }
158
159 
160  printf("\n@ sender: %s", sendBuf_r1);
161  status = write(fd, sendBuf_r1, sizeof(sendBuf_r1)-1);
162  rtems_test_assert(status == sizeof(sendBuf_r1)-1);
163
164  status = close(fd);
165  rtems_test_assert(status == 0);
166 
167  status = rtems_barrier_wait( Barrier, RTEMS_NO_TIMEOUT );
168  rtems_test_assert( status == RTEMS_SUCCESSFUL );
169
170  sleep(1);
171
172  // Reader would have blocked by now
173  puts("\nWriter opening file(2)");
174  fd = open("/tmp/fifo01", O_WRONLY);
175  if(fd <= 0) {
176    printf("Error opening file: (%d) :: %s", errno, strerror(errno));
177    rtems_test_assert(0);
178  }
179
180  printf("\n@ sender: %s", sendBuf_r2);
181  status = write(fd, sendBuf_r2, sizeof(sendBuf_r2)-1);
182  rtems_test_assert(status == sizeof(sendBuf_r2)-1);
183
184  status = close(fd);
185  rtems_test_assert(status == 0);
186
187  status = rtems_barrier_wait( Barrier, RTEMS_NO_TIMEOUT );
188  rtems_test_assert( status == RTEMS_SUCCESSFUL );
189
190  puts( "Removing the fifo" );
191  status = unlink("/tmp/fifo01");
192  rtems_test_assert(status == 0);
193 
194  puts( "Removing /tmp" );
195  status = rmdir("/tmp");
196  rtems_test_assert(status == 0);
197 
198  puts("\n*** END OF FIFO / PIPE OPEN TEST - 6 ***");
199}
200
201rtems_task Init(
202  rtems_task_argument not_used
203)
204{
205  test_main();
206  rtems_test_exit(0);
207}
208
209#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
210#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
211
212#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
213#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 6
214
215#define CONFIGURE_MAXIMUM_TASKS 3
216
217#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
218
219#define CONFIGURE_MAXIMUM_BARRIERS 1
220
221#define CONFIGURE_INIT
222#define CONFIGURE_FIFOS_ENABLED
223#define CONFIGURE_MAXIMUM_FIFOS 1
224
225
226#define CONFIGURE_INIT
227#include <rtems/confdefs.h>
228
229/* end of file */
Note: See TracBrowser for help on using the repository browser.