summaryrefslogtreecommitdiffstats
path: root/testsuites/libtests/block08
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/block08
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/block08')
-rw-r--r--testsuites/libtests/block08/bdbuf_test1_1.c6
-rw-r--r--testsuites/libtests/block08/bdbuf_test1_2.c4
-rw-r--r--testsuites/libtests/block08/bdbuf_test1_3.c4
-rw-r--r--testsuites/libtests/block08/bdbuf_test1_4.c4
-rw-r--r--testsuites/libtests/block08/bdbuf_test1_5.c4
-rw-r--r--testsuites/libtests/block08/bdbuf_test2_1.c4
-rw-r--r--testsuites/libtests/block08/bdbuf_test2_2.c4
-rw-r--r--testsuites/libtests/block08/bdbuf_test3_1.c6
-rw-r--r--testsuites/libtests/block08/bdbuf_test3_2.c6
-rw-r--r--testsuites/libtests/block08/bdbuf_test3_3.c6
-rw-r--r--testsuites/libtests/block08/bdbuf_test4_1.c4
-rw-r--r--testsuites/libtests/block08/bdbuf_test4_2.c4
-rw-r--r--testsuites/libtests/block08/bdbuf_test4_3.c4
-rw-r--r--testsuites/libtests/block08/bdbuf_tests.c10
-rw-r--r--testsuites/libtests/block08/bdbuf_tests.h8
-rw-r--r--testsuites/libtests/block08/test_disk.c3
16 files changed, 44 insertions, 37 deletions
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;