From 6287b5773f610368df70df3127586b9440e7b802 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 25 May 2001 13:29:38 +0000 Subject: 2001-05-25 Joel Sherrill * Added once version of psxchroot01 test for user review. * psxchroot01: New directory. * psxchroot01/Makefile.am, psxchroot01/main.c, psxchroot01/test.c, psxchroot01/psxchroot01.scn, psxchroot01/.cvsignore: New files. * configure.in, Makefile.am: Modified to reflect above. --- testsuites/psxtests/ChangeLog | 8 ++ testsuites/psxtests/Makefile.am | 2 +- testsuites/psxtests/psxchroot01/.cvsignore | 2 + testsuites/psxtests/psxchroot01/Makefile.am | 40 ++++++++ testsuites/psxtests/psxchroot01/main.c | 34 +++++++ testsuites/psxtests/psxchroot01/psxchroot01.scn | 3 + testsuites/psxtests/psxchroot01/test.c | 122 ++++++++++++++++++++++++ 7 files changed, 210 insertions(+), 1 deletion(-) create mode 100644 testsuites/psxtests/psxchroot01/.cvsignore create mode 100644 testsuites/psxtests/psxchroot01/Makefile.am create mode 100644 testsuites/psxtests/psxchroot01/main.c create mode 100644 testsuites/psxtests/psxchroot01/psxchroot01.scn create mode 100644 testsuites/psxtests/psxchroot01/test.c (limited to 'testsuites') diff --git a/testsuites/psxtests/ChangeLog b/testsuites/psxtests/ChangeLog index 13845d5e70..ecbd4d3fcd 100644 --- a/testsuites/psxtests/ChangeLog +++ b/testsuites/psxtests/ChangeLog @@ -1,3 +1,11 @@ +2001-05-25 Joel Sherrill + + * Added once version of psxchroot01 test for user review. + * psxchroot01: New directory. + * psxchroot01/Makefile.am, psxchroot01/main.c, psxchroot01/test.c, + psxchroot01/psxchroot01.scn, psxchroot01/.cvsignore: New files. + * configure.in, Makefile.am: Modified to reflect above. + 2001-05-10 Ralf Corsepius * configure.in: Use RTEMS_PROG_CC_FOR_TARGET([-ansi -fasm]). diff --git a/testsuites/psxtests/Makefile.am b/testsuites/psxtests/Makefile.am index d596631da0..59706d48b5 100644 --- a/testsuites/psxtests/Makefile.am +++ b/testsuites/psxtests/Makefile.am @@ -10,7 +10,7 @@ SHARED_DIRS = POSIX_DIRS = include psxhdrs psx01 psx02 psx03 psx04 psx05 psx06 psx07 psx08 \ psx09 psx10 psx11 psx12 psxtime psxtimer psxcancel psxmsgq01 psxsem01 -POSIX_FILES_DIRS = psxfile01 psxreaddir psxstat psxmount psx13 +POSIX_FILES_DIRS = psxfile01 psxreaddir psxstat psxmount psx13 psxchroot01 UNUSED_DIRS = diff --git a/testsuites/psxtests/psxchroot01/.cvsignore b/testsuites/psxtests/psxchroot01/.cvsignore new file mode 100644 index 0000000000..282522db03 --- /dev/null +++ b/testsuites/psxtests/psxchroot01/.cvsignore @@ -0,0 +1,2 @@ +Makefile +Makefile.in diff --git a/testsuites/psxtests/psxchroot01/Makefile.am b/testsuites/psxtests/psxchroot01/Makefile.am new file mode 100644 index 0000000000..5fea4186b9 --- /dev/null +++ b/testsuites/psxtests/psxchroot01/Makefile.am @@ -0,0 +1,40 @@ +## +## $Id$ +## + +AUTOMAKE_OPTIONS = foreign 1.4 + +TEST = psxchroot01 + +MANAGERS = all + +C_FILES = main.c test.c +C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o) + +DOCTYPES = scn +DOCS = $(DOCTYPES:%=$(TEST).%) + +SRCS = $(DOCS) $(C_FILES) $(H_FILES) +OBJS = $(C_O_FILES) + +PRINT_SRCS = $(DOCS) + +PGM = ${ARCH}/$(TEST).exe + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../../../../automake/compile.am +include $(RTEMS_ROOT)/make/leaf.cfg +include $(top_srcdir)/psxtests.am + +# +# (OPTIONAL) Add local stuff here using += +# + +${PGM}: $(OBJS) $(LINK_FILES) + $(make-exe) + +all-local: $(ARCH) $(TMPINSTALL_FILES) + +EXTRA_DIST = $(C_FILES) $(DOCS) + +include $(top_srcdir)/../../../../automake/local.am diff --git a/testsuites/psxtests/psxchroot01/main.c b/testsuites/psxtests/psxchroot01/main.c new file mode 100644 index 0000000000..c19138573a --- /dev/null +++ b/testsuites/psxtests/psxchroot01/main.c @@ -0,0 +1,34 @@ +/* + * Simple test program -- simplified version of sample test hello. + */ + +#define TEST_INIT + +#include + +void test_main( void ); + +rtems_task Init( + rtems_task_argument ignored +) +{ + test_main(); + exit( 0 ); +} + +/* configuration information */ + +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER + +#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM +#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 10 + +#define CONFIGURE_MAXIMUM_TASKS 1 + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE + +#define CONFIGURE_INIT + +#include + +/* end of file */ diff --git a/testsuites/psxtests/psxchroot01/psxchroot01.scn b/testsuites/psxtests/psxchroot01/psxchroot01.scn new file mode 100644 index 0000000000..38539d062b --- /dev/null +++ b/testsuites/psxtests/psxchroot01/psxchroot01.scn @@ -0,0 +1,3 @@ +*** CHROOT TEST *** +FILL ME IN ONCE TEST IS SATISFACTORY +*** END OF CHROOT TEST *** diff --git a/testsuites/psxtests/psxchroot01/test.c b/testsuites/psxtests/psxchroot01/test.c new file mode 100644 index 0000000000..cc759a2dc2 --- /dev/null +++ b/testsuites/psxtests/psxchroot01/test.c @@ -0,0 +1,122 @@ +/* + * This is a native test to explore how the readdir() family works. + * Newlib supports the following readdir() family members: + * + * closedir() - + * readdir() - + * scandir() - + * opendir() - + * rewinddir() - + * telldir() - BSD not in POSIX + * seekdir() - BSD not in POSIX + * + * + * seekdir() takes an offset which is a byte offset. The Linux + * implementation of this appears to seek to the ((off/DIRENT_SIZE) + 1) + * record where DIRENT_SIZE seems to be 12 bytes. + * + * + * + * $Id$ + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +void touch( char *file ) +{ + int fd; + + assert( file ); + + fd = open( file, O_RDWR|O_CREAT, 0777 ); + assert( fd != -1 ); + close( fd ); +} + +int fileexists( char *file ) +{ + int status; + struct stat statbuf; + + assert( file ); + + status = stat( file, &statbuf ); + + if ( status == -1 ) { + /* printf( ": %s\n", strerror( errno ) ); */ + return 0; + } + return 1; +} + +#if defined(__rtems__) +int test_main(void) +#else +int main( + int argc, + char **argv +) +#endif +{ + int fd; + int i; + int status; + struct stat s; + +/* + * This test is the C equivalent of this sequence. +#mkdir /one +#mkdir /one/one +#touch /one/one.test +#touch /one/two/two.test +#chroot /one +#if !fileexits(/one/one.test) echo "FAIL" +#if fileexits(/two/two.test) echo "SUCCESSFUL" +#rtems_set_private_env() ! reset at the global environment +#if !fileexits(/one/one.test) echo "SUCESSFUL" +#if fileexits(/two/two.test) echo "FAIL" +*/ + + printf( "\n\n*** CHROOT01 TEST ***\n" ); + + status = mkdir( "/one", 0777); + assert( status == 0 ); + + status = mkdir( "/one/one", 0777); + assert( status == 0 ); + + status = mkdir( "/one/two", 0777); + assert( status == 0 ); + + touch( "/one/one.test" ); + touch( "/one/two/two.test" ); + + status = chroot( "/one" ); + assert( status == 0 ); + + status = fileexists( "/one/one.test" ); + printf( "%s on /one/one.test\n", (!status) ? "SUCCESS" : "FAILURE" ); + + status = fileexists( "/two/two.test" ); + printf( "%s on /two/two.test\n", (status) ? "SUCCESS" : "FAILURE" ); + + puts( "Reset the private environment" ); + rtems_libio_set_private_env(); + + status = fileexists( "/one/one.test" ); + printf( "%s on /one/one.test\n", (!status) ? "SUCCESS" : "FAILURE" ); + + status = fileexists( "/two/two.test" ); + printf( "%s on /two/two.test\n", (status) ? "SUCCESS" : "FAILURE" ); + + printf( "*** END OF CHROOT01 TEST ***\n" ); + exit(0); +} + -- cgit v1.2.3