source: rtems/cpukit/libblock/src/blkdev-ioctl.c @ 9de9b7d2

4.115
Last change on this file since 9de9b7d2 was f6c7bcfe, checked in by Mathew Kallada <matkallada@…>, on 12/21/12 at 17:42:39

libblock: Doxygen Enhancement Task #1

  • Property mode set to 100644
File size: 1.8 KB
Line 
1/**
2 * @file
3 *
4 * @brief Common IO Control Primitive
5 * @ingroup rtems_blkdev
6 */
7
8/*
9 * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia
10 * Author: Victor V. Vengerov <vvv@oktet.ru>
11 */
12
13#if HAVE_CONFIG_H
14  #include "config.h"
15#endif
16
17#include <errno.h>
18
19#include <rtems/blkdev.h>
20#include <rtems/bdbuf.h>
21
22int
23rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
24{
25    rtems_status_code  sc;
26    int                rc = 0;
27
28    switch (req)
29    {
30        case RTEMS_BLKIO_GETMEDIABLKSIZE:
31            *(uint32_t *) argp = dd->media_block_size;
32            break;
33
34        case RTEMS_BLKIO_GETBLKSIZE:
35            *(uint32_t *) argp = dd->block_size;
36            break;
37
38        case RTEMS_BLKIO_SETBLKSIZE:
39            sc = rtems_bdbuf_set_block_size(dd, *(uint32_t *) argp, true);
40            if (sc != RTEMS_SUCCESSFUL) {
41                errno = EIO;
42                rc = -1;
43            }
44            break;
45
46        case RTEMS_BLKIO_GETSIZE:
47            *(rtems_blkdev_bnum *) argp = dd->size;
48            break;
49
50        case RTEMS_BLKIO_SYNCDEV:
51            sc = rtems_bdbuf_syncdev(dd);
52            if (sc != RTEMS_SUCCESSFUL) {
53                errno = EIO;
54                rc = -1;
55            }
56            break;
57
58        case RTEMS_BLKIO_GETDISKDEV:
59            *(rtems_disk_device **) argp = dd;
60            break;
61
62        case RTEMS_BLKIO_PURGEDEV:
63            rtems_bdbuf_purge_dev(dd);
64            break;
65
66        case RTEMS_BLKIO_GETDEVSTATS:
67            rtems_bdbuf_get_device_stats(dd, (rtems_blkdev_stats *) argp);
68            break;
69
70        case RTEMS_BLKIO_RESETDEVSTATS:
71            rtems_bdbuf_reset_device_stats(dd);
72            break;
73
74        default:
75            errno = EINVAL;
76            rc = -1;
77            break;
78    }
79
80    return rc;
81}
Note: See TracBrowser for help on using the repository browser.