diff options
author | Thomas Doerfler <Thomas.Doerfler@embedded-brains.de> | 2009-12-18 15:59:30 +0000 |
---|---|---|
committer | Thomas Doerfler <Thomas.Doerfler@embedded-brains.de> | 2009-12-18 15:59:30 +0000 |
commit | 1e0a5512fc9b610655d49b696912a031ad6101e9 (patch) | |
tree | a33f21d484034a9793b6bfe0c6b17c9358ab7c47 /cpukit | |
parent | 2009-12-17 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-1e0a5512fc9b610655d49b696912a031ad6101e9.tar.bz2 |
Update for block device API change
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/ChangeLog | 10 | ||||
-rw-r--r-- | cpukit/libblock/include/rtems/diskdevs.h | 38 | ||||
-rw-r--r-- | cpukit/libblock/src/bdbuf.c | 5 | ||||
-rw-r--r-- | cpukit/libblock/src/blkdev.c | 15 | ||||
-rw-r--r-- | cpukit/libblock/src/flashdisk.c | 2 | ||||
-rw-r--r-- | cpukit/libblock/src/nvdisk.c | 2 | ||||
-rw-r--r-- | cpukit/libblock/src/ramdisk-driver.c | 2 |
7 files changed, 34 insertions, 40 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index fcbb4c6084..32120f3502 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,13 @@ +2009-12-01 Sebastian Huber <sebastian.huber@embedded-brains.de> + + PR 1474 + * libblock/include/rtems/diskdevs.h, libblock/src/bdbuf.c, + libblock/src/blkdev.c: Pass only physical disc devices to the block + device driver. Reject direct usage of RTEMS_BLKIO_REQUEST though an + IO control. Renamed and removed disk device structure access methods. + * libblock/src/flashdisk.c, libblock/src/nvdisk.c, + libblock/src/ramdisk-driver.c: Update for block device API change. + 2009-12-17 Joel Sherrill <joel.sherrill@oarcorp.com> * rtems/include/rtems/rtems/clock.h: Eliminate unused type diff --git a/cpukit/libblock/include/rtems/diskdevs.h b/cpukit/libblock/include/rtems/diskdevs.h index 971551a0aa..a8b7dce93e 100644 --- a/cpukit/libblock/include/rtems/diskdevs.h +++ b/cpukit/libblock/include/rtems/diskdevs.h @@ -143,57 +143,37 @@ struct rtems_disk_device { * @{ */ -static inline dev_t rtems_disk_physical_device_number( +static inline dev_t rtems_disk_get_device_identifier( const rtems_disk_device *dd ) { - return dd->phys_dev->dev; -} - -static inline rtems_device_major_number rtems_disk_physical_major_number( - const rtems_disk_device *dd -) -{ - return rtems_filesystem_dev_major_t(dd->phys_dev->dev); -} - -static inline rtems_device_minor_number rtems_disk_physical_minor_number( - const rtems_disk_device *dd -) -{ - return rtems_filesystem_dev_minor_t(dd->phys_dev->dev); -} - -static inline dev_t rtems_disk_device_number(const rtems_disk_device *dd) -{ return dd->dev; } -static inline rtems_device_major_number rtems_disk_major_number( +static inline rtems_device_major_number rtems_disk_get_major_number( const rtems_disk_device *dd ) { return rtems_filesystem_dev_major_t(dd->dev); } -static inline rtems_device_minor_number rtems_disk_minor_number( +static inline rtems_device_minor_number rtems_disk_get_minor_number( const rtems_disk_device *dd ) { return rtems_filesystem_dev_minor_t(dd->dev); } -static inline void *rtems_disk_driver_data(const rtems_disk_device *dd) +static inline void *rtems_disk_get_driver_data( + const rtems_disk_device *dd +) { return dd->driver_data; } -static inline uint32_t rtems_disk_block_size(const rtems_disk_device *dd) -{ - return dd->block_size; -} - -static inline uint32_t rtems_disk_media_block_size(const rtems_disk_device *dd) +static inline uint32_t rtems_disk_get_media_block_size( + const rtems_disk_device *dd +) { return dd->media_block_size; } diff --git a/cpukit/libblock/src/bdbuf.c b/cpukit/libblock/src/bdbuf.c index db707ea71d..22114fa701 100644 --- a/cpukit/libblock/src/bdbuf.c +++ b/cpukit/libblock/src/bdbuf.c @@ -1914,7 +1914,7 @@ rtems_bdbuf_execute_read_request (rtems_blkdev_request *req, req->status = RTEMS_RESOURCE_IN_USE; req->error = 0; - result = dd->ioctl (dd, RTEMS_BLKIO_REQUEST, req); + result = dd->ioctl (dd->phys_dev, RTEMS_BLKIO_REQUEST, req); if (result == 0) { @@ -2324,7 +2324,8 @@ rtems_bdbuf_swapout_write (rtems_bdbuf_swapout_transfer* transfer) * Perform the transfer. No cache locks, no preemption, only the disk * device is being held. */ - result = dd->ioctl (dd, RTEMS_BLKIO_REQUEST, transfer->write_req); + result = dd->ioctl (dd->phys_dev, RTEMS_BLKIO_REQUEST, + transfer->write_req); if (result < 0) { rtems_bdbuf_lock_cache (); diff --git a/cpukit/libblock/src/blkdev.c b/cpukit/libblock/src/blkdev.c index 6a3419133d..74dac49ffd 100644 --- a/cpukit/libblock/src/blkdev.c +++ b/cpukit/libblock/src/blkdev.c @@ -251,15 +251,18 @@ rtems_blkdev_generic_ioctl( break; case RTEMS_BLKIO_REQUEST: - { - rtems_blkdev_request *req = args->buffer; - args->ioctl_return = (uint32_t) dd->ioctl(dd, args->command, req); + /* + * It is not allowed to directly access the driver circumventing + * the cache. + */ + rc = RTEMS_INVALID_NAME; + args->ioctl_return = -1; break; - } default: - args->ioctl_return = (uint32_t) dd->ioctl(dd, args->command, - args->buffer); + args->ioctl_return = (uint32_t) dd->ioctl(dd->phys_dev, + args->command, + args->buffer); break; } rtems_disk_release(dd); diff --git a/cpukit/libblock/src/flashdisk.c b/cpukit/libblock/src/flashdisk.c index 502a938fc9..79f860126d 100644 --- a/cpukit/libblock/src/flashdisk.c +++ b/cpukit/libblock/src/flashdisk.c @@ -2343,7 +2343,7 @@ rtems_fdisk_print_status (rtems_flashdisk* fd) static int rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp) { - dev_t dev = rtems_disk_physical_device_number (dd); + dev_t dev = rtems_disk_get_device_identifier (dd); rtems_device_minor_number minor = rtems_filesystem_dev_minor_t (dev); rtems_blkdev_request* r = argp; rtems_status_code sc; diff --git a/cpukit/libblock/src/nvdisk.c b/cpukit/libblock/src/nvdisk.c index fabe53a5c9..3aaf543853 100644 --- a/cpukit/libblock/src/nvdisk.c +++ b/cpukit/libblock/src/nvdisk.c @@ -682,7 +682,7 @@ rtems_nvdisk_erase_disk (rtems_nvdisk* nvd) static int rtems_nvdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp) { - dev_t dev = rtems_disk_physical_device_number (dd); + dev_t dev = rtems_disk_get_device_identifier (dd); rtems_device_minor_number minor = rtems_filesystem_dev_minor_t (dev); rtems_blkdev_request* r = argp; rtems_status_code sc; diff --git a/cpukit/libblock/src/ramdisk-driver.c b/cpukit/libblock/src/ramdisk-driver.c index 282fdcf3d1..9defff623d 100644 --- a/cpukit/libblock/src/ramdisk-driver.c +++ b/cpukit/libblock/src/ramdisk-driver.c @@ -101,7 +101,7 @@ ramdisk_ioctl(rtems_disk_device *dd, uint32_t req, void *argp) case RTEMS_BLKIO_REQUEST: { rtems_blkdev_request *r = argp; - struct ramdisk *rd = rtems_disk_driver_data(dd); + struct ramdisk *rd = rtems_disk_get_driver_data(dd); switch (r->req) { |