Changeset 945884fe in rtems for cpukit/libblock/src/blkdev.c


Ignore:
Timestamp:
Aug 6, 2009, 3:58:09 AM (11 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.10, 4.11, master
Children:
b9ff10f3
Parents:
14d9ae4
Message:

2009-08-06 Chris Johns <chrisj@…>

  • libblock/src/bdbuf.c: Fix group user logic.
  • libblock/include/rtems/blkdev.h, libblock/src/blkdev.c, libblock/src/nvdisk.c, libblock/src/flashdisk.c: Add set block size, and get media block size support.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpukit/libblock/src/blkdev.c

    r14d9ae4 r945884fe  
    1818#endif
    1919
     20#include <errno.h>
    2021#include <string.h>
    2122
     
    219220    switch (args->command)
    220221    {
     222        case RTEMS_BLKIO_GETMEDIABLKSIZE:
     223            args->ioctl_return = dd->media_block_size;
     224            break;
     225
    221226        case RTEMS_BLKIO_GETBLKSIZE:
    222227            args->ioctl_return = dd->block_size;
     228            break;
     229
     230        case RTEMS_BLKIO_SETBLKSIZE:
     231            dd->block_size = *((size_t*) args->buffer);
    223232            break;
    224233
     
    249258    return RTEMS_SUCCESSFUL;
    250259}
     260
     261int
     262rtems_blkdev_ioctl(dev_t dev, uint32_t req, void *argp)
     263{
     264    rtems_disk_device *dd;
     265    size_t            *arg_size = argp;
     266
     267    dd = rtems_disk_obtain(dev);
     268    if (dd == NULL)
     269    {
     270        errno = ENODEV;
     271        return -1;
     272    }
     273   
     274    switch (req)
     275    {
     276        case RTEMS_BLKIO_GETMEDIABLKSIZE:
     277            *arg_size = dd->media_block_size;
     278            break;
     279
     280        case RTEMS_BLKIO_GETBLKSIZE:
     281            *arg_size = dd->block_size;
     282            break;
     283
     284        case RTEMS_BLKIO_SETBLKSIZE:
     285            dd->block_size = *arg_size;
     286            break;
     287
     288        case RTEMS_BLKIO_GETSIZE:
     289            *arg_size = dd->size;
     290            break;
     291
     292        default:
     293            errno = EINVAL;
     294            return -1;
     295            break;
     296    }
     297   
     298    rtems_disk_release(dd);
     299
     300    return 0;
     301}
Note: See TracChangeset for help on using the changeset viewer.