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 /c | |
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 'c')
-rw-r--r-- | c/src/lib/libbsp/arm/gp32/smc/smc.c | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/lm32/shared/milkymist_memcard/memcard.c | 6 | ||||
-rw-r--r-- | c/src/libchip/i2c/spi-sd-card.c | 12 | ||||
-rw-r--r-- | c/src/libchip/ide/ata.c | 3 | ||||
-rw-r--r-- | c/src/libchip/ide/ata_internal.h | 4 |
5 files changed, 16 insertions, 13 deletions
diff --git a/c/src/lib/libbsp/arm/gp32/smc/smc.c b/c/src/lib/libbsp/arm/gp32/smc/smc.c index b9419de6d0..9cf460b7a5 100644 --- a/c/src/lib/libbsp/arm/gp32/smc/smc.c +++ b/c/src/lib/libbsp/arm/gp32/smc/smc.c @@ -544,7 +544,7 @@ int sm_ECCEncode(const uint8_t * p_buf, uint8_t * p_ecc) */ static int smc_write(rtems_blkdev_request *req) { - req->req_done(req->done_arg, RTEMS_SUCCESSFUL); + rtems_blkdev_request_done(req, RTEMS_SUCCESSFUL); return 0; } @@ -573,7 +573,7 @@ smc_read(rtems_blkdev_request *req) smc_read_page(sg->block,sg->buffer); remains -= count; } - req->req_done(req->done_arg, RTEMS_SUCCESSFUL); + rtems_blkdev_request_done(req, RTEMS_SUCCESSFUL); return 0; } diff --git a/c/src/lib/libbsp/lm32/shared/milkymist_memcard/memcard.c b/c/src/lib/libbsp/lm32/shared/milkymist_memcard/memcard.c index 747903db8e..93c7a1df2c 100644 --- a/c/src/lib/libbsp/lm32/shared/milkymist_memcard/memcard.c +++ b/c/src/lib/libbsp/lm32/shared/milkymist_memcard/memcard.c @@ -197,14 +197,16 @@ static int memcard_disk_block_read(rtems_blkdev_request *r) return -RTEMS_IO_ERROR; } - r->req_done(r->done_arg, RTEMS_SUCCESSFUL); + rtems_blkdev_request_done(r, RTEMS_SUCCESSFUL); return 0; } static int memcard_disk_block_write(rtems_blkdev_request *r) { - return -RTEMS_IO_ERROR; + rtems_blkdev_request_done(r, RTEMS_IO_ERROR); + + return 0; } static rtems_status_code memcard_init(void) diff --git a/c/src/libchip/i2c/spi-sd-card.c b/c/src/libchip/i2c/spi-sd-card.c index bdd6fe0ade..d85c1774d6 100644 --- a/c/src/libchip/i2c/spi-sd-card.c +++ b/c/src/libchip/i2c/spi-sd-card.c @@ -1117,7 +1117,7 @@ static int sd_card_disk_block_read( sd_card_driver_entry *e, rtems_blkdev_reques RTEMS_CHECK_SC_RV( sc, "Stop"); /* Done */ - r->req_done( r->done_arg, RTEMS_SUCCESSFUL); + rtems_blkdev_request_done( r, RTEMS_SUCCESSFUL); return 0; @@ -1132,9 +1132,9 @@ sd_card_disk_block_read_cleanup: sd_card_stop( e); /* Done */ - r->req_done( r->done_arg, RTEMS_IO_ERROR); + rtems_blkdev_request_done( r, RTEMS_IO_ERROR); - return rv; + return 0; } static int sd_card_disk_block_write( sd_card_driver_entry *e, rtems_blkdev_request *r) @@ -1206,7 +1206,7 @@ static int sd_card_disk_block_write( sd_card_driver_entry *e, rtems_blkdev_reque RTEMS_CHECK_SC_RV( sc, "Stop"); /* Done */ - r->req_done( r->done_arg, RTEMS_SUCCESSFUL); + rtems_blkdev_request_done( r, RTEMS_SUCCESSFUL); return 0; @@ -1225,9 +1225,9 @@ sd_card_disk_block_write_cleanup: sd_card_stop( e); /* Done */ - r->req_done( r->done_arg, RTEMS_IO_ERROR); + rtems_blkdev_request_done( r, RTEMS_IO_ERROR); - return rv; + return 0; } static int sd_card_disk_ioctl( rtems_disk_device *dd, uint32_t req, void *arg) diff --git a/c/src/libchip/ide/ata.c b/c/src/libchip/ide/ata.c index 18d8d14386..1e25003698 100644 --- a/c/src/libchip/ide/ata.c +++ b/c/src/libchip/ide/ata.c @@ -185,7 +185,8 @@ ata_io_data_request(dev_t device, rtems_blkdev_request *req) areq = malloc(sizeof(ata_req_t)); if (areq == NULL) { - return RTEMS_NO_MEMORY; + rtems_blkdev_request_done(req, RTEMS_NO_MEMORY); + return RTEMS_SUCCESSFUL; } areq->breq = req; diff --git a/c/src/libchip/ide/ata_internal.h b/c/src/libchip/ide/ata_internal.h index 3eea2d1dd4..32c9422563 100644 --- a/c/src/libchip/ide/ata_internal.h +++ b/c/src/libchip/ide/ata_internal.h @@ -218,8 +218,8 @@ typedef struct ata_req_s { /* call callback provided by block device request if it is defined */ #define ATA_EXEC_CALLBACK(areq, status) \ do {\ - if (((areq)->breq != NULL) && ((areq)->breq->req_done != NULL)) \ - (areq)->breq->req_done((areq)->breq->done_arg, status); \ + if ((areq)->breq != NULL) \ + rtems_blkdev_request_done((areq)->breq, status); \ } while (0) /* ATA RTEMS driver events types */ |