From e1b96b83e515df2dd7634e1097a4650b2e372a47 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 3 Feb 2014 13:43:21 +0100 Subject: libtests/block11: Use custom device driver --- testsuites/libtests/block11/init.c | 39 +++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/testsuites/libtests/block11/init.c b/testsuites/libtests/block11/init.c index b850aba950..23813be955 100644 --- a/testsuites/libtests/block11/init.c +++ b/testsuites/libtests/block11/init.c @@ -54,6 +54,8 @@ static const char rda [] = "/dev/rda"; static const char rda1 [] = "/dev/rda1"; +static const char dev_invalid [] = "/dev/invalid"; + static const char not_exist [] = "not_exist"; static const char not_blkdev [] = "not_blkdev"; @@ -64,6 +66,29 @@ static long area_a [AREA_SIZE / sizeof(long)]; static long area_b [AREA_SIZE / sizeof(long)]; +static rtems_status_code invalid_initialize( + rtems_device_major_number major, + rtems_device_minor_number minor, + void *arg +) +{ + rtems_status_code sc; + + sc = rtems_io_register_name(&dev_invalid[0], major, 0); + ASSERT_SC(sc); + + return sc; +} + +static rtems_status_code invalid_control( + rtems_device_major_number major, + rtems_device_minor_number minor, + void *arg +) +{ + return RTEMS_INVALID_NUMBER; +} + static void area_init(long *area) { size_t i; @@ -235,6 +260,7 @@ static void test_blkdev_imfs_errors(void) int rv; ramdisk *rd; void *opaque; + struct stat st; rd = ramdisk_allocate(NULL, BLOCK_SIZE, BLOCK_COUNT, false); rtems_test_assert(rd != NULL); @@ -298,7 +324,10 @@ static void test_blkdev_imfs_errors(void) ); rtems_test_assert(sc == RTEMS_INVALID_ID); - rv = mknod(not_blkdev, S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO, 0); + rv = lstat(&dev_invalid[0], &st); + rtems_test_assert(rv == 0); + + rv = mknod(not_blkdev, S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO, st.st_rdev); rtems_test_assert(rv == 0); sc = rtems_blkdev_create_partition( @@ -309,7 +338,7 @@ static void test_blkdev_imfs_errors(void) ); rtems_test_assert(sc == RTEMS_INVALID_NODE); - rv = mknod(invalid_blkdev, S_IFBLK | S_IRWXU | S_IRWXG | S_IRWXO, 0); + rv = mknod(invalid_blkdev, S_IFBLK | S_IRWXU | S_IRWXG | S_IRWXO, st.st_rdev); rtems_test_assert(rv == 0); sc = rtems_blkdev_create_partition( @@ -391,10 +420,14 @@ static rtems_task Init(rtems_task_argument argument) #define CONFIGURE_INIT -#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER #define CONFIGURE_APPLICATION_NEEDS_LIBBLOCK +#define CONFIGURE_APPLICATION_EXTRA_DRIVERS \ + { .initialization_entry = invalid_initialize, \ + .control_entry = invalid_control } + #define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 5 -- cgit v1.2.3