[rtems commit] libtests/block11: Use custom device driver

Sebastian Huber sebh at rtems.org
Mon Feb 3 12:37:23 UTC 2014


Module:    rtems
Branch:    master
Commit:    e1b96b83e515df2dd7634e1097a4650b2e372a47
Changeset: http://git.rtems.org/rtems/commit/?id=e1b96b83e515df2dd7634e1097a4650b2e372a47

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Mon Feb  3 13:43:21 2014 +0100

libtests/block11: Use custom device driver

---

 testsuites/libtests/block11/init.c |   39 +++++++++++++++++++++++++++++++++--
 1 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/testsuites/libtests/block11/init.c b/testsuites/libtests/block11/init.c
index b850aba..23813be 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
 




More information about the vc mailing list