source: rtems/testsuites/sptests/spfifo05/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: 7.6 KB
Line 
1/*
2 *  COPYRIGHT (c) 1989-2010.
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.com/license/LICENSE.
8 */
9
10#ifdef HAVE_CONFIG_H
11#include "config.h"
12#endif
13
14#include <bsp.h>
15#include <tmacros.h>
16#include <stdio.h>
17#include <sys/types.h>
18#include <sys/stat.h>
19#include <fcntl.h>
20#include <unistd.h>
21#include <errno.h>
22#include <limits.h>
23
24#include <rtems.h>
25#include <rtems/libio.h>
26
27#define SEND_RCV_BUFSIZ       (PIPE_BUF+20)
28
29rtems_id rBarrier;
30rtems_id wBarrier;
31
32char recvBuf[SEND_RCV_BUFSIZ] = {0};
33char sendBuf[SEND_RCV_BUFSIZ] = {0};
34
35rtems_task read_task( rtems_task_argument not_used )
36{
37  int fd = 0;
38  int status = -1;
39  uint32_t released = 0;
40
41  puts( "read_task - opening /fifo in non-blocking mode" );
42
43  fd = open( "/fifo", O_RDONLY | O_NONBLOCK );
44  if( fd <= 0 ) {
45    printf( "Error opening file: (%d) :: %s\n", errno, strerror( errno ) );
46    rtems_test_assert( 0 );
47  }
48
49  puts( "read_task - attempt to read with number of writers = 0" );
50  status = read( fd, recvBuf, SEND_RCV_BUFSIZ );
51  rtems_test_assert( status == 0 );
52
53  puts( "read_task - releasing the write task" );
54  status = rtems_barrier_release( wBarrier, &released );
55  rtems_test_assert( status == 0 );
56
57  puts( "read_task - waiting at a barrier" );
58  status = rtems_barrier_wait( rBarrier, RTEMS_NO_TIMEOUT );
59  rtems_test_assert( status == RTEMS_SUCCESSFUL );
60
61  puts( "read_task - attempting to read from the fifo -- Expect EAGAIN" );
62  status = read( fd, recvBuf, SEND_RCV_BUFSIZ );
63  rtems_test_assert( status == -1 );
64  rtems_test_assert( errno == EAGAIN );
65
66  puts( "read_task - closing /fifo" );
67  status = close( fd );
68  rtems_test_assert( status == 0 );
69
70  puts("read_task - opening /fifo in read-only mode");
71  fd = open( "/fifo", O_RDONLY );
72  if( fd <= 0 ) {
73    printf( "Error opening file: (%d) :: %s\n", errno, strerror( errno ) );
74    rtems_test_assert( 0 );
75  }
76
77  puts( "read_task - releasing the write task" );
78  status = rtems_barrier_release( wBarrier, &released );
79  rtems_test_assert( status == 0 );
80
81  puts( "read_task - reading from /fifo - OK" );
82  status = read( fd, recvBuf, 10 );
83  rtems_test_assert( status == 10 );
84
85  puts( "read_task - reading from /fifo - OK" );
86  status = read( fd, recvBuf+10, 10 );
87  rtems_test_assert( status == 10 );
88
89  puts( "read_task - waiting at a barrier" );
90  status = rtems_barrier_wait( rBarrier, RTEMS_NO_TIMEOUT );
91  rtems_test_assert( status == RTEMS_SUCCESSFUL );
92
93  puts( "read_task - reading from /fifo - OK" );
94  status = read( fd, recvBuf+20, SEND_RCV_BUFSIZ - 20 );
95  rtems_test_assert( status == SEND_RCV_BUFSIZ - 20 );
96
97  if( strcmp( sendBuf, recvBuf ) ) {
98    puts( "Sent, received buffer do not match" );
99    rtems_test_assert( 0 );
100  }
101
102  puts( "read_task - releasing the write task" );
103  status = rtems_barrier_release( wBarrier, &released );
104  rtems_test_assert( status == 0 );
105
106  puts( "read_task - waiting at a barrier" );
107  status = rtems_barrier_wait( rBarrier, RTEMS_NO_TIMEOUT );
108  rtems_test_assert( status == RTEMS_SUCCESSFUL );
109
110  status = close( fd );
111  rtems_test_assert( status == 0 );
112
113  puts( "read_task - releasing the write task" );
114  status = rtems_barrier_release( wBarrier, &released );
115  rtems_test_assert( status == 0 );
116
117  rtems_task_delete( RTEMS_SELF );
118}
119
120
121
122rtems_task Init(
123  rtems_task_argument not_used
124)
125{
126  rtems_id readTaskID;
127
128  rtems_name readTaskName;
129
130  int status = -1;
131  int fd = 0;
132  uint32_t released = 0;
133  int flag = 1;
134
135  puts("\n*** FIFO / PIPE TESTS - 5 ***");
136
137  memset( sendBuf, '1', SEND_RCV_BUFSIZ - 30 );
138  memset( sendBuf, '2', 29 );
139  sendBuf[SEND_RCV_BUFSIZ-1] = 0;
140
141  memset( &rBarrier, 0, sizeof(rBarrier) );
142  status = rtems_barrier_create (
143    rtems_build_name ( 'B', 'A', 'R', 'r' ),
144    RTEMS_BARRIER_MANUAL_RELEASE,
145    2,
146    &rBarrier
147    );
148
149  rtems_test_assert( status == RTEMS_SUCCESSFUL );
150
151  memset( &wBarrier, 0, sizeof( wBarrier ) );
152  status = rtems_barrier_create (
153    rtems_build_name ( 'B', 'A', 'R', 'w' ),
154    RTEMS_BARRIER_MANUAL_RELEASE,
155    2,
156    &wBarrier
157    );
158  rtems_test_assert( status == RTEMS_SUCCESSFUL );
159
160  readTaskName = rtems_build_name( 'T','A','r',' ' );
161  status = rtems_task_create(
162                             readTaskName,
163                             1,
164                             RTEMS_MINIMUM_STACK_SIZE * 2,
165                             RTEMS_INTERRUPT_LEVEL(31),
166                             RTEMS_DEFAULT_ATTRIBUTES,
167                             &readTaskID
168                             );
169 
170  rtems_test_assert( status == RTEMS_SUCCESSFUL );
171
172  puts( "Init - Creating fifo file /fifo" );
173  status = mkfifo( "/fifo", 0777 );
174  rtems_test_assert( status == 0 );
175
176  puts( "Init - starting the read task" );
177  status = rtems_task_start( readTaskID, read_task, 0 );
178  rtems_test_assert( status == 0 );
179
180  puts( "Init - waiting at a barrier" );
181  status = rtems_barrier_wait( wBarrier, RTEMS_NO_TIMEOUT );
182  rtems_test_assert( status == RTEMS_SUCCESSFUL );
183
184  puts("Init - opening the fifo in write only mode -- OK");
185  fd = open("/fifo", O_WRONLY);
186  if(fd <= 0) {
187    printf("Error opening file: (%d) :: %s\n", errno, strerror(errno));
188    rtems_test_assert(0);
189  }
190
191  puts( "Init - writing to /fifo" );
192  status = write(fd, sendBuf, 0 );
193  rtems_test_assert( status == 0 );
194
195  puts( "Init - releasing the read_task" );
196  status = rtems_barrier_release( rBarrier, &released );
197  rtems_test_assert( status == 0 );
198
199  puts( "Init - waiting at a barrier" );
200  status = rtems_barrier_wait( wBarrier, RTEMS_NO_TIMEOUT );
201  rtems_test_assert( status == RTEMS_SUCCESSFUL );
202 
203  puts( "Init - writing to /fifo - OK" );
204  status = write(fd, sendBuf, SEND_RCV_BUFSIZ - 30 );
205  rtems_test_assert( status == SEND_RCV_BUFSIZ - 30 );
206
207  puts( "Init - writing to /fifo - OK" );
208  status = write(fd, sendBuf+SEND_RCV_BUFSIZ - 30, 30 );
209  rtems_test_assert( status == 30 );
210
211  puts( "Init - releasing the read_task" );
212  status = rtems_barrier_release( rBarrier, &released );
213  rtems_test_assert( status == 0 );
214
215  puts( "Init - waiting at a barrier" );
216  status = rtems_barrier_wait( wBarrier, RTEMS_NO_TIMEOUT );
217  rtems_test_assert( status == RTEMS_SUCCESSFUL ); 
218
219  puts( "Init - converting the write-mode to non-block" );
220  status = ioctl( fd, FIONBIO, &flag );
221  rtems_test_assert( status == 0 );
222
223  puts( "Init - writing to /fifo - OK" );
224  status = write(fd, sendBuf, SEND_RCV_BUFSIZ - 30 );
225  rtems_test_assert( status == SEND_RCV_BUFSIZ - 30 );
226 
227  puts( "Init - writing to /fifo - Expect EAGAIN" );
228  status = write(fd, sendBuf, SEND_RCV_BUFSIZ - 30 );
229  rtems_test_assert( status == -1 );
230  rtems_test_assert( errno == EAGAIN );
231
232  puts( "Init - releasing the read_task" );
233  status = rtems_barrier_release( rBarrier, &released );
234  rtems_test_assert( status == 0 );
235
236  puts( "Init - waiting at a barrier" );
237  status = rtems_barrier_wait( wBarrier, RTEMS_NO_TIMEOUT );
238  rtems_test_assert( status == RTEMS_SUCCESSFUL ); 
239
240  puts( "Init - writing to /fifo - Expect EPIPE" );
241  status = write(fd, sendBuf, SEND_RCV_BUFSIZ - 30 );
242  rtems_test_assert( status == -1 );
243  rtems_test_assert( errno == EPIPE );
244
245  status = close( fd );
246  rtems_test_assert( status == 0 );
247
248  puts( "Removing the fifo" );
249  status = unlink("/fifo");
250  rtems_test_assert(status == 0);
251 
252  puts("*** END OF FIFO / PIPE OPEN TEST - 6 ***");
253  rtems_test_exit(0);
254}
255
256#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
257#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
258
259#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
260#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 6
261
262#define CONFIGURE_MAXIMUM_TASKS 3
263
264#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
265
266#define CONFIGURE_MAXIMUM_BARRIERS 2
267
268#define CONFIGURE_INIT
269#define CONFIGURE_FIFOS_ENABLED
270#define CONFIGURE_MAXIMUM_FIFOS 1
271
272
273#define CONFIGURE_INIT
274#include <rtems/confdefs.h>
275
276/* end of file */
Note: See TracBrowser for help on using the repository browser.