From b344b3deac074603027c4ab1ade594f1304592d9 Mon Sep 17 00:00:00 2001 From: Thomas Doerfler Date: Mon, 19 Oct 2009 10:58:30 +0000 Subject: added block01 test --- testsuites/libtests/ChangeLog | 5 + testsuites/libtests/Makefile.am | 2 +- testsuites/libtests/block01/Makefile.am | 27 +++++ testsuites/libtests/block01/block01.scn | 2 + testsuites/libtests/block01/init.c | 185 ++++++++++++++++++++++++++++++++ testsuites/libtests/configure.ac | 1 + 6 files changed, 221 insertions(+), 1 deletion(-) create mode 100644 testsuites/libtests/block01/Makefile.am create mode 100644 testsuites/libtests/block01/block01.scn create mode 100644 testsuites/libtests/block01/init.c (limited to 'testsuites/libtests') diff --git a/testsuites/libtests/ChangeLog b/testsuites/libtests/ChangeLog index 6f63bc9779..e7575e174b 100644 --- a/testsuites/libtests/ChangeLog +++ b/testsuites/libtests/ChangeLog @@ -1,3 +1,8 @@ +2009-10-19 Sebastian Huber + + * block01/init.c, block01/block01.scn, block01/Makefile.am: New files. + * Makefile.am, configure.ac: Added block01. + 2009-10-12 Joel Sherrill * cpuuse/init.c, cpuuse/system.h: Use minimum stack size. diff --git a/testsuites/libtests/Makefile.am b/testsuites/libtests/Makefile.am index 9e93c6e174..c51b89da4f 100644 --- a/testsuites/libtests/Makefile.am +++ b/testsuites/libtests/Makefile.am @@ -6,7 +6,7 @@ ACLOCAL_AMFLAGS = -I ../aclocal SUBDIRS = bspcmdline01 cpuuse malloctest heapwalk putenvtest monitor \ monitor02 rtmonuse stackchk stackchk01 termios termios01 termios02 \ - rtems++ tztest + rtems++ tztest block01 include $(top_srcdir)/../automake/subdirs.am include $(top_srcdir)/../automake/local.am diff --git a/testsuites/libtests/block01/Makefile.am b/testsuites/libtests/block01/Makefile.am new file mode 100644 index 0000000000..b7f5565b5c --- /dev/null +++ b/testsuites/libtests/block01/Makefile.am @@ -0,0 +1,27 @@ +## +## $Id$ +## + +MANAGERS = io semaphore event + +rtems_tests_PROGRAMS = block01 +block01_SOURCES = init.c + +dist_rtems_tests_DATA = block01.scn + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +block01_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel) + +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(block01_OBJECTS) $(block01_LDADD) +LINK_LIBS = $(block01_LDLIBS) + +block01$(EXEEXT): $(block01_OBJECTS) $(block01_DEPENDENCIES) + @rm -f block01$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/libtests/block01/block01.scn b/testsuites/libtests/block01/block01.scn new file mode 100644 index 0000000000..c3e7ab955a --- /dev/null +++ b/testsuites/libtests/block01/block01.scn @@ -0,0 +1,2 @@ +*** TEST BLOCKDEVS *** +*** END OF TEST BLOCKDEVS *** diff --git a/testsuites/libtests/block01/init.c b/testsuites/libtests/block01/init.c new file mode 100644 index 0000000000..c4d196bea6 --- /dev/null +++ b/testsuites/libtests/block01/init.c @@ -0,0 +1,185 @@ +/** + * @file + * + * @ingroup tests + * + * @brief Block device tests. + */ + +/* + * Copyright (c) 2009 + * embedded brains GmbH + * Obere Lagerstr. 30 + * D-82178 Puchheim + * Germany + * + * + * 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. + */ + +#include + +#include +#include +#include + +#define ASSERT_SC(sc) assert((sc) == RTEMS_SUCCESSFUL) + +#define ASSERT_SC_EQ(sc, sc_expected) assert((sc) == (sc_expected)) + +#define BLOCK_SIZE 512U + +#define BLOCK_COUNT 16U + +static void test_diskdevs(void) +{ + rtems_status_code sc = RTEMS_SUCCESSFUL; + rtems_device_major_number major = 0; + rtems_device_minor_number minor = 0; + rtems_disk_device *physical_dd = NULL; + rtems_disk_device *logical_dd = NULL; + rtems_disk_device *dd = NULL; + dev_t physical_dev = 0; + dev_t logical_dev = 0; + dev_t logical_2_dev = 0; + dev_t const big_major_dev = rtems_filesystem_make_dev_t((rtems_device_major_number) -2, 0); + dev_t const big_minor_dev = rtems_filesystem_make_dev_t(0, (rtems_device_minor_number) -2); + ramdisk *const rd = ramdisk_allocate(NULL, BLOCK_SIZE, BLOCK_COUNT, false); + + assert(rd != NULL); + + sc = rtems_disk_io_initialize(); + ASSERT_SC(sc); + + sc = rtems_io_register_driver(0, &ramdisk_ops, &major); + ASSERT_SC(sc); + + physical_dev = rtems_filesystem_make_dev_t(major, minor); + logical_dev = rtems_filesystem_make_dev_t(major, minor + 1); + logical_2_dev = rtems_filesystem_make_dev_t(major, minor + 2); + + /* Consistency checks for physical disks creation */ + + sc = rtems_disk_create_phys(physical_dev, BLOCK_SIZE, BLOCK_COUNT, NULL, rd, "/dev/rda"); + ASSERT_SC_EQ(sc, RTEMS_INVALID_ADDRESS); + + sc = rtems_disk_create_phys(physical_dev, 0, BLOCK_COUNT, ramdisk_ioctl, rd, "/dev/rda"); + ASSERT_SC_EQ(sc, RTEMS_INVALID_NUMBER); + + sc = rtems_disk_create_phys(big_major_dev, BLOCK_SIZE, BLOCK_COUNT, ramdisk_ioctl, rd, "/dev/rda"); + ASSERT_SC_EQ(sc, RTEMS_NO_MEMORY); + + sc = rtems_disk_create_phys(big_minor_dev, BLOCK_SIZE, BLOCK_COUNT, ramdisk_ioctl, rd, "/dev/rda"); + ASSERT_SC_EQ(sc, RTEMS_NO_MEMORY); + + sc = rtems_disk_create_phys(physical_dev, BLOCK_SIZE, BLOCK_COUNT, ramdisk_ioctl, rd, NULL); + ASSERT_SC(sc); + + sc = rtems_disk_create_phys(physical_dev, BLOCK_SIZE, BLOCK_COUNT, ramdisk_ioctl, rd, NULL); + ASSERT_SC_EQ(sc, RTEMS_RESOURCE_IN_USE); + + sc = rtems_disk_delete(physical_dev); + ASSERT_SC(sc); + + /* Consistency checks for logical disks creation */ + + sc = rtems_disk_create_log(logical_dev, physical_dev, 0, 1, "/dev/rda1"); + ASSERT_SC_EQ(sc, RTEMS_INVALID_ID); + + sc = rtems_disk_create_phys(physical_dev, BLOCK_SIZE, BLOCK_COUNT, ramdisk_ioctl, rd, "/dev/rda"); + ASSERT_SC(sc); + + sc = rtems_disk_create_log(big_major_dev, physical_dev, 0, 1, "/dev/rda1"); + ASSERT_SC_EQ(sc, RTEMS_NO_MEMORY); + + sc = rtems_disk_create_log(big_minor_dev, physical_dev, 0, 1, "/dev/rda1"); + ASSERT_SC_EQ(sc, RTEMS_NO_MEMORY); + + sc = rtems_disk_create_log(logical_dev, physical_dev, BLOCK_COUNT, 0, "/dev/rda1"); + ASSERT_SC_EQ(sc, RTEMS_INVALID_NUMBER); + + sc = rtems_disk_create_log(logical_dev, physical_dev, 0, BLOCK_COUNT + 1, "/dev/rda1"); + ASSERT_SC_EQ(sc, RTEMS_INVALID_NUMBER); + + sc = rtems_disk_create_log(logical_dev, physical_dev, 1, BLOCK_COUNT, "/dev/rda1"); + ASSERT_SC_EQ(sc, RTEMS_INVALID_NUMBER); + + sc = rtems_disk_create_log(logical_dev, physical_dev, 0, 1, "/dev/rda1"); + ASSERT_SC(sc); + + sc = rtems_disk_create_log(logical_dev, physical_dev, 0, 1, "/dev/rda1"); + ASSERT_SC_EQ(sc, RTEMS_RESOURCE_IN_USE); + + sc = rtems_disk_create_log(logical_2_dev, logical_dev, 0, 1, "/dev/rda1"); + ASSERT_SC_EQ(sc, RTEMS_INVALID_ID); + + sc = rtems_disk_delete(logical_dev); + ASSERT_SC(sc); + + /* Consistency checks delete */ + + sc = rtems_disk_create_log(logical_dev, physical_dev, 0, 1, "/dev/rda1"); + ASSERT_SC(sc); + + physical_dd = rtems_disk_obtain(physical_dev); + assert(physical_dd != NULL && physical_dd->uses == 2); + + sc = rtems_disk_release(physical_dd); + ASSERT_SC(sc); + + logical_dd = rtems_disk_obtain(logical_dev); + assert(logical_dd != NULL && logical_dd->uses == 1); + + sc = rtems_disk_delete(physical_dev); + ASSERT_SC(sc); + + sc = rtems_disk_create_phys(physical_dev, BLOCK_SIZE, BLOCK_COUNT, ramdisk_ioctl, rd, "/dev/rda"); + ASSERT_SC_EQ(sc, RTEMS_RESOURCE_IN_USE); + + dd = rtems_disk_obtain(physical_dev); + assert(dd == NULL); + + dd = rtems_disk_obtain(logical_dev); + assert(dd == NULL); + + sc = rtems_disk_release(logical_dd); + ASSERT_SC(sc); + + /* Cleanup */ + + sc = rtems_io_unregister_driver(major); + ASSERT_SC(sc); + + sc = rtems_disk_io_done(); + ASSERT_SC(sc); +} + +static rtems_task Init(rtems_task_argument argument) +{ + puts("\n\n*** TEST BLOCK 1 ***"); + + test_diskdevs(); + + puts("*** END OF TEST BLOCK 1 ***"); + + exit(0); +} + +#define CONFIGURE_INIT + +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_LIBBLOCK + +#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM + +#define CONFIGURE_MAXIMUM_TASKS 2 +#define CONFIGURE_MAXIMUM_DRIVERS 2 +#define CONFIGURE_MAXIMUM_SEMAPHORES 5 +#define CONFIGURE_EXTRA_TASK_STACKS (8 * 1024) + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE + +#include diff --git a/testsuites/libtests/configure.ac b/testsuites/libtests/configure.ac index 71c9e53e6d..29cecdfcd2 100644 --- a/testsuites/libtests/configure.ac +++ b/testsuites/libtests/configure.ac @@ -33,6 +33,7 @@ AM_CONDITIONAL(HAS_CXX,test "$rtems_cv_HAS_CPLUSPLUS" = "yes") # Explicitly list all Makefiles here AC_CONFIG_FILES([Makefile +block01/Makefile bspcmdline01/Makefile cpuuse/Makefile heapwalk/Makefile -- cgit v1.2.3