diff options
Diffstat (limited to 'testsuites/libtests')
24 files changed, 209 insertions, 173 deletions
diff --git a/testsuites/libtests/block02/init.c b/testsuites/libtests/block02/init.c index 00c83a162f..58b78d3e47 100644 --- a/testsuites/libtests/block02/init.c +++ b/testsuites/libtests/block02/init.c @@ -7,12 +7,13 @@ */ /* - * Copyright (c) 2009 - * embedded brains GmbH - * Obere Lagerstr. 30 - * D-82178 Puchheim - * Germany - * <rtems@embedded-brains.de> + * Copyright (c) 2009-2012 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 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 @@ -48,9 +49,9 @@ #define BLOCK_COUNT_B 1 -static dev_t dev_a; +static const rtems_disk_device *dd_a; -static dev_t dev_b; +static const rtems_disk_device *dd_b; static volatile bool sync_done = false; @@ -67,14 +68,14 @@ static void task_low(rtems_task_argument arg) printk("L: try access: A0\n"); - sc = rtems_bdbuf_get(dev_a, 0, &bd); + sc = rtems_bdbuf_get(dd_a, 0, &bd); ASSERT_SC(sc); rtems_test_assert(sync_done); printk("L: access: A0\n"); - rtems_test_assert(bd->dev == dev_a); + rtems_test_assert(bd->dd == dd_a); printk("*** END OF TEST BLOCK 2 ***\n"); @@ -90,7 +91,7 @@ static void task_high(rtems_task_argument arg) printk("H: try access: A0\n"); - sc = rtems_bdbuf_get(dev_a, 0, &bd); + sc = rtems_bdbuf_get(dd_a, 0, &bd); ASSERT_SC(sc); rtems_test_assert(sync_done); @@ -106,7 +107,7 @@ static void task_high(rtems_task_argument arg) printk("H: try access: B0\n"); - sc = rtems_bdbuf_get(dev_b, 0, &bd); + sc = rtems_bdbuf_get(dd_b, 0, &bd); ASSERT_SC(sc); printk("H: access: B0\n"); @@ -127,6 +128,8 @@ static rtems_task Init(rtems_task_argument argument) { rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_bdbuf_buffer *bd = NULL; + dev_t dev_a = 0; + dev_t dev_b = 0; printk("\n\n*** TEST BLOCK 2 ***\n"); @@ -139,6 +142,12 @@ static rtems_task Init(rtems_task_argument argument) sc = ramdisk_register(BLOCK_SIZE_B, BLOCK_COUNT_B, false, "/dev/rdb", &dev_b); ASSERT_SC(sc); + dd_a = rtems_disk_obtain(dev_a); + rtems_test_assert(dd_a != NULL); + + dd_b = rtems_disk_obtain(dev_b); + rtems_test_assert(dd_b != NULL); + sc = rtems_task_create( rtems_build_name(' ', 'L', 'O', 'W'), PRIORITY_LOW, @@ -165,7 +174,7 @@ static rtems_task Init(rtems_task_argument argument) sc = rtems_task_start(task_id_high, task_high, 0); ASSERT_SC(sc); - sc = rtems_bdbuf_get(dev_a, 0, &bd); + sc = rtems_bdbuf_get(dd_a, 0, &bd); ASSERT_SC(sc); sc = rtems_bdbuf_sync(bd); diff --git a/testsuites/libtests/block03/init.c b/testsuites/libtests/block03/init.c index f101eb78cd..2cfb8060a8 100644 --- a/testsuites/libtests/block03/init.c +++ b/testsuites/libtests/block03/init.c @@ -7,12 +7,13 @@ */ /* - * Copyright (c) 2009 - * embedded brains GmbH - * Obere Lagerstr. 30 - * D-82178 Puchheim - * Germany - * <rtems@embedded-brains.de> + * Copyright (c) 2009-2012 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 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 @@ -44,7 +45,7 @@ #define BLOCK_COUNT 2 -static dev_t dev; +static const rtems_disk_device *dd; static volatile bool sync_done = false; @@ -61,7 +62,7 @@ static void task_low(rtems_task_argument arg) printk("L: try access: 0\n"); - sc = rtems_bdbuf_get(dev, 0, &bd); + sc = rtems_bdbuf_get(dd, 0, &bd); ASSERT_SC(sc); rtems_test_assert(sync_done); @@ -84,7 +85,7 @@ static void task_high(rtems_task_argument arg) printk("H: try access: 0\n"); - sc = rtems_bdbuf_get(dev, 0, &bd); + sc = rtems_bdbuf_get(dd, 0, &bd); ASSERT_SC(sc); rtems_test_assert(sync_done); @@ -100,7 +101,7 @@ static void task_high(rtems_task_argument arg) printk("H: try access: 1\n"); - sc = rtems_bdbuf_get(dev, 1, &bd); + sc = rtems_bdbuf_get(dd, 1, &bd); ASSERT_SC(sc); printk("H: access: 1\n"); @@ -121,6 +122,7 @@ static rtems_task Init(rtems_task_argument argument) { rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_bdbuf_buffer *bd = NULL; + dev_t dev = 0; printk("\n\n*** TEST BLOCK 3 ***\n"); @@ -130,6 +132,9 @@ static rtems_task Init(rtems_task_argument argument) sc = ramdisk_register(BLOCK_SIZE, BLOCK_COUNT, false, "/dev/rda", &dev); ASSERT_SC(sc); + dd = rtems_disk_obtain(dev); + rtems_test_assert(dd != NULL); + sc = rtems_task_create( rtems_build_name(' ', 'L', 'O', 'W'), PRIORITY_LOW, @@ -156,7 +161,7 @@ static rtems_task Init(rtems_task_argument argument) sc = rtems_task_start(task_id_high, task_high, 0); ASSERT_SC(sc); - sc = rtems_bdbuf_get(dev, 0, &bd); + sc = rtems_bdbuf_get(dd, 0, &bd); ASSERT_SC(sc); sc = rtems_bdbuf_sync(bd); diff --git a/testsuites/libtests/block04/init.c b/testsuites/libtests/block04/init.c index 27b932a63c..ff7b204d2b 100644 --- a/testsuites/libtests/block04/init.c +++ b/testsuites/libtests/block04/init.c @@ -7,12 +7,13 @@ */ /* - * Copyright (c) 2009 - * embedded brains GmbH - * Obere Lagerstr. 30 - * D-82178 Puchheim - * Germany - * <rtems@embedded-brains.de> + * Copyright (c) 2009-2012 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 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 @@ -44,7 +45,7 @@ #define BLOCK_COUNT 1 -static dev_t dev; +static const rtems_disk_device *dd; static rtems_id task_id_low; @@ -57,7 +58,7 @@ static void task_low(rtems_task_argument arg) printk("L: try access: 0\n"); - sc = rtems_bdbuf_get(dev, 0, &bd); + sc = rtems_bdbuf_get(dd, 0, &bd); ASSERT_SC(sc); printk("L: access: 0\n"); @@ -83,7 +84,7 @@ static void task_high(rtems_task_argument arg) printk("H: try access: 0\n"); - sc = rtems_bdbuf_get(dev, 0, &bd); + sc = rtems_bdbuf_get(dd, 0, &bd); ASSERT_SC(sc); printk("H: access: 0\n"); @@ -103,6 +104,7 @@ static void task_high(rtems_task_argument arg) static rtems_task Init(rtems_task_argument argument) { rtems_status_code sc = RTEMS_SUCCESSFUL; + dev_t dev = 0; printk("\n\n*** TEST BLOCK 4 ***\n"); @@ -112,6 +114,9 @@ static rtems_task Init(rtems_task_argument argument) sc = ramdisk_register(BLOCK_SIZE, BLOCK_COUNT, false, "/dev/rda", &dev); ASSERT_SC(sc); + dd = rtems_disk_obtain(dev); + rtems_test_assert(dd != NULL); + sc = rtems_task_create( rtems_build_name(' ', 'L', 'O', 'W'), PRIORITY_LOW, diff --git a/testsuites/libtests/block05/init.c b/testsuites/libtests/block05/init.c index e795f7effe..8af26fe937 100644 --- a/testsuites/libtests/block05/init.c +++ b/testsuites/libtests/block05/init.c @@ -7,12 +7,13 @@ */ /* - * Copyright (c) 2009 - * embedded brains GmbH - * Obere Lagerstr. 30 - * D-82178 Puchheim - * Germany - * <rtems@embedded-brains.de> + * Copyright (c) 2009-2012 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 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 @@ -56,9 +57,9 @@ /* In case of trouble change this to 1 or 2 for more output */ static unsigned output_level = 0; -static dev_t dev_a; +static const rtems_disk_device *dd_a; -static dev_t dev_b; +static const rtems_disk_device *dd_b; static rtems_id task_id_init; @@ -146,24 +147,27 @@ static rtems_bdbuf_buffer *get(enum get_type type, enum blk_kind kind) rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_bdbuf_buffer *bd = NULL; rtems_blkdev_bnum blk_index = 0; - rtems_status_code (*get_bd)(dev_t, rtems_blkdev_bnum, rtems_bdbuf_buffer **) - = NULL; - dev_t dev = 0; + rtems_status_code (*get_bd)( + const rtems_disk_device *, + rtems_blkdev_bnum, + rtems_bdbuf_buffer ** + ) = NULL; + const rtems_disk_device *dd = NULL; size_t bds_per_group = 0; switch (kind) { case BLK_A0: - dev = dev_a; + dd = dd_a; blk_index = 0; bds_per_group = 2; break; case BLK_A1: - dev = dev_a; + dd = dd_a; blk_index = 1; bds_per_group = 2; break; case BLK_B0: - dev = dev_b; + dd = dd_b; blk_index = 0; bds_per_group = 1; break; @@ -184,10 +188,10 @@ static rtems_bdbuf_buffer *get(enum get_type type, enum blk_kind kind) break; } - sc = (*get_bd)(dev, blk_index, &bd); + sc = (*get_bd)(dd, blk_index, &bd); rtems_test_assert( sc == RTEMS_SUCCESSFUL - && bd->dev == dev + && bd->dd == dd && bd->block == blk_index && bd->group->bds_per_group == bds_per_group ); @@ -313,8 +317,8 @@ static void execute_test(unsigned i) sc = rtems_task_resume(task_id_high); ASSERT_SC(sc); - sc = rtems_bdbuf_get(dev_b, 0, &bd); - rtems_test_assert(sc == RTEMS_SUCCESSFUL && bd->dev == dev_b && bd->block == 0); + sc = rtems_bdbuf_get(dd_b, 0, &bd); + rtems_test_assert(sc == RTEMS_SUCCESSFUL && bd->dd == dd_b && bd->block == 0); sc = rtems_bdbuf_release(bd); ASSERT_SC(sc); @@ -350,10 +354,10 @@ static void execute_test(unsigned i) print(2, "F\n"); - sc = rtems_bdbuf_syncdev(dev_a); + sc = rtems_bdbuf_syncdev(dd_a); ASSERT_SC(sc); - sc = rtems_bdbuf_syncdev(dev_b); + sc = rtems_bdbuf_syncdev(dd_b); ASSERT_SC(sc); } @@ -383,10 +387,10 @@ static int disk_ioctl(rtems_disk_device *dd, uint32_t req, void *argp) } } -rtems_status_code disk_register( +static void disk_register( uint32_t block_size, rtems_blkdev_bnum block_count, - dev_t *dev_ptr + const rtems_disk_device **dd_ptr ) { rtems_status_code sc = RTEMS_SUCCESSFUL; @@ -408,9 +412,8 @@ rtems_status_code disk_register( ); ASSERT_SC(sc); - *dev_ptr = dev; - - return RTEMS_SUCCESSFUL; + *dd_ptr = rtems_disk_obtain(dev); + rtems_test_assert(*dd_ptr!= NULL); } static rtems_task Init(rtems_task_argument argument) @@ -425,11 +428,9 @@ static rtems_task Init(rtems_task_argument argument) sc = rtems_disk_io_initialize(); ASSERT_SC(sc); - sc = disk_register(BLOCK_SIZE_A, BLOCK_COUNT_A, &dev_a); - ASSERT_SC(sc); + disk_register(BLOCK_SIZE_A, BLOCK_COUNT_A, &dd_a); - sc = disk_register(BLOCK_SIZE_B, BLOCK_COUNT_B, &dev_b); - ASSERT_SC(sc); + disk_register(BLOCK_SIZE_B, BLOCK_COUNT_B, &dd_b); sc = rtems_task_create( rtems_build_name(' ', 'L', 'O', 'W'), diff --git a/testsuites/libtests/block06/init.c b/testsuites/libtests/block06/init.c index fd84049bd4..11e26e2d1f 100644 --- a/testsuites/libtests/block06/init.c +++ b/testsuites/libtests/block06/init.c @@ -107,6 +107,7 @@ typedef struct bdbuf_task_control rtems_device_major_number major; rtems_device_minor_number minor; bool passed; + const rtems_disk_device *dd; } bdbuf_task_control; #define BDBUF_TEST_TASKS (3) @@ -188,7 +189,7 @@ bdbuf_disk_unlock (bdbuf_disk* bdd) /** * BDBUf wait for the wait event. */ -rtems_status_code +static rtems_status_code bdbuf_wait (const char* who, unsigned long timeout) { rtems_status_code sc; @@ -340,7 +341,8 @@ static void bdbuf_task_control_init (int task, bdbuf_task_control* tc, rtems_id master, - rtems_device_major_number major) + rtems_device_major_number major, + const rtems_disk_device *dd) { char name[6]; sprintf (name, "bdt%d", task); @@ -353,6 +355,7 @@ bdbuf_task_control_init (int task, tc->major = major; tc->minor = 0; tc->passed = false; + tc->dd = dd; } static bool @@ -608,9 +611,11 @@ static rtems_driver_address_table bdbuf_disk_io_ops = { */ static bool -bdbuf_tests_setup_disk (rtems_device_major_number* major) +bdbuf_tests_setup_disk (rtems_device_major_number* major, + const rtems_disk_device **dd_ptr) { rtems_status_code sc; + bool ok; /* * Register the disk driver. @@ -620,8 +625,14 @@ bdbuf_tests_setup_disk (rtems_device_major_number* major) sc = rtems_io_register_driver (RTEMS_DRIVER_AUTO_MAJOR, &bdbuf_disk_io_ops, major); + ok = sc == RTEMS_SUCCESSFUL; - return sc == RTEMS_SUCCESSFUL; + if (ok) { + *dd_ptr = rtems_disk_obtain (rtems_filesystem_make_dev_t (*major, 0)); + ok = *dd_ptr != NULL; + } + + return ok; } static bool @@ -672,10 +683,8 @@ bdbuf_tests_task_0_test_1 (bdbuf_task_control* tc) for (i = 0; (i < 2) && passed; i++) { - dev_t device = rtems_filesystem_make_dev_t (tc->major, tc->minor); - bdbuf_test_printf ("%s: rtems_bdbuf_get[0]: ", tc->name); - sc = rtems_bdbuf_get (device, 0, &bd); + sc = rtems_bdbuf_get (tc->dd, 0, &bd); if (!bdbuf_test_print_sc (sc, true)) { passed = false; @@ -722,10 +731,8 @@ bdbuf_tests_task_0_test_2 (bdbuf_task_control* tc) for (i = 0; (i < 5) && passed; i++) { - dev_t device = rtems_filesystem_make_dev_t (tc->major, tc->minor); - bdbuf_test_printf ("%s: rtems_bdbuf_get[%d]: ", tc->name, i); - sc = rtems_bdbuf_get (device, i, &bd); + sc = rtems_bdbuf_get (tc->dd, i, &bd); if (!bdbuf_test_print_sc (sc, true)) passed = false; @@ -783,7 +790,6 @@ bdbuf_tests_task_0_test_3 (bdbuf_task_control* tc) rtems_status_code sc; bool passed; rtems_bdbuf_buffer* bd; - dev_t device; /* * Set task control's passed to false to handle a timeout. @@ -791,8 +797,6 @@ bdbuf_tests_task_0_test_3 (bdbuf_task_control* tc) tc->passed = false; passed = true; - device = rtems_filesystem_make_dev_t (tc->major, tc->minor); - bdbuf_disk_lock (&bdbuf_disks[tc->minor]); bdbuf_disks[tc->minor].driver_action = BDBUF_DISK_NOOP; bdbuf_disk_unlock (&bdbuf_disks[tc->minor]); @@ -801,7 +805,7 @@ bdbuf_tests_task_0_test_3 (bdbuf_task_control* tc) * Read the buffer and then release it. */ bdbuf_test_printf ("%s: rtems_bdbuf_read[5]: ", tc->name); - sc = rtems_bdbuf_read (device, 5, &bd); + sc = rtems_bdbuf_read (tc->dd, 5, &bd); if ((passed = bdbuf_test_print_sc (sc, true))) { bdbuf_test_printf ("%s: rtems_bdbuf_release_modified[5]: ", tc->name); @@ -814,7 +818,7 @@ bdbuf_tests_task_0_test_3 (bdbuf_task_control* tc) * be maintained as modified. */ bdbuf_test_printf ("%s: rtems_bdbuf_read[5]: ", tc->name); - sc = rtems_bdbuf_read (device, 5, &bd); + sc = rtems_bdbuf_read (tc->dd, 5, &bd); if ((passed = bdbuf_test_print_sc (sc, true))) { bdbuf_test_printf ("%s: rtems_bdbuf_release[5]: ", tc->name); @@ -871,10 +875,8 @@ bdbuf_tests_task_0_test_4 (bdbuf_task_control* tc) for (i = 0; (i < num) && passed; i++) { - dev_t device = rtems_filesystem_make_dev_t (tc->major, tc->minor); - bdbuf_test_printf ("%s: rtems_bdbuf_read[%d]: ", tc->name, i); - sc = rtems_bdbuf_read (device, i, &bd); + sc = rtems_bdbuf_read (tc->dd, i, &bd); if (!bdbuf_test_print_sc (sc, true)) passed = false; @@ -991,10 +993,8 @@ bdbuf_tests_task_0_test_6 (bdbuf_task_control* tc) for (i = 0; (i < 5) && passed; i++) { - dev_t device = rtems_filesystem_make_dev_t (tc->major, tc->minor); - bdbuf_test_printf ("%s: rtems_bdbuf_read[%d]: ", tc->name, i); - sc = rtems_bdbuf_get (device, i, &bd); + sc = rtems_bdbuf_get (tc->dd, i, &bd); if (!bdbuf_test_print_sc (sc, true)) passed = false; @@ -1030,7 +1030,6 @@ bdbuf_tests_task_0_test_7 (bdbuf_task_control* tc) int i; rtems_bdbuf_buffer* bd; rtems_chain_control buffers; - dev_t device; /* * Set task control's passed to false to handle a timeout. @@ -1044,8 +1043,6 @@ bdbuf_tests_task_0_test_7 (bdbuf_task_control* tc) bdbuf_clear_disk_driver_watch (tc); bdbuf_set_disk_driver_action (tc, BDBUF_DISK_NOOP); - device = rtems_filesystem_make_dev_t (tc->major, tc->minor); - /* * Get the blocks 0 -> 4 and hold them. */ @@ -1054,7 +1051,7 @@ bdbuf_tests_task_0_test_7 (bdbuf_task_control* tc) for (i = 0; (i < 5) && passed; i++) { bdbuf_test_printf ("%s: rtems_bdbuf_read[%d]: ", tc->name, i); - sc = rtems_bdbuf_get (device, i, &bd); + sc = rtems_bdbuf_get (tc->dd, i, &bd); if (!bdbuf_test_print_sc (sc, true)) passed = false; @@ -1074,9 +1071,9 @@ bdbuf_tests_task_0_test_7 (bdbuf_task_control* tc) { bdbuf_test_printf ("%s: rtems_bdbuf_syncdev[%d:%d]: ", tc->name, i, - rtems_filesystem_dev_major_t (device), - rtems_filesystem_dev_minor_t (device)); - passed = bdbuf_test_print_sc (rtems_bdbuf_syncdev (device), true); + tc->major, + tc->minor); + passed = bdbuf_test_print_sc (rtems_bdbuf_syncdev (tc->dd), true); } tc->passed = passed; @@ -1093,7 +1090,6 @@ bdbuf_tests_task_0_test_8 (bdbuf_task_control* tc) rtems_chain_control buffers; rtems_chain_node* node; rtems_chain_node* pnode; - dev_t device; /* * Set task control's passed to false to handle a timeout. @@ -1107,8 +1103,6 @@ bdbuf_tests_task_0_test_8 (bdbuf_task_control* tc) bdbuf_clear_disk_driver_watch (tc); bdbuf_set_disk_driver_action (tc, BDBUF_DISK_NOOP); - device = rtems_filesystem_make_dev_t (tc->major, tc->minor); - /* * Get the blocks 0 -> 4 and hold them. */ @@ -1117,7 +1111,7 @@ bdbuf_tests_task_0_test_8 (bdbuf_task_control* tc) for (i = 0; (i < 5) && passed; i++) { bdbuf_test_printf ("%s: rtems_bdbuf_read[%d]: ", tc->name, i); - sc = rtems_bdbuf_get (device, i, &bd); + sc = rtems_bdbuf_get (tc->dd, i, &bd); if (!bdbuf_test_print_sc (sc, true)) passed = false; @@ -1159,13 +1153,13 @@ bdbuf_tests_task_0_test_8 (bdbuf_task_control* tc) bdbuf_test_printf ("%s: rtems_bdbuf_syncdev[%d:%d]: checking order\n", tc->name, i, - rtems_filesystem_dev_major_t (device), - rtems_filesystem_dev_minor_t (device)); - sc = rtems_bdbuf_syncdev (device); + tc->major, + tc->minor); + sc = rtems_bdbuf_syncdev (tc->dd); bdbuf_test_printf ("%s: rtems_bdbuf_syncdev[%d:%d]: ", tc->name, i, - rtems_filesystem_dev_major_t (device), - rtems_filesystem_dev_minor_t (device)); + tc->major, + tc->minor); passed = bdbuf_test_print_sc (sc, true); } @@ -1259,10 +1253,8 @@ bdbuf_tests_ranged_get_release (bdbuf_task_control* tc, for (i = lower; (i < upper) && passed; i++) { - dev_t device = rtems_filesystem_make_dev_t (tc->major, tc->minor); - bdbuf_test_printf ("%s: rtems_bdbuf_get[%d]: blocking ...\n", tc->name, i); - sc = rtems_bdbuf_get (device, i, &bd); + sc = rtems_bdbuf_get (tc->dd, i, &bd); bdbuf_test_printf ("%s: rtems_bdbuf_get[%d]: ", tc->name, i); if (!bdbuf_test_print_sc (sc, true)) { @@ -1770,6 +1762,7 @@ bdbuf_tester (void) rtems_task_priority old_priority; int t; bool passed = true; + const rtems_disk_device *dd; /* * Change priority to a lower one. @@ -1783,7 +1776,7 @@ bdbuf_tester (void) /* * This sets up the buffer pools. */ - if (!bdbuf_tests_setup_disk (&major)) + if (!bdbuf_tests_setup_disk (&major, &dd)) { bdbuf_test_printf ("disk set up failed\n"); return; @@ -1804,7 +1797,8 @@ bdbuf_tester (void) { bdbuf_task_control_init (t, &tasks[t], rtems_task_self (), - major); + major, + dd); if (!bdbuf_tests_create_task (&tasks[t], BDBUF_TESTS_PRI_HIGH - t, diff --git a/testsuites/libtests/block07/init.c b/testsuites/libtests/block07/init.c index ea60a1f092..969fd36207 100644 --- a/testsuites/libtests/block07/init.c +++ b/testsuites/libtests/block07/init.c @@ -54,7 +54,7 @@ #define BLOCK_COUNT 2 -static dev_t dev; +static rtems_disk_device *dd; static rtems_id task_id_low; @@ -65,12 +65,11 @@ static rtems_id task_id_high; static void change_block_size(void) { int rv = 0; - uint32_t new_block_size = BLOCK_SIZE_B; int fd = open("/dev/rda", O_RDWR); rtems_test_assert(fd >= 0); - rv = ioctl(fd, RTEMS_BLKIO_SETBLKSIZE, &new_block_size); + rv = rtems_disk_fd_set_block_size(fd, BLOCK_SIZE_B); rtems_test_assert(rv == 0); rv = close(fd); @@ -84,7 +83,7 @@ static void task_low(rtems_task_argument arg) printk("L: try access: 0\n"); - sc = rtems_bdbuf_get(dev, 0, &bd); + sc = rtems_bdbuf_get(dd, 0, &bd); ASSERT_SC(sc); printk("L: access: 0\n"); @@ -110,7 +109,7 @@ static void task_mid(rtems_task_argument arg) printk("M: try access: 0\n"); - sc = rtems_bdbuf_get(dev, 0, &bd); + sc = rtems_bdbuf_get(dd, 0, &bd); ASSERT_SC(sc); printk("M: access: 0\n"); @@ -136,7 +135,7 @@ static void task_high(rtems_task_argument arg) printk("H: try access: 0\n"); - sc = rtems_bdbuf_get(dev, 0, &bd); + sc = rtems_bdbuf_get(dd, 0, &bd); ASSERT_SC(sc); printk("H: access: 0\n"); @@ -158,6 +157,7 @@ static rtems_task Init(rtems_task_argument argument) rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_task_priority cur_prio = 0; rtems_bdbuf_buffer *bd = NULL; + dev_t dev = 0; printk("\n\n*** TEST BLOCK 7 ***\n"); @@ -167,6 +167,9 @@ static rtems_task Init(rtems_task_argument argument) sc = ramdisk_register(BLOCK_SIZE_A, BLOCK_COUNT, false, "/dev/rda", &dev); ASSERT_SC(sc); + dd = rtems_disk_obtain(dev); + rtems_test_assert(dd != NULL); + sc = rtems_task_create( rtems_build_name(' ', 'L', 'O', 'W'), PRIORITY_LOW, @@ -212,7 +215,7 @@ static rtems_task Init(rtems_task_argument argument) sc = rtems_task_suspend(task_id_high); ASSERT_SC(sc); - sc = rtems_bdbuf_get(dev, 1, &bd); + sc = rtems_bdbuf_get(dd, 1, &bd); ASSERT_SC(sc); sc = rtems_bdbuf_release(bd); @@ -220,7 +223,7 @@ static rtems_task Init(rtems_task_argument argument) printk("I: try access: 0\n"); - sc = rtems_bdbuf_get(dev, 0, &bd); + sc = rtems_bdbuf_get(dd, 0, &bd); ASSERT_SC(sc); printk("I: access: 0\n"); diff --git a/testsuites/libtests/block08/bdbuf_test1_1.c b/testsuites/libtests/block08/bdbuf_test1_1.c index 9f3ee06b93..2958f27167 100644 --- a/testsuites/libtests/block08/bdbuf_test1_1.c +++ b/testsuites/libtests/block08/bdbuf_test1_1.c @@ -106,7 +106,7 @@ bdbuf_test1_1_thread1(rtems_task_argument arg) * Step 1-2: * Successful read operation. */ - rc = rtems_bdbuf_read(test_dev, 0, &bd1); + rc = rtems_bdbuf_read(test_dd, 0, &bd1); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -124,7 +124,7 @@ bdbuf_test1_1_thread1(rtems_task_argument arg) * Read operation fails with RTEMS_IO_ERROR code. * The function shall not update user pointer. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd2); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd2); if (rc != RTEMS_IO_ERROR || bd2 != NULL) { TEST_FAILED(); @@ -137,7 +137,7 @@ bdbuf_test1_1_thread1(rtems_task_argument arg) * Read operation fails with RTEMS_IO_ERROR code. * The function shall not update user pointer. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd2); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd2); if (rc != RTEMS_IO_ERROR || bd2 != NULL) { TEST_FAILED(); diff --git a/testsuites/libtests/block08/bdbuf_test1_2.c b/testsuites/libtests/block08/bdbuf_test1_2.c index 61b978ce49..1d5e44b1e3 100644 --- a/testsuites/libtests/block08/bdbuf_test1_2.c +++ b/testsuites/libtests/block08/bdbuf_test1_2.c @@ -122,7 +122,7 @@ bdbuf_test1_2_thread1(rtems_task_argument arg) * driver will notify about an error, and as the * result this call will return an error. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd); if (rc != RTEMS_IO_ERROR || bd != NULL) { TEST_FAILED(); @@ -152,7 +152,7 @@ bdbuf_test1_2_thread2(rtems_task_argument arg) * But main test task will agin tell device driver to return * RTEMS_IO_ERROR data transfer result. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd); if (rc != RTEMS_IO_ERROR || bd != NULL) { TEST_FAILED(); diff --git a/testsuites/libtests/block08/bdbuf_test1_3.c b/testsuites/libtests/block08/bdbuf_test1_3.c index 9ea5b653ab..ab5d1dcbc6 100644 --- a/testsuites/libtests/block08/bdbuf_test1_3.c +++ b/testsuites/libtests/block08/bdbuf_test1_3.c @@ -131,7 +131,7 @@ bdbuf_test1_3_thread1(rtems_task_argument arg) * driver will notify about an error, and as the * result this call will return an error. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd); if (rc != RTEMS_IO_ERROR || bd != NULL) { TEST_FAILED(); @@ -160,7 +160,7 @@ bdbuf_test1_3_thread2(rtems_task_argument arg) * number, bdbuf library should ask for re-read data again. * Time time main task will tell driver to report success. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd); if (rc != RTEMS_SUCCESSFUL || bd == NULL) { TEST_FAILED(); diff --git a/testsuites/libtests/block08/bdbuf_test1_4.c b/testsuites/libtests/block08/bdbuf_test1_4.c index b7a4b0c399..4d6e02835d 100644 --- a/testsuites/libtests/block08/bdbuf_test1_4.c +++ b/testsuites/libtests/block08/bdbuf_test1_4.c @@ -125,7 +125,7 @@ bdbuf_test1_4_thread1(rtems_task_argument arg) * date transfer, and as the result this call * will return valid buffer. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -161,7 +161,7 @@ bdbuf_test1_4_thread2(rtems_task_argument arg) * On step 4 thread #1 releases buffer and as the result * our read operation should finish with success. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); diff --git a/testsuites/libtests/block08/bdbuf_test1_5.c b/testsuites/libtests/block08/bdbuf_test1_5.c index 4e09359652..c054db320f 100644 --- a/testsuites/libtests/block08/bdbuf_test1_5.c +++ b/testsuites/libtests/block08/bdbuf_test1_5.c @@ -101,7 +101,7 @@ bdbuf_test1_5_thread1(rtems_task_argument arg) * Step 1: * read blk #N on thread #1 */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -133,7 +133,7 @@ bdbuf_test1_5_thread2(rtems_task_argument arg) * Try to read block #N. Right now thread #1 owns * this buffer, so we will block waiting for buffer. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); diff --git a/testsuites/libtests/block08/bdbuf_test2_1.c b/testsuites/libtests/block08/bdbuf_test2_1.c index 6005657024..435d7184a0 100644 --- a/testsuites/libtests/block08/bdbuf_test2_1.c +++ b/testsuites/libtests/block08/bdbuf_test2_1.c @@ -142,7 +142,7 @@ bdbuf_test2_1_thread1(rtems_task_argument arg) * date transfer, and as the result this call * will return valid buffer. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -178,7 +178,7 @@ bdbuf_test2_1_thread2(rtems_task_argument arg) * On step 4 thread #1 releases buffer and as the result * our read operation should finish with success. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); diff --git a/testsuites/libtests/block08/bdbuf_test2_2.c b/testsuites/libtests/block08/bdbuf_test2_2.c index 394a158426..5ee614c44c 100644 --- a/testsuites/libtests/block08/bdbuf_test2_2.c +++ b/testsuites/libtests/block08/bdbuf_test2_2.c @@ -142,7 +142,7 @@ bdbuf_test2_2_thread1(rtems_task_argument arg) * date transfer, and as the result this call * will return valid buffer. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -178,7 +178,7 @@ bdbuf_test2_2_thread2(rtems_task_argument arg) * On step 4 thread #1 releases buffer and as the result * our read operation should finish with success. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); diff --git a/testsuites/libtests/block08/bdbuf_test3_1.c b/testsuites/libtests/block08/bdbuf_test3_1.c index cdee6eb4be..592fa019c3 100644 --- a/testsuites/libtests/block08/bdbuf_test3_1.c +++ b/testsuites/libtests/block08/bdbuf_test3_1.c @@ -116,7 +116,7 @@ bdbuf_test3_1_thread1(rtems_task_argument arg) * [An entry is found in AVL tree, removed from modified list and * returned with state ACCESS_MODIFIED] */ - rc = rtems_bdbuf_get(test_dev, TEST_BLK_NUM_N, &bd); + rc = rtems_bdbuf_get(test_dd, TEST_BLK_NUM_N, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -128,7 +128,7 @@ bdbuf_test3_1_thread1(rtems_task_argument arg) TEST_FAILED(); } - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM_N, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM_N, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -166,7 +166,7 @@ bdbuf_test3_1_thread2(rtems_task_argument arg) * this thread blocks on * rtems_bdbuf_wait(pool, &pool->waiting, &pool->wait_waiters)] */ - rc = rtems_bdbuf_get(test_dev, TEST_BLK_NUM_M, &bd); + rc = rtems_bdbuf_get(test_dd, TEST_BLK_NUM_M, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); diff --git a/testsuites/libtests/block08/bdbuf_test3_2.c b/testsuites/libtests/block08/bdbuf_test3_2.c index b9c97754fb..111b57fdf7 100644 --- a/testsuites/libtests/block08/bdbuf_test3_2.c +++ b/testsuites/libtests/block08/bdbuf_test3_2.c @@ -117,7 +117,7 @@ bdbuf_test3_2_thread1(rtems_task_argument arg) * Step 1: * Call rtems_bdbuf_read(#N) to get a buffer; */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM_N1, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM_N1, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -150,7 +150,7 @@ bdbuf_test3_2_thread2(rtems_task_argument arg) * Step 2: * In thread #2 call get(#N2) */ - rc = rtems_bdbuf_get(test_dev, TEST_BLK_NUM_N2, &bd); + rc = rtems_bdbuf_get(test_dd, TEST_BLK_NUM_N2, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -180,7 +180,7 @@ bdbuf_test3_2_thread3(rtems_task_argument arg) * Step 3: * In thread #3 call get(#N3) */ - rc = rtems_bdbuf_get(test_dev, TEST_BLK_NUM_N3, &bd); + rc = rtems_bdbuf_get(test_dd, TEST_BLK_NUM_N3, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); diff --git a/testsuites/libtests/block08/bdbuf_test3_3.c b/testsuites/libtests/block08/bdbuf_test3_3.c index 13ac7a25fb..27dbfa2687 100644 --- a/testsuites/libtests/block08/bdbuf_test3_3.c +++ b/testsuites/libtests/block08/bdbuf_test3_3.c @@ -128,7 +128,7 @@ bdbuf_test3_3_thread1(rtems_task_argument arg) * Step 1: * Call rtems_bdbuf_read(#N) to get a buffer; */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM_N1, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM_N1, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -161,7 +161,7 @@ bdbuf_test3_3_thread2(rtems_task_argument arg) * Step 2: * In thread #2 call read(#N2) */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM_N2, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM_N2, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -191,7 +191,7 @@ bdbuf_test3_3_thread3(rtems_task_argument arg) * Step 3: * In thread #3 call read(#N3) */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM_N3, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM_N3, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); diff --git a/testsuites/libtests/block08/bdbuf_test4_1.c b/testsuites/libtests/block08/bdbuf_test4_1.c index 6961c35020..914216d0c1 100644 --- a/testsuites/libtests/block08/bdbuf_test4_1.c +++ b/testsuites/libtests/block08/bdbuf_test4_1.c @@ -122,7 +122,7 @@ bdbuf_test4_1_thread1(rtems_task_argument arg) * Step 1: * Call rtems_bdbuf_read(#N) in thread #1; */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM_N, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM_N, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -158,7 +158,7 @@ bdbuf_test4_1_thread2(rtems_task_argument arg) * In thread #2 call rtems_bdbuf_read(#N). * We will block on this call. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM_N, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM_N, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); diff --git a/testsuites/libtests/block08/bdbuf_test4_2.c b/testsuites/libtests/block08/bdbuf_test4_2.c index 628e65eaf9..c1d8890661 100644 --- a/testsuites/libtests/block08/bdbuf_test4_2.c +++ b/testsuites/libtests/block08/bdbuf_test4_2.c @@ -109,7 +109,7 @@ bdbuf_test4_2_thread1(rtems_task_argument arg) * Step 1: * Call rtems_bdbuf_read(#N) in thread #1; */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM_N, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM_N, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -143,7 +143,7 @@ bdbuf_test4_2_thread2(rtems_task_argument arg) * In thread #2 call read(#N). * We will block on this call. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM_N, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM_N, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); diff --git a/testsuites/libtests/block08/bdbuf_test4_3.c b/testsuites/libtests/block08/bdbuf_test4_3.c index 55de280f3d..ab7861ee14 100644 --- a/testsuites/libtests/block08/bdbuf_test4_3.c +++ b/testsuites/libtests/block08/bdbuf_test4_3.c @@ -103,7 +103,7 @@ bdbuf_test4_3_thread1(rtems_task_argument arg) * Step 1: * Call rtems_bdbuf_read(#N) in thread #1; */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM_N, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM_N, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); @@ -137,7 +137,7 @@ bdbuf_test4_3_thread2(rtems_task_argument arg) * In thread #2 call rtems_bdbuf_read(#N). * We will block on this call. */ - rc = rtems_bdbuf_read(test_dev, TEST_BLK_NUM_N, &bd); + rc = rtems_bdbuf_read(test_dd, TEST_BLK_NUM_N, &bd); if (rc != RTEMS_SUCCESSFUL) { TEST_FAILED(); diff --git a/testsuites/libtests/block08/bdbuf_tests.c b/testsuites/libtests/block08/bdbuf_tests.c index bc6b772fb2..f265a094c1 100644 --- a/testsuites/libtests/block08/bdbuf_tests.c +++ b/testsuites/libtests/block08/bdbuf_tests.c @@ -49,7 +49,7 @@ struct bdbuf_test_descr { #define TEST_SEM_ATTRIBS RTEMS_DEFAULT_ATTRIBUTES /** Device ID used for testing */ -dev_t test_dev = (dev_t)-1; +const rtems_disk_device *test_dd = NULL; /** Test result variable */ bool good_test_result = true; @@ -108,6 +108,7 @@ run_bdbuf_tests() rtems_disk_device *disk; rtems_status_code sc; dev_t dev = -1; + dev_t test_dev; unsigned int i; rtems_device_major_number major; @@ -153,6 +154,13 @@ run_bdbuf_tests() return; } + test_dd = rtems_disk_obtain(test_dev); + if (test_dd == NULL) + { + printf("Failed to obtain %s disk\n", TEST_DISK_NAME); + return; + } + /* * On initialization test disk device driver registers * its RX message queue, so we just need to locate it. diff --git a/testsuites/libtests/block08/bdbuf_tests.h b/testsuites/libtests/block08/bdbuf_tests.h index e8affa1cbc..ecd932fa4d 100644 --- a/testsuites/libtests/block08/bdbuf_tests.h +++ b/testsuites/libtests/block08/bdbuf_tests.h @@ -85,7 +85,7 @@ typedef struct bdbuf_test_msg { union { struct driver_req { - dev_t dev; + const rtems_disk_device *dd; uint32_t req; void *argp; } driver_req; @@ -152,7 +152,7 @@ typedef struct test_ctx { extern test_ctx g_test_ctx; /** Device ID used for testing */ -extern dev_t test_dev; +extern const rtems_disk_device *test_dd; /** * Create a message queue for test driver that is used for @@ -259,7 +259,7 @@ extern bool good_test_result; do { \ WAIT_DRV_MSG(msg_); \ if ((msg_)->val.driver_req.req != RTEMS_BLKIO_REQUEST || \ - (msg_)->val.driver_req.dev != test_dev || \ + (msg_)->val.driver_req.dd != test_dd || \ ((rtems_blkdev_request *) \ ((msg_)->val.driver_req.argp))->req != \ RTEMS_BLKDEV_REQ_WRITE) \ @@ -267,7 +267,7 @@ extern bool good_test_result; printk("Unexpected message received by disk driver: " \ "req - 0x%x (0x%x), dev - %d (%d)\n", \ (msg_)->val.driver_req.req, RTEMS_BLKIO_REQUEST, \ - (msg_)->val.driver_req.dev, test_dev); \ + (msg_)->val.driver_req.dd, test_dd); \ return; \ } \ } while (0) diff --git a/testsuites/libtests/block08/test_disk.c b/testsuites/libtests/block08/test_disk.c index 358b3614ae..461914f345 100644 --- a/testsuites/libtests/block08/test_disk.c +++ b/testsuites/libtests/block08/test_disk.c @@ -34,7 +34,6 @@ static Objects_Id testq_id = OBJECTS_ID_NONE; static int test_disk_ioctl(rtems_disk_device *dd, uint32_t req, void *argp) { - dev_t dev = rtems_disk_get_device_identifier(dd); rtems_status_code rc; bdbuf_test_msg msg; size_t msg_size; @@ -66,7 +65,7 @@ test_disk_ioctl(rtems_disk_device *dd, uint32_t req, void *argp) memset(&msg, 0, sizeof(msg)); msg.type = BDBUF_TEST_MSG_TYPE_DRIVER_REQ; - msg.val.driver_req.dev = dev; + msg.val.driver_req.dd = dd; msg.val.driver_req.req = req; msg.val.driver_req.argp = argp; diff --git a/testsuites/libtests/block09/init.c b/testsuites/libtests/block09/init.c index 5d7a8b7e69..b7426c36c2 100644 --- a/testsuites/libtests/block09/init.c +++ b/testsuites/libtests/block09/init.c @@ -7,12 +7,13 @@ */ /* - * Copyright (c) 2009 - * embedded brains GmbH - * Obere Lagerstr. 30 - * D-82178 Puchheim - * Germany - * <rtems@embedded-brains.de> + * Copyright (c) 2009-2012 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 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 @@ -108,7 +109,7 @@ static int disk_ioctl(rtems_disk_device *dd, uint32_t req, void *arg) } } -rtems_status_code disk_register( +static rtems_status_code disk_register( uint32_t block_size, rtems_blkdev_bnum block_count, dev_t *dev_ptr @@ -139,7 +140,7 @@ rtems_status_code disk_register( } static void check_read( - dev_t dev, + const rtems_disk_device *dd, rtems_blkdev_bnum block, rtems_status_code expected_sc ) @@ -147,7 +148,7 @@ static void check_read( rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_bdbuf_buffer *bd = NULL; - sc = rtems_bdbuf_read(dev, block, &bd); + sc = rtems_bdbuf_read(dd, block, &bd); assert(sc == expected_sc); if (sc == RTEMS_SUCCESSFUL) { @@ -161,6 +162,7 @@ static rtems_task Init(rtems_task_argument argument) rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_bdbuf_buffer *bd = NULL; dev_t dev = 0; + rtems_disk_device *dd = NULL; printk("\n\n*** TEST BLOCK 9 ***\n"); @@ -170,14 +172,17 @@ static rtems_task Init(rtems_task_argument argument) sc = disk_register(BLOCK_SIZE, BLOCK_COUNT, &dev); ASSERT_SC(sc); - check_read(dev, BLOCK_READ_IO_ERROR, RTEMS_IO_ERROR); - check_read(dev, BLOCK_READ_UNSATISFIED, RTEMS_UNSATISFIED); - check_read(dev, BLOCK_READ_SUCCESSFUL, RTEMS_SUCCESSFUL); - check_read(dev, BLOCK_WRITE_IO_ERROR, RTEMS_SUCCESSFUL); + dd = rtems_disk_obtain(dev); + assert(dd != NULL); + + check_read(dd, BLOCK_READ_IO_ERROR, RTEMS_IO_ERROR); + check_read(dd, BLOCK_READ_UNSATISFIED, RTEMS_UNSATISFIED); + check_read(dd, BLOCK_READ_SUCCESSFUL, RTEMS_SUCCESSFUL); + check_read(dd, BLOCK_WRITE_IO_ERROR, RTEMS_SUCCESSFUL); /* Check write IO error */ - sc = rtems_bdbuf_read(dev, BLOCK_WRITE_IO_ERROR, &bd); + sc = rtems_bdbuf_read(dd, BLOCK_WRITE_IO_ERROR, &bd); ASSERT_SC(sc); bd->buffer [0] = 1; @@ -185,7 +190,7 @@ static rtems_task Init(rtems_task_argument argument) sc = rtems_bdbuf_sync(bd); ASSERT_SC(sc); - sc = rtems_bdbuf_read(dev, BLOCK_WRITE_IO_ERROR, &bd); + sc = rtems_bdbuf_read(dd, BLOCK_WRITE_IO_ERROR, &bd); ASSERT_SC(sc); assert(bd->buffer [0] == 0); @@ -195,7 +200,7 @@ static rtems_task Init(rtems_task_argument argument) /* Check write to deleted disk */ - sc = rtems_bdbuf_read(dev, BLOCK_READ_SUCCESSFUL, &bd); + sc = rtems_bdbuf_read(dd, BLOCK_READ_SUCCESSFUL, &bd); ASSERT_SC(sc); sc = rtems_disk_delete(dev); @@ -204,6 +209,9 @@ static rtems_task Init(rtems_task_argument argument) sc = rtems_bdbuf_sync(bd); ASSERT_SC(sc); + sc = rtems_disk_release(dd); + ASSERT_SC(sc); + printk("*** END OF TEST BLOCK 9 ***\n"); exit(0); diff --git a/testsuites/libtests/block10/init.c b/testsuites/libtests/block10/init.c index 18af160be1..80ca98e5ae 100644 --- a/testsuites/libtests/block10/init.c +++ b/testsuites/libtests/block10/init.c @@ -52,7 +52,7 @@ typedef rtems_bdbuf_buffer *(*access_func)(char task); typedef void (*release_func)(char task, rtems_bdbuf_buffer *bd); -static dev_t dev; +static const rtems_disk_device *dd; static rtems_id task_id_init; @@ -110,7 +110,7 @@ static int disk_ioctl(rtems_disk_device *dd, uint32_t req, void *arg) } } -rtems_status_code disk_register( +static rtems_status_code disk_register( uint32_t block_size, rtems_blkdev_bnum block_count, dev_t *dev_ptr @@ -147,7 +147,7 @@ static rtems_bdbuf_buffer *do_get(char task) printk("%c: try get\n", task); - sc = rtems_bdbuf_get(dev, 0, &bd); + sc = rtems_bdbuf_get(dd, 0, &bd); ASSERT_SC(sc); printk("%c: get\n", task); @@ -162,13 +162,13 @@ static rtems_bdbuf_buffer *do_get_mod(char task) printk("%c: try get modified\n", task); - sc = rtems_bdbuf_get(dev, 0, &bd); + sc = rtems_bdbuf_get(dd, 0, &bd); ASSERT_SC(sc); sc = rtems_bdbuf_release_modified(bd); ASSERT_SC(sc); - sc = rtems_bdbuf_get(dev, 0, &bd); + sc = rtems_bdbuf_get(dd, 0, &bd); ASSERT_SC(sc); printk("%c: get modified\n", task); @@ -183,7 +183,7 @@ static rtems_bdbuf_buffer *do_read(char task) printk("%c: try read\n", task); - sc = rtems_bdbuf_read(dev, 0, &bd); + sc = rtems_bdbuf_read(dd, 0, &bd); ASSERT_SC(sc); printk("%c: read\n", task); @@ -203,7 +203,7 @@ static void do_rel(char task, rtems_bdbuf_buffer *bd) printk("%c: release done\n", task); } -void do_rel_mod(char task, rtems_bdbuf_buffer *bd) +static void do_rel_mod(char task, rtems_bdbuf_buffer *bd) { rtems_status_code sc = RTEMS_SUCCESSFUL; @@ -231,7 +231,7 @@ static void purge(char task) { printk("%c: purge\n", task); - rtems_bdbuf_purge_dev(dev); + rtems_bdbuf_purge_dev(dd); } static void task_purger(rtems_task_argument arg) @@ -387,6 +387,7 @@ static const char *purger_assoc_table [PURGER_COUNT] = { static rtems_task Init(rtems_task_argument argument) { rtems_status_code sc = RTEMS_SUCCESSFUL; + dev_t dev = 0; size_t i_w = 0; size_t i_ac = 0; size_t i_rel = 0; @@ -402,6 +403,9 @@ static rtems_task Init(rtems_task_argument argument) sc = disk_register(BLOCK_SIZE, BLOCK_COUNT, &dev); ASSERT_SC(sc); + dd = rtems_disk_obtain(dev); + assert(dd != NULL); + sc = rtems_task_create( rtems_build_name('P', 'U', 'R', 'G'), PRIORITY_HIGH, |