summaryrefslogtreecommitdiffstats
path: root/testsuites/libtests/block10
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/block10
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/block10')
-rw-r--r--testsuites/libtests/block10/init.c20
1 files changed, 12 insertions, 8 deletions
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,