63 #define _base_block_device_methods                                          \    64   _base_object_methods                                                      \    66   bool (*is_inserted)(void *instance);                                      \    68   bool (*is_protected)(void *instance);                                     \    70   bool (*connect)(void *instance);                                          \    72   bool (*disconnect)(void *instance);                                       \    74   bool (*read)(void *instance, uint32_t startblk,                           \    75                  uint8_t *buffer, uint32_t n);                              \    77   bool (*write)(void *instance, uint32_t startblk,                          \    78                   const uint8_t *buffer, uint32_t n);                       \    80   bool (*sync)(void *instance);                                             \    82   bool (*get_info)(void *instance, BlockDeviceInfo *bdip);    87 #define _base_block_device_data                                             \   125 #define blkGetDriverState(ip) ((ip)->state)   139 #define blkIsTransferring(ip) ((((ip)->state) == BLK_CONNECTING) ||         \   140                                (((ip)->state) == BLK_DISCONNECTING) ||      \   141                                (((ip)->state) == BLK_READING) ||            \   142                                (((ip)->state) == BLK_WRITING))   159 #define blkIsInserted(ip) ((ip)->vmt->is_inserted(ip))   172 #define blkIsWriteProtected(ip) ((ip)->vmt->is_protected(ip))   188 #define blkConnect(ip) ((ip)->vmt->connect(ip))   202 #define blkDisconnect(ip) ((ip)->vmt->disconnect(ip))   218 #define blkRead(ip, startblk, buf, n)                                       \   219   ((ip)->vmt->read(ip, startblk, buf, n))   235 #define blkWrite(ip, startblk, buf, n)                                      \   236   ((ip)->vmt->write(ip, startblk, buf, n))   249 #define blkSync(ip) ((ip)->vmt->sync(ip))   263 #define blkGetInfo(ip, bdip) ((ip)->vmt->get_info(ip, bdip)) BaseBlockDevice virtual methods table. 
 
uint32_t blk_num
Total number of blocks. 
 
#define _base_block_device_methods
BaseBlockDevice specific methods. 
 
#define _base_block_device_data
BaseBlockDevice specific data. 
 
blkstate_t
Driver state machine possible states. 
 
uint32_t blk_size
Block size in bytes. 
 
const struct BaseBlockDeviceVMT * vmt
Virtual Methods Table.