diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-10-31 11:54:39 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-11-02 09:40:58 +0100 |
commit | 9f0a68ce5afca9d21d34bab83d42fbe4bb0cf8ef (patch) | |
tree | db24c42e065ac766c55215f39eb729a337609cde /testsuites/libtests/block09 | |
parent | bsp/mpc55xx: SMSC9218i avoid mbuf migration (diff) | |
download | rtems-9f0a68ce5afca9d21d34bab83d42fbe4bb0cf8ef.tar.bz2 |
libblock: Block device transfer request API change
Add and use rtems_blkdev_request_done(). Block device transfer requests
must signal the completion status now with rtems_blkdev_request_done().
The return value of the block device IO control will be ignored for
transfer requests.
The first parameter of rtems_blkdev_request_cb is now the transfer
request structure.
Renamed rtems_blkdev_request::req_done to rtems_blkdev_request::done to
break third party drivers at compile time, otherwise this API change
would result in runtime errors.
Diffstat (limited to 'testsuites/libtests/block09')
-rw-r--r-- | testsuites/libtests/block09/init.c | 79 |
1 files changed, 41 insertions, 38 deletions
diff --git a/testsuites/libtests/block09/init.c b/testsuites/libtests/block09/init.c index d29d6ac595..e17819f8c0 100644 --- a/testsuites/libtests/block09/init.c +++ b/testsuites/libtests/block09/init.c @@ -64,47 +64,50 @@ static int disk_ioctl(rtems_disk_device *dd, uint32_t req, void *arg) rtems_blkdev_sg_buffer *sg = &r->bufs [i]; char *buf = sg->buffer; - if (sg->length != 1) { - return -1; - } - - switch (r->req) { - case RTEMS_BLKDEV_REQ_READ: - switch (sg->block) { - case BLOCK_READ_IO_ERROR: - sc = RTEMS_IO_ERROR; - break; - case BLOCK_READ_UNSATISFIED: - sc = RTEMS_UNSATISFIED; - break; - case BLOCK_READ_SUCCESSFUL: - case BLOCK_WRITE_IO_ERROR: - *buf = disk_data [sg->block]; - break; - default: - return -1; - } - break; - case RTEMS_BLKDEV_REQ_WRITE: - switch (sg->block) { - case BLOCK_READ_IO_ERROR: - case BLOCK_READ_UNSATISFIED: - case BLOCK_READ_SUCCESSFUL: - disk_data [sg->block] = *buf; - break; - case BLOCK_WRITE_IO_ERROR: - sc = RTEMS_IO_ERROR; - break; - default: - return -1; - } - break; - default: - return -1; + if (sg->length == 1) { + switch (r->req) { + case RTEMS_BLKDEV_REQ_READ: + switch (sg->block) { + case BLOCK_READ_IO_ERROR: + sc = RTEMS_IO_ERROR; + break; + case BLOCK_READ_UNSATISFIED: + sc = RTEMS_UNSATISFIED; + break; + case BLOCK_READ_SUCCESSFUL: + case BLOCK_WRITE_IO_ERROR: + *buf = disk_data [sg->block]; + break; + default: + sc = RTEMS_IO_ERROR; + break; + } + break; + case RTEMS_BLKDEV_REQ_WRITE: + switch (sg->block) { + case BLOCK_READ_IO_ERROR: + case BLOCK_READ_UNSATISFIED: + case BLOCK_READ_SUCCESSFUL: + disk_data [sg->block] = *buf; + break; + case BLOCK_WRITE_IO_ERROR: + sc = RTEMS_IO_ERROR; + break; + default: + sc = RTEMS_IO_ERROR; + break; + } + break; + default: + sc = RTEMS_IO_ERROR; + break; + } + } else { + sc = RTEMS_IO_ERROR; } } - r->req_done(r->done_arg, sc); + rtems_blkdev_request_done(r, sc); return 0; } else { |