summaryrefslogtreecommitdiffstats
path: root/testsuites/libtests/block05
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-02-28 17:19:49 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-03-13 12:24:18 +0100
commit796967c3df40a51a9028bc83d1a4b6dbeae07c3f (patch)
treeedd7251883f74506a69f76e6e9fbf173de195f50 /testsuites/libtests/block05
parentlibblock: Documentation (diff)
downloadrtems-796967c3df40a51a9028bc83d1a4b6dbeae07c3f.tar.bz2
libblock: Change bdbuf API
The functions o rtems_bdbuf_get(), o rtems_bdbuf_read(), o rtems_bdbuf_syncdev(), and o rtems_bdbuf_purge_dev(), use now the disk device instead of the device identifier. This makes bdbuf independent of rtems_disk_obtain() and rtems_disk_release(). It is the responsiblity of the file system to obtain the disk device. This also reduces the overhead to get a buffer. The key for the AVL tree uses now the disk device instead of the device identifier. The pointer is interpreted as an unsigned integer. This reduces the memory overhead and makes the comparison operation a bit faster. Removed function rtems_bdbuf_purge_major(). This function was too destructive and could have unpredictable side effects.
Diffstat (limited to 'testsuites/libtests/block05')
-rw-r--r--testsuites/libtests/block05/init.c59
1 files changed, 30 insertions, 29 deletions
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'),