40 lines
716 B
C
40 lines
716 B
C
|
#ifndef _GPXE_BLOCKDEV_H
|
||
|
#define _GPXE_BLOCKDEV_H
|
||
|
|
||
|
/**
|
||
|
* @file
|
||
|
*
|
||
|
* Block devices
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/** A block device */
|
||
|
struct block_device {
|
||
|
/** Block size */
|
||
|
size_t blksize;
|
||
|
/** Total number of blocks */
|
||
|
uint64_t blocks;
|
||
|
/**
|
||
|
* Read block
|
||
|
*
|
||
|
* @v blockdev Block device
|
||
|
* @v block Block number
|
||
|
* @v buffer Data buffer
|
||
|
* @ret rc Return status code
|
||
|
*/
|
||
|
int ( * read ) ( struct block_device *blockdev, uint64_t block,
|
||
|
void *buffer );
|
||
|
/**
|
||
|
* Write block
|
||
|
*
|
||
|
* @v blockdev Block device
|
||
|
* @v block Block number
|
||
|
* @v buffer Data buffer
|
||
|
* @ret rc Return status code
|
||
|
*/
|
||
|
int ( * write ) ( struct block_device *blockdev, uint64_t block,
|
||
|
const void *buffer );
|
||
|
};
|
||
|
|
||
|
#endif /* _GPXE_BLOCKDEV_H */
|