mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-27 15:00:16 +00:00
added block01 test
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
2009-10-19 Sebastian Huber <Sebastian.Huber@embedded-brains.de>
|
||||
|
||||
* block01/init.c, block01/block01.scn, block01/Makefile.am: New files.
|
||||
* Makefile.am, configure.ac: Added block01.
|
||||
|
||||
2009-10-12 Joel Sherrill <joel.sherrill@OARcorp.com>
|
||||
|
||||
* cpuuse/init.c, cpuuse/system.h: Use minimum stack size.
|
||||
|
||||
@@ -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
|
||||
|
||||
27
testsuites/libtests/block01/Makefile.am
Normal file
27
testsuites/libtests/block01/Makefile.am
Normal file
@@ -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
|
||||
2
testsuites/libtests/block01/block01.scn
Normal file
2
testsuites/libtests/block01/block01.scn
Normal file
@@ -0,0 +1,2 @@
|
||||
*** TEST BLOCKDEVS ***
|
||||
*** END OF TEST BLOCKDEVS ***
|
||||
185
testsuites/libtests/block01/init.c
Normal file
185
testsuites/libtests/block01/init.c
Normal file
@@ -0,0 +1,185 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @ingroup tests
|
||||
*
|
||||
* @brief Block device tests.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2009
|
||||
* embedded brains GmbH
|
||||
* Obere Lagerstr. 30
|
||||
* D-82178 Puchheim
|
||||
* Germany
|
||||
* <rtems@embedded-brains.de>
|
||||
*
|
||||
* 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 <assert.h>
|
||||
|
||||
#include <rtems.h>
|
||||
#include <rtems/ramdisk.h>
|
||||
#include <rtems/diskdevs.h>
|
||||
|
||||
#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 <rtems/confdefs.h>
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user