59f5bf7462db7ca3c2a6eab075e986f6ed11a51a
[people/xl0/gpxe.git] / src / include / gpxe / blockdev.h
1 #ifndef _GPXE_BLOCKDEV_H
2 #define _GPXE_BLOCKDEV_H
3
4 /**
5  * @file
6  *
7  * Block devices
8  *
9  */
10
11 /** A block device */
12 struct block_device {
13         /** Block size */
14         size_t blksize;
15         /** Total number of blocks */
16         uint64_t blocks;
17         /**
18          * Read block
19          *
20          * @v blockdev  Block device
21          * @v block     Block number
22          * @v buffer    Data buffer
23          * @ret rc      Return status code
24          */
25         int ( * read ) ( struct block_device *blockdev, uint64_t block,
26                          void *buffer );
27         /**
28          * Write block
29          *
30          * @v blockdev  Block device
31          * @v block     Block number
32          * @v buffer    Data buffer
33          * @ret rc      Return status code
34          */
35         int ( * write ) ( struct block_device *blockdev, uint64_t block,
36                           const void *buffer );
37 };
38
39 #endif /* _GPXE_BLOCKDEV_H */