diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2010-06-23 22:48:44 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2010-06-23 22:48:44 +0000 |
commit | e6e4eecec570f3c58fa8c2c450115a197240b454 (patch) | |
tree | c7d2d1f7f10e42e9796645fbf62dc9d76d432ef7 /testsuites/psxtests/psxfile02 | |
parent | 2010-06-23 Jennifer Averett <Jennifer.Averett@OARcorp.com> (diff) | |
download | rtems-e6e4eecec570f3c58fa8c2c450115a197240b454.tar.bz2 |
2010-06-23 Joel Sherrill <joel.sherrilL@OARcorp.com>
* Makefile.am, configure.ac, psx01/Makefile.am, psx02/Makefile.am,
psx03/Makefile.am, psx04/Makefile.am, psx05/Makefile.am,
psx06/Makefile.am, psx07/Makefile.am, psx08/Makefile.am,
psx09/Makefile.am, psx10/Makefile.am, psx11/Makefile.am,
psx12/Makefile.am, psx13/Makefile.am, psx14/Makefile.am,
psxalarm01/Makefile.am, psxautoinit01/Makefile.am,
psxautoinit02/Makefile.am, psxbarrier01/Makefile.am,
psxcancel/Makefile.am, psxcancel01/Makefile.am,
psxchroot01/Makefile.am, psxcleanup/Makefile.am,
psxcleanup01/Makefile.am, psxclock/Makefile.am,
psxcond01/Makefile.am, psxenosys/Makefile.am, psxfatal01/Makefile.am,
psxfatal02/Makefile.am, psxfile01/Makefile.am, psxfile02/init.c,
psxfile02/psxfile02.doc, psxfile02/psxfile02.scn,
psxintrcritical01/Makefile.am, psxitimer/Makefile.am,
psxkey01/Makefile.am, psxkey02/Makefile.am, psxkey03/Makefile.am,
psxmount/Makefile.am, psxmsgq01/Makefile.am, psxmsgq02/Makefile.am,
psxmsgq03/Makefile.am, psxmsgq04/Makefile.am,
psxmutexattr01/Makefile.am, psxobj01/Makefile.am,
psxpasswd01/Makefile.am, psxrdwrv/Makefile.am,
psxreaddir/Makefile.am, psxrwlock01/Makefile.am,
psxsem01/Makefile.am, psxsignal01/Makefile.am,
psxsignal02/Makefile.am, psxsignal03/Makefile.am,
psxsignal04/Makefile.am, psxsignal05/Makefile.am,
psxspin01/Makefile.am, psxspin02/Makefile.am, psxstack01/Makefile.am,
psxstat/Makefile.am, psxsysconf/Makefile.am, psxtime/Makefile.am,
psxtimer01/Makefile.am, psxtimer02/Makefile.am,
psxualarm/Makefile.am, psxusleep/Makefile.am: Add test for fd greater
than number of file descriptors configured.
Diffstat (limited to 'testsuites/psxtests/psxfile02')
-rw-r--r-- | testsuites/psxtests/psxfile02/init.c | 90 | ||||
-rw-r--r-- | testsuites/psxtests/psxfile02/psxfile02.doc | 5 | ||||
-rw-r--r-- | testsuites/psxtests/psxfile02/psxfile02.scn | 21 |
3 files changed, 67 insertions, 49 deletions
diff --git a/testsuites/psxtests/psxfile02/init.c b/testsuites/psxtests/psxfile02/init.c index 778e033b04..6aa8a5ce35 100644 --- a/testsuites/psxtests/psxfile02/init.c +++ b/testsuites/psxtests/psxfile02/init.c @@ -18,6 +18,7 @@ #include <string.h> #include <ctype.h> #include <rtems/imfs.h> +#include <reent.h> #include <rtems.h> #include <rtems/libio.h> @@ -25,112 +26,105 @@ #include <tmacros.h> #include "test_support.h" -int _fcntl_r( - struct _reent *ptr __attribute__((unused)), - int fd, - int cmd, - int arg -); - -off_t _lseek_r( - struct _reent *ptr __attribute__((unused)), - int fd, - off_t offset, - int whence -); - - - -rtems_task Init( - rtems_task_argument argument +void do_with_fd( + int fd, + const char *description ) { - int fd; struct stat stat_buff; struct iovec vec[4]; off_t res; int status; - puts( "\n\n*** PSXFILE02 TEST ***" ); - - /* - * Simple open case where the file is created. - */ - puts( "mkdir /tmp" ); - status = mkdir( "/tmp", S_IRWXU ); - rtems_test_assert( !status ); - - puts( "open /tmp/j" ); - fd = open( "/tmp/j", O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO ); - rtems_test_assert( fd != -1 ); - printf( "open returned file descriptor %d\n", fd ); - - puts( "close /tmp/j" ); - status = close( fd ); - rtems_test_assert( !status ); - - puts("ftruncate an unopened file"); + printf("ftruncate %s\n", description); status = ftruncate(fd, 40); rtems_test_assert( status == -1 ); printf( "%d: %s\n", errno, strerror( errno ) ); rtems_test_assert( errno == EBADF ); - puts("_fcntl_r unopened file"); + printf("_fcntl_r %s\n", description); status = _fcntl_r( NULL, fd, F_SETFD, 1 ); rtems_test_assert( status == -1 ); printf( "%d: %s\n", errno, strerror( errno ) ); rtems_test_assert( errno == EBADF ); - puts("fdatasync unopened file"); + printf("fdatasync %s\n", description); status = fdatasync( fd ); rtems_test_assert( status == -1 ); printf( "%d: %s\n", errno, strerror( errno ) ); rtems_test_assert( errno == EBADF ); - puts("fstat unopened file"); + printf("fstat %s\n", description); status = fstat( fd, &stat_buff ); rtems_test_assert( status == -1 ); printf( "%d: %s\n", errno, strerror( errno ) ); rtems_test_assert( errno == EBADF ); - puts("fsync unopened file"); + printf("fsync %s\n", description); status = fsync( fd ); rtems_test_assert( status == -1 ); printf( "%d: %s\n", errno, strerror( errno ) ); rtems_test_assert( errno == EBADF ); - puts("ioctl unopened file"); + printf("ioctl %s\n", description); status = ioctl( fd, 0 ); rtems_test_assert( status == -1 ); printf( "%d: %s\n", errno, strerror( errno ) ); rtems_test_assert( errno == EBADF ); - puts("_lseek_r unopened file"); + printf("_lseek_r %s\n", description); res = _lseek_r (NULL, fd, 0, SEEK_SET); rtems_test_assert( res == -1 ); printf( "%d: %s\n", errno, strerror( errno ) ); rtems_test_assert( errno == EBADF ); - puts("readv unopened file"); + printf("readv %s\n", description); status = readv(fd, vec, 4); rtems_test_assert( status == -1 ); printf( "%d: %s\n", errno, strerror( errno ) ); rtems_test_assert( errno == EBADF ); - puts("writev unopened file"); + printf("writev %s\n", description); status = writev(fd, vec, 4); rtems_test_assert( status == -1 ); printf( "%d: %s\n", errno, strerror( errno ) ); rtems_test_assert( errno == EBADF ); - puts("write unopened file"); + printf("write %s\n", description); status = write(fd, "1234", 4); rtems_test_assert( status == -1 ); printf( "%d: %s\n", errno, strerror( errno ) ); rtems_test_assert( errno == EBADF ); +} + +rtems_task Init( + rtems_task_argument argument +) +{ + int status; + int fd; + puts( "\n\n*** PSXFILE02 TEST ***" ); + /* + * Simple open case where the file is created. + */ + puts( "mkdir /tmp" ); + status = mkdir( "/tmp", S_IRWXU ); + rtems_test_assert( !status ); + + puts( "open /tmp/j" ); + fd = open( "/tmp/j", O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO ); + rtems_test_assert( fd != -1 ); + printf( "open returned file descriptor %d\n", fd ); + + puts( "close /tmp/j" ); + status = close( fd ); + rtems_test_assert( !status ); + do_with_fd( fd, "an unopened file" ); + puts(""); + do_with_fd( 1000, "a too large file descriptor" ); puts( "*** END OF PSXFILE02 TEST ***" ); @@ -142,7 +136,7 @@ rtems_task Init( #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_LIBIO_MAXIMUM_FILE_DESCRIPTORS 4 #define CONFIGURE_MAXIMUM_TASKS 1 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE diff --git a/testsuites/psxtests/psxfile02/psxfile02.doc b/testsuites/psxtests/psxfile02/psxfile02.doc index 02c45f1512..2f46886f94 100644 --- a/testsuites/psxtests/psxfile02/psxfile02.doc +++ b/testsuites/psxtests/psxfile02/psxfile02.doc @@ -31,5 +31,8 @@ directives: concepts: -+ Verify failure when a previously opened, but now closed file descriptor is passed in. ++ Verify failure when a previously opened, but now closed file +descriptor is used. ++ Verify failure when an out of range file descriptor (above the +number configured) is used. diff --git a/testsuites/psxtests/psxfile02/psxfile02.scn b/testsuites/psxtests/psxfile02/psxfile02.scn index b581c52b52..da6b4952ed 100644 --- a/testsuites/psxtests/psxfile02/psxfile02.scn +++ b/testsuites/psxtests/psxfile02/psxfile02.scn @@ -23,4 +23,25 @@ writev unopened file 9: Bad file number write unopened file 9: Bad file number + +ftruncate a too large file descriptor +9: Bad file number +_fcntl_r a too large file descriptor +9: Bad file number +fdatasync a too large file descriptor +9: Bad file number +fstat a too large file descriptor +9: Bad file number +fsync a too large file descriptor +9: Bad file number +ioctl a too large file descriptor +9: Bad file number +_lseek_r a too large file descriptor +9: Bad file number +readv a too large file descriptor +9: Bad file number +writev a too large file descriptor +9: Bad file number +write a too large file descriptor +9: Bad file number *** END OF PSXFILE02 TEST *** |