2010-06-07 Bharath Suri <bharath.s.jois@gmail.com>

PR PR1542
	* Makefile.am, configure.ac: Coverage improvement: fifo_open.
	* spfifo01/spfifo01.doc, spfifo01/spfifo01.scn, spfifo01/test.c,
	spfifo02/Makefile.am, spfifo02/main.c, spfifo02/spfifo02.doc,
	spfifo02/spfifo02.scn, spfifo02/test.c, spfifo03/Makefile.am,
	spfifo03/main.c, spfifo03/spfifo03.doc, spfifo03/spfifo03.scn,
	spfifo03/test.c, spfifo04/Makefile.am, spfifo04/main.c,
	spfifo04/spfifo04.doc, spfifo04/spfifo04.scn, spfifo04/test.c: New
	files.
This commit is contained in:
Jennifer Averett
2010-06-07 19:09:28 +00:00
parent fab27e479a
commit cfde647908
21 changed files with 850 additions and 0 deletions

View File

@@ -1,3 +1,15 @@
2010-06-07 Bharath Suri <bharath.s.jois@gmail.com>
PR PR1542
* Makefile.am, configure.ac: Coverage improvement: fifo_open.
* spfifo01/spfifo01.doc, spfifo01/spfifo01.scn, spfifo01/test.c,
spfifo02/Makefile.am, spfifo02/main.c, spfifo02/spfifo02.doc,
spfifo02/spfifo02.scn, spfifo02/test.c, spfifo03/Makefile.am,
spfifo03/main.c, spfifo03/spfifo03.doc, spfifo03/spfifo03.scn,
spfifo03/test.c, spfifo04/Makefile.am, spfifo04/main.c,
spfifo04/spfifo04.doc, spfifo04/spfifo04.scn, spfifo04/test.c: New
files.
2010-06-07 Sebastian Huber <Sebastian.Huber@embedded-brains.de> 2010-06-07 Sebastian Huber <Sebastian.Huber@embedded-brains.de>
* sp09/screen12.c: Update for heap extend changes. * sp09/screen12.c: Update for heap extend changes.

View File

@@ -18,6 +18,7 @@ SUBDIRS = \
spstkalloc spthreadq01 spwatchdog spwkspace \ spstkalloc spthreadq01 spwatchdog spwkspace \
spfatal01 spfatal02 spfatal03 spfatal04 spfatal05 spfatal06 spfatal07 \ spfatal01 spfatal02 spfatal03 spfatal04 spfatal05 spfatal06 spfatal07 \
spfatal08 spfatal09 spfatal10 spfatal11 spfatal12 spfatal13 \ spfatal08 spfatal09 spfatal10 spfatal11 spfatal12 spfatal13 \
spfifo01 spfifo02 spfifo03 spfifo04 \
spintrcritical01 spintrcritical02 spintrcritical03 spintrcritical04 \ spintrcritical01 spintrcritical02 spintrcritical03 spintrcritical04 \
spintrcritical05 spintrcritical06 spintrcritical07 spintrcritical08 \ spintrcritical05 spintrcritical06 spintrcritical07 spintrcritical08 \
spintrcritical09 spintrcritical10 spintrcritical11 spintrcritical12 \ spintrcritical09 spintrcritical10 spintrcritical11 spintrcritical12 \

View File

@@ -111,6 +111,10 @@ spfatal10/Makefile
spfatal11/Makefile spfatal11/Makefile
spfatal12/Makefile spfatal12/Makefile
spfatal13/Makefile spfatal13/Makefile
spfifo01/Makefile
spfifo02/Makefile
spfifo03/Makefile
spfifo04/Makefile
spintrcritical01/Makefile spintrcritical01/Makefile
spintrcritical02/Makefile spintrcritical02/Makefile
spintrcritical03/Makefile spintrcritical03/Makefile

View File

@@ -0,0 +1,24 @@
#
# $Id$
#
# COPYRIGHT (c) 1989-1999.
# On-Line Applications Research Corporation (OAR).
#
# The license and distribution terms for this file may be
# found in the file LICENSE in this distribution or at
# http://www.rtems.com/license/LICENSE.
#
This file describes the directives and concepts tested by this test set.
Configuration:
Pipes not enabled.
Expected:
With pipes not enabled, the semaphore required for creation of new
pipe will not be available (this semaphore is created at init if pipes
are enabled)
With this, fifo_open fails with EINTR

View File

@@ -0,0 +1,29 @@
Could not open '/dev/kqemu' - QEMU acceleration layer not activated: No such file or directory
Initialized console on port COM1 9600-8-N-1
*** FIFO / PIPE OPEN TEST - 1 ***
Configuration: Pipes not enabled
Creating directory /tmp
Creating fifo /tmp/fifo
Attempt to open the fifo file
Must result in failure since pipes are not enabled in the configuration
Remove the entry /tmp/fifo01
Remove directory /tmp

View File

@@ -0,0 +1,73 @@
/* test_main
*
* This routine serves as a test routine.
* Exercises the fifo_open
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
/* Includes */
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <tmacros.h>
#include <rtems.h>
#include <rtems/libio.h>
void test_main(void)
{
int status = -1;
int fd = 0;
puts("\n\n*** FIFO / PIPE OPEN TEST - 1 ***");
puts(
"\n\nConfiguration: Pipes not enabled"
);
puts("\n\nCreating directory /tmp");
status = mkdir("/tmp", 0777);
rtems_test_assert(status == 0);
puts("\n\nCreating fifo /tmp/fifo");
status = mkfifo("/tmp/fifo01", 0777);
rtems_test_assert(status == 0);
puts("\n\nAttempt to open the fifo file\n");
puts(
"Must result in failure since \
pipes are not enabled in the configuration"
);
fd = open("/tmp/fifo01", O_RDONLY);
rtems_test_assert(fd == -1);
rtems_test_assert(errno == EINTR); // Should this
// be ENOMEM?
puts("\n\nRemove the entry /tmp/fifo01");
status = unlink("/tmp/fifo01");
rtems_test_assert(status == 0);
puts("\n\nRemove directory /tmp");
status = rmdir("/tmp");
rtems_test_assert(status == 0);
puts("\n\n*** END OF FIFO / PIPE OPEN TEST - 1 ***");
}

View File

@@ -0,0 +1,27 @@
##
## $Id$
##
MANAGERS = all
rtems_tests_PROGRAMS = spfifo02
spfifo02_SOURCES = main.c test.c
dist_rtems_tests_DATA = spfifo02.scn
dist_rtems_tests_DATA += spfifo02.doc
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
include $(top_srcdir)/../automake/compile.am
include $(top_srcdir)/../automake/leaf.am
AM_CPPFLAGS += -I$(top_srcdir)/../support/include
LINK_OBJS = $(spfifo02_OBJECTS) $(spfifo02_LDADD)
LINK_LIBS = $(spfifo02_LDLIBS)
spfifo02$(EXEEXT): $(spfifo02_OBJECTS) $(spfifo02_DEPENDENCIES)
@rm -f spfifo02$(EXEEXT)
$(make-exe)
include $(top_srcdir)/../automake/local.am

View File

@@ -0,0 +1,50 @@
/* Init
*
* This routine is the initialization task for this test program.
* It is a user initialization task and has the responsibility
* of invoking the test routine
*
* Input parameters:
* not_used
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
/* Includes */
#include <bsp.h>
#include <tmacros.h>
void test_main(void);
rtems_task Init(
rtems_task_argument not_used
)
{
test_main();
rtems_test_exit(0);
}
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 6
#define CONFIGURE_MAXIMUM_TASKS 1
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_PIPES_ENABLED
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* end of file */

View File

@@ -0,0 +1,22 @@
#
# $Id$
#
# COPYRIGHT (c) 1989-1999.
# On-Line Applications Research Corporation (OAR).
#
# The license and distribution terms for this file may be
# found in the file LICENSE in this distribution or at
# http://www.rtems.com/license/LICENSE.
#
This file describes the directives and concepts tested by this test set.
Configuration:
Pipes enabled. Maximum number of barriers is not defined and hence =
0.
Expected:
Pipe requires 2 barriers to be created. With max number of barriers
set to 0, fifo_open fails with EINTR

View File

@@ -0,0 +1,31 @@
Could not open '/dev/kqemu' - QEMU acceleration layer not activated: No such file or directory
Initialized console on port COM1 9600-8-N-1
*** FIFO / PIPE OPEN TEST - 2 ***
Configuration: Pipes configured, but number of barriers configured = 0
Creating directory /tmp
Creating fifo /tmp/fifo
Attempt to open the fifo file
Must result in failure since
number of barriers = 0 => not all resources
were acquired
Remove the entry /tmp/fifo01
Remove directory /tmp

View File

@@ -0,0 +1,75 @@
/* test_main
*
* This routine serves as a test routine.
* Exercises the fifo_open
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
/* Includes */
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <tmacros.h>
#include <rtems.h>
#include <rtems/libio.h>
void test_main(void)
{
int status = -1;
int fd = 0;
puts("\n\n*** FIFO / PIPE OPEN TEST - 2 ***");
puts(
"\n\nConfiguration: Pipes configured, \
but number of barriers configured = 0"
);
puts("\n\nCreating directory /tmp");
status = mkdir("/tmp", 0777);
rtems_test_assert(status == 0);
puts("\n\nCreating fifo /tmp/fifo");
status = mkfifo("/tmp/fifo01", 0777);
rtems_test_assert(status == 0);
puts("\n\nAttempt to open the fifo file\n");
puts(
"Must result in failure since \n\
number of barriers = 0 => not all resources\n\
were acquired"
);
fd = open("/tmp/fifo01", O_RDONLY);
rtems_test_assert(fd == -1);
rtems_test_assert(errno == EINTR); // Should this
// be ENOMEM?
puts("\n\nRemove the entry /tmp/fifo01");
status = unlink("/tmp/fifo01");
rtems_test_assert(status == 0);
puts("\n\nRemove directory /tmp");
status = rmdir("/tmp");
rtems_test_assert(status == 0);
puts("\n\n*** END OF FIFO / PIPE OPEN TEST - 2 ***");
}

View File

@@ -0,0 +1,27 @@
##
## $Id$
##
MANAGERS = all
rtems_tests_PROGRAMS = spfifo03
spfifo03_SOURCES = main.c test.c
dist_rtems_tests_DATA = spfifo03.scn
dist_rtems_tests_DATA += spfifo03.doc
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
include $(top_srcdir)/../automake/compile.am
include $(top_srcdir)/../automake/leaf.am
AM_CPPFLAGS += -I$(top_srcdir)/../support/include
LINK_OBJS = $(spfifo03_OBJECTS) $(spfifo03_LDADD)
LINK_LIBS = $(spfifo03_LDLIBS)
spfifo03$(EXEEXT): $(spfifo03_OBJECTS) $(spfifo03_DEPENDENCIES)
@rm -f spfifo03$(EXEEXT)
$(make-exe)
include $(top_srcdir)/../automake/local.am

View File

@@ -0,0 +1,51 @@
/* Init
*
* This routine is the initialization task for this test program.
* It is a user initialization task and has the responsibility
* of invoking the test routine
*
* Input parameters:
* not_used
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
/* Includes */
#include <bsp.h>
#include <tmacros.h>
void test_main(void);
rtems_task Init(
rtems_task_argument not_used
)
{
test_main();
rtems_test_exit(0);
}
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 6
#define CONFIGURE_MAXIMUM_TASKS 1
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_PIPES_ENABLED
#define CONFIGURE_INIT
#define CONFIGURE_MAXIMUM_BARRIERS 1
#include <rtems/confdefs.h>
/* end of file */

View File

@@ -0,0 +1,21 @@
#
# $Id$
#
# COPYRIGHT (c) 1989-1999.
# On-Line Applications Research Corporation (OAR).
#
# The license and distribution terms for this file may be
# found in the file LICENSE in this distribution or at
# http://www.rtems.com/license/LICENSE.
#
This file describes the directives and concepts tested by this test set.
Configuration:
Pipes enabled. Maximum number of barriers is set to 1.
Expected:
Pipe requires 2 barriers to be created. With max number of barriers
set to 1, fifo_open fails with EINTR

View File

@@ -0,0 +1,32 @@
Could not open '/dev/kqemu' - QEMU acceleration layer not activated: No such file or directory
Initialized console on port COM1 9600-8-N-1
*** FIFO / PIPE OPEN TEST - 3 ***
Configuration: Pipes configured, but number of barriers configured = 1
Required number of barriers = 2
Creating directory /tmp
Creating fifo /tmp/fifo
Attempt to open the fifo file
Must result in failure since
number of barriers = 1 => not all resources
were acquired
Remove the entry /tmp/fifo01
Remove directory /tmp

View File

@@ -0,0 +1,76 @@
/* test_main
*
* This routine serves as a test routine.
* Exercises the fifo_open
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
/* Includes */
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <tmacros.h>
#include <rtems.h>
#include <rtems/libio.h>
void test_main(void)
{
int status = -1;
int fd = 0;
puts("\n\n*** FIFO / PIPE OPEN TEST - 3 ***");
puts(
"\n\nConfiguration: Pipes configured, \
but number of barriers configured = 1\n\
Required number of barriers = 2"
);
puts("\n\nCreating directory /tmp");
status = mkdir("/tmp", 0777);
rtems_test_assert(status == 0);
puts("\n\nCreating fifo /tmp/fifo");
status = mkfifo("/tmp/fifo01", 0777);
rtems_test_assert(status == 0);
puts("\n\nAttempt to open the fifo file\n");
puts(
"Must result in failure since \n\
number of barriers = 1 => not all resources\n\
were acquired"
);
fd = open("/tmp/fifo01", O_RDONLY);
rtems_test_assert(fd == -1);
rtems_test_assert(errno == EINTR); // Should this
// be ENOMEM?
puts("\n\nRemove the entry /tmp/fifo01");
status = unlink("/tmp/fifo01");
rtems_test_assert(status == 0);
puts("\n\nRemove directory /tmp");
status = rmdir("/tmp");
rtems_test_assert(status == 0);
puts("\n\n*** END OF FIFO / PIPE OPEN TEST - 3 ***");
}

View File

@@ -0,0 +1,26 @@
##
## $Id$
##
MANAGERS = all
rtems_tests_PROGRAMS = spfifo04
spfifo04_SOURCES = main.c test.c
dist_rtems_tests_DATA = spfifo04.scn
dist_rtems_tests_DATA += spfifo04.doc
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
include $(top_srcdir)/../automake/compile.am
include $(top_srcdir)/../automake/leaf.am
AM_CPPFLAGS += -I$(top_srcdir)/../support/include
LINK_OBJS = $(spfifo04_OBJECTS) $(spfifo04_LDADD)
LINK_LIBS = $(spfifo04_LDLIBS)
spfifo04$(EXEEXT): $(spfifo04_OBJECTS) $(spfifo04_DEPENDENCIES)
@rm -f spfifo04$(EXEEXT)
$(make-exe)
include $(top_srcdir)/../automake/local.am

View File

@@ -0,0 +1,51 @@
/* Init
*
* This routine is the initialization task for this test program.
* It is a user initialization task and has the responsibility
* of invoking the test routine
*
* Input parameters:
* not_used
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
/* Includes */
#include <bsp.h>
#include <tmacros.h>
void test_main(void);
rtems_task Init(
rtems_task_argument not_used
)
{
test_main();
rtems_test_exit(0);
}
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 6
#define CONFIGURE_MAXIMUM_TASKS 1
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_PIPES_ENABLED
#define CONFIGURE_INIT
#define CONFIGURE_MAXIMUM_BARRIERS 2
#include <rtems/confdefs.h>
/* end of file */

View File

@@ -0,0 +1,51 @@
#
# $Id$
#
# COPYRIGHT (c) 1989-1999.
# On-Line Applications Research Corporation (OAR).
#
# The license and distribution terms for this file may be
# found in the file LICENSE in this distribution or at
# http://www.rtems.com/license/LICENSE.
#
This file describes the directives and concepts tested by this test set.
Configuration:
Pipes enabled.
Maximum number of barriers is set to 2.
Coverage concepts:
With number of barriers set to 2, and provided there is sufficient
memory available, fifo_open -> pipe_new must be able to create a new
pipe_control_t successfully.
This test
- Creates a directory /tmp
- Creates a fifo file /tmp/fifo01
- Opens the fifo in read-write mode, covering one of the cases of the
switch statement (this should be successful)
- Closes the fifo
- Opens the file in read-only, non-blocing mode, covering another case
of the switch (this should be successful)
- Closes the fifo
- Opens the file in write-only, non-blocking mode, covering yet
another case in the switch. (this should not be successful, instead,
since we opened the fifo in a WRONLY and NONBLOCK mode, we receive
an ENXIO error)
- fifo_open (pipe_new) maintains a static character variable, which it
uses to create semaphores and barriers. The value of this character
goes from a -> z -> a -> z... To hit the case where z is wrapped
back to a, fifo_open must be called a minimum total of 26
times. This is achieved by repeated opens on the fifo file created.
- After every successful open, the file is closed
- Remove fifo file
- Remove tmp directory

View File

@@ -0,0 +1,50 @@
Could not open '/dev/kqemu' - QEMU acceleration layer not activated: No such file or directory
Initialized console on port COM1 9600-8-N-1
*** FIFO / PIPE OPEN TEST - 4 ***
Configuration: Pipes configured, but number of barriers configured = 2
Creating directory /tmp
Creating fifo /tmp/fifo
Attempt to open the fifo file in RDWR mode
Should be successful and non-negativefile descriptor expected
Closing the fifo file
Attempt to open the fifo file in RDONLY and NONBLOCK mode
Should be successful and non-negativefile descriptor expected
Closing the fifo file
Attempt to open the fifo file in WRONLY and NONBLOCK mode
Should return with an error ENXIO
Multiple opens
1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14... 15... 16... 17... 18... 19... 20... 21... 22... 23...
Remove the entry /tmp/fifo01
Remove directory /tmp

View File

@@ -0,0 +1,117 @@
/* test_main
*
* This routine serves as a test routine.
* Exercises the fifo_open
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
/* Includes */
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <tmacros.h>
#include <rtems.h>
#include <rtems/libio.h>
#define NUM_OPEN_REQ 26
void test_main(void)
{
int status = -1;
int fd = 0;
int index = 0;
int num_opens = 0;
puts("\n\n*** FIFO / PIPE OPEN TEST - 4 ***");
puts(
"\n\nConfiguration: Pipes configured, \
but number of barriers configured = 2\n"
);
puts("\n\nCreating directory /tmp");
status = mkdir("/tmp", 0777);
rtems_test_assert(status == 0);
puts("\n\nCreating fifo /tmp/fifo");
status = mkfifo("/tmp/fifo01", 0777);
rtems_test_assert(status == 0);
puts("\n\nAttempt to open the fifo file in RDWR mode\n");
puts("Should be successful and non-negative\
file descriptor expected");
fd = open("/tmp/fifo01", O_RDWR);
rtems_test_assert(fd > 0);
++num_opens;
puts("\n\nClosing the fifo file");
status = close(fd);
rtems_test_assert(status == 0);
puts("\n\nAttempt to open the fifo file in \
RDONLY and NONBLOCK mode\n");
puts("Should be successful and non-negative\
file descriptor expected");
fd = open("/tmp/fifo01", O_RDONLY | O_NONBLOCK);
rtems_test_assert(fd > 0);
++num_opens;
puts("\n\nClosing the fifo file");
status = close(fd);
rtems_test_assert(status == 0);
puts("\n\nAttempt to open the fifo file in \
WRONLY and NONBLOCK mode\n");
puts("Should return with an error ENXIO");
fd = open("/tmp/fifo01", O_WRONLY | O_NONBLOCK);
rtems_test_assert(fd == -1);
rtems_test_assert(errno == ENXIO);
++num_opens;
// Number of attempts to open fifo till now = 3
// Number of attempts to move the static char
// from 'a' -> 'z' = 26
// => Number of opens required = 23
puts("\n\nMultiple opens\n");
for(index = 0; index < NUM_OPEN_REQ - num_opens; ++index) {
fd = open("/tmp/fifo01", O_RDONLY | O_NONBLOCK);
rtems_test_assert(fd > 0);
status = close(fd);
rtems_test_assert(status == 0);
printf("%d... ", index+1);
}
puts("\n\nRemove the entry /tmp/fifo01");
status = unlink("/tmp/fifo01");
rtems_test_assert(status == 0);
puts("\n\nRemove directory /tmp");
status = rmdir("/tmp");
rtems_test_assert(status == 0);
puts("\n\n*** END OF FIFO / PIPE OPEN TEST - 4 ***");
}