blockdev.h

Go to the documentation of this file.
00001 #ifndef _GPXE_BLOCKDEV_H
00002 #define _GPXE_BLOCKDEV_H
00003 
00004 /**
00005  * @file
00006  *
00007  * Block devices
00008  *
00009  */
00010 
00011 FILE_LICENCE ( GPL2_OR_LATER );
00012 
00013 #include <gpxe/uaccess.h>
00014 
00015 struct block_device;
00016 
00017 /** Block device operations */
00018 struct block_device_operations {
00019         /**
00020          * Read block
00021          *
00022          * @v blockdev  Block device
00023          * @v block     Block number
00024          * @v count     Block count
00025          * @v buffer    Data buffer
00026          * @ret rc      Return status code
00027          */
00028         int ( * read ) ( struct block_device *blockdev, uint64_t block,
00029                          unsigned long count, userptr_t buffer );
00030         /**
00031          * Write block
00032          *
00033          * @v blockdev  Block device
00034          * @v block     Block number
00035          * @v count     Block count
00036          * @v buffer    Data buffer
00037          * @ret rc      Return status code
00038          */
00039         int ( * write ) ( struct block_device *blockdev, uint64_t block,
00040                           unsigned long count, userptr_t buffer );
00041 };
00042 
00043 /** A block device */
00044 struct block_device {
00045         /** Block device operations */
00046         struct block_device_operations *op;
00047         /** Block size */
00048         size_t blksize;
00049         /** Total number of blocks */
00050         uint64_t blocks;
00051 };
00052 
00053 #endif /* _GPXE_BLOCKDEV_H */

Generated on Tue Apr 6 20:01:06 2010 for gPXE by  doxygen 1.5.7.1