You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

blockdev.h 996B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef _GPXE_BLOCKDEV_H
  2. #define _GPXE_BLOCKDEV_H
  3. /**
  4. * @file
  5. *
  6. * Block devices
  7. *
  8. */
  9. #include <gpxe/uaccess.h>
  10. struct block_device;
  11. /** Block device operations */
  12. struct block_device_operations {
  13. /**
  14. * Read block
  15. *
  16. * @v blockdev Block device
  17. * @v block Block number
  18. * @v count Block count
  19. * @v buffer Data buffer
  20. * @ret rc Return status code
  21. */
  22. int ( * read ) ( struct block_device *blockdev, uint64_t block,
  23. unsigned long count, userptr_t buffer );
  24. /**
  25. * Write block
  26. *
  27. * @v blockdev Block device
  28. * @v block Block number
  29. * @v count Block count
  30. * @v buffer Data buffer
  31. * @ret rc Return status code
  32. */
  33. int ( * write ) ( struct block_device *blockdev, uint64_t block,
  34. unsigned long count, userptr_t buffer );
  35. };
  36. /** A block device */
  37. struct block_device {
  38. /** Block device operations */
  39. struct block_device_operations *op;
  40. /** Block size */
  41. size_t blksize;
  42. /** Total number of blocks */
  43. uint64_t blocks;
  44. };
  45. #endif /* _GPXE_BLOCKDEV_H */