14 #ifndef _RTEMS_BLKDEV_H 15 #define _RTEMS_BLKDEV_H 106 rtems_blkdev_request_op
req;
159 static inline void rtems_blkdev_request_done(
164 (*req->
done)(req, status);
173 #define RTEMS_BLKDEV_START_BLOCK(req) (req->bufs[0].block) 180 #define RTEMS_BLKIO_REQUEST _IOWR('B', 1, rtems_blkdev_request) 181 #define RTEMS_BLKIO_GETMEDIABLKSIZE _IOR('B', 2, uint32_t) 182 #define RTEMS_BLKIO_GETBLKSIZE _IOR('B', 3, uint32_t) 183 #define RTEMS_BLKIO_SETBLKSIZE _IOW('B', 4, uint32_t) 184 #define RTEMS_BLKIO_GETSIZE _IOR('B', 5, rtems_blkdev_bnum) 185 #define RTEMS_BLKIO_SYNCDEV _IO('B', 6) 186 #define RTEMS_BLKIO_DELETED _IO('B', 7) 187 #define RTEMS_BLKIO_CAPABILITIES _IO('B', 8) 188 #define RTEMS_BLKIO_GETDISKDEV _IOR('B', 9, rtems_disk_device *) 189 #define RTEMS_BLKIO_PURGEDEV _IO('B', 10) 190 #define RTEMS_BLKIO_GETDEVSTATS _IOR('B', 11, rtems_blkdev_stats *) 191 #define RTEMS_BLKIO_RESETDEVSTATS _IO('B', 12) 195 static inline int rtems_disk_fd_get_media_block_size(
197 uint32_t *media_block_size
200 return ioctl(fd, RTEMS_BLKIO_GETMEDIABLKSIZE, media_block_size);
203 static inline int rtems_disk_fd_get_block_size(
int fd, uint32_t *block_size)
205 return ioctl(fd, RTEMS_BLKIO_GETBLKSIZE, block_size);
208 static inline int rtems_disk_fd_set_block_size(
int fd, uint32_t block_size)
210 return ioctl(fd, RTEMS_BLKIO_SETBLKSIZE, &block_size);
213 static inline int rtems_disk_fd_get_block_count(
218 return ioctl(fd, RTEMS_BLKIO_GETSIZE, block_count);
221 static inline int rtems_disk_fd_get_disk_device(
226 return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);
229 static inline int rtems_disk_fd_sync(
int fd)
231 return ioctl(fd, RTEMS_BLKIO_SYNCDEV);
234 static inline int rtems_disk_fd_purge(
int fd)
236 return ioctl(fd, RTEMS_BLKIO_PURGEDEV);
239 static inline int rtems_disk_fd_get_device_stats(
244 return ioctl(fd, RTEMS_BLKIO_GETDEVSTATS, stats);
247 static inline int rtems_disk_fd_reset_device_stats(
int fd)
249 return ioctl(fd, RTEMS_BLKIO_RESETDEVSTATS);
264 #define RTEMS_BLKDEV_CAP_MULTISECTOR_CONT (1 << 0) 271 #define RTEMS_BLKDEV_CAP_SYNC (1 << 1) 305 uint32_t media_block_size,
338 const char *parent_block_device,
380 #define RTEMS_GENERIC_BLOCK_DEVICE_DRIVER_ENTRIES \ 381 rtems_blkdev_generic_open, \ 382 rtems_blkdev_generic_close, \ 383 rtems_blkdev_generic_read, \ 384 rtems_blkdev_generic_write, \ 385 rtems_blkdev_generic_ioctl 394 rtems_device_major_number major,
395 rtems_device_minor_number minor,
406 rtems_device_major_number major,
407 rtems_device_minor_number minor,
418 rtems_device_major_number major,
419 rtems_device_minor_number minor,
430 rtems_device_major_number major,
431 rtems_device_minor_number minor,
442 rtems_device_major_number major,
443 rtems_device_minor_number minor,
rtems_device_driver rtems_blkdev_generic_ioctl(rtems_device_major_number major, rtems_device_minor_number minor, void *arg)
Generic block device IO control primitive.
Definition: blkdev.c:172
uint32_t rtems_blkdev_bnum
Block device block index type.
Definition: diskdevs.h:46
rtems_device_driver rtems_blkdev_generic_write(rtems_device_major_number major, rtems_device_minor_number minor, void *arg)
Generic block device write primitive.
Definition: blkdev.c:79
void * user
User pointer.
Definition: blkdev.h:87
Objects_Id rtems_id
Used to manage and manipulate RTEMS object identifiers.
Definition: types.h:80
const rtems_driver_address_table rtems_blkdev_generic_ops
Generic block operations driver address table.
Definition: blkdev-ops.c:25
int(* rtems_block_device_ioctl)(rtems_disk_device *dd, uint32_t req, void *argp)
Block device IO control handler type.
Definition: diskdevs.h:51
rtems_blkdev_request_cb done
Request done callback function.
Definition: blkdev.h:111
void rtems_blkstats(FILE *output, const char *device, bool reset)
Block device statistics command.
Definition: blkdev-blkstats.c:34
rtems_status_code rtems_blkdev_create_partition(const char *partition, const char *parent_block_device, rtems_blkdev_bnum media_block_begin, rtems_blkdev_bnum media_block_count)
Creates a partition within a parent block device.
Definition: blkdev-imfs.c:317
rtems_blkdev_request_op
Block device request type.
Definition: blkdev.h:49
rtems_device_driver rtems_blkdev_generic_close(rtems_device_major_number major, rtems_device_minor_number minor, void *arg)
Generic block device close primitive.
Definition: blkdev.c:154
uint32_t bufnum
Number of blocks for this request.
Definition: blkdev.h:126
Block device statistics.
Definition: diskdevs.h:93
rtems_status_code rtems_blkdev_create(const char *device, uint32_t media_block_size, rtems_blkdev_bnum media_block_count, rtems_block_device_ioctl handler, void *driver_data)
Creates a block device.
Definition: blkdev-imfs.c:273
struct rtems_blkdev_sg_buffer rtems_blkdev_sg_buffer
Block device scatter or gather buffer structure.
Description of a disk device (logical and physical disks).
Definition: diskdevs.h:158
rtems_id io_task
The task requesting the IO operation.
Definition: blkdev.h:131
The block device transfer request is used to read or write a number of blocks from or to the device...
Definition: blkdev.h:102
rtems_device_driver rtems_blkdev_generic_read(rtems_device_major_number major, rtems_device_minor_number minor, void *arg)
Generic block device read primitive.
Definition: blkdev.c:32
rtems_status_code
Classic API Status.
Definition: status.h:46
Block Device Disk Management API.
void(* rtems_blkdev_request_cb)(struct rtems_blkdev_request *req, rtems_status_code status)
Block device request done callback function type.
Definition: blkdev.h:60
Sync any data with the media.
Definition: blkdev.h:52
Read the requested blocks of data.
Definition: blkdev.h:50
Block device scatter or gather buffer structure.
Definition: blkdev.h:68
void * buffer
Buffer pointer.
Definition: blkdev.h:82
rtems_blkdev_bnum block
Block index.
Definition: blkdev.h:72
void rtems_blkdev_print_stats(const rtems_blkdev_stats *stats, rtems_printk_plugin_t print, void *print_arg)
Prints the block device statistics.
Definition: blkdev-print-stats.c:30
Interface to Kernel Print Methods.
rtems_device_driver rtems_blkdev_generic_open(rtems_device_major_number major, rtems_device_minor_number minor, void *arg)
Generic block device open primitive.
Definition: blkdev.c:131
Write the requested blocks of data.
Definition: blkdev.h:51
uint32_t length
Buffer length.
Definition: blkdev.h:77
int rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)
Common IO control primitive.
Definition: blkdev-ioctl.c:23
int(* rtems_printk_plugin_t)(void *, const char *format,...)
Type definition for function which can be plugged in to certain reporting routines to redirect the ou...
Definition: bspIo.h:129
rtems_blkdev_request_op req
Block device operation (read or write).
Definition: blkdev.h:106
struct rtems_blkdev_request rtems_blkdev_request
The block device transfer request is used to read or write a number of blocks from or to the device...
rtems_status_code status
Last IO operation completion status.
Definition: blkdev.h:121
void * done_arg
Argument to be passed to callback function.
Definition: blkdev.h:116