5#ifndef __INCLUDE_DAO_BLK_DEV_H__ 
    6#define __INCLUDE_DAO_BLK_DEV_H__ 
   11#define DAO_BLKDEV_MAX           (128) 
   12#define DAO_MAX_BLKDEV_ID_STRLEN (20) 
   13#define DAO_BLK_REQ_SECTOR_SHIFT (9)  
   16typedef enum dao_blkdev_type {
 
   18    DAO_BLK_DEV_RAMDISK = 1,
 
   67    int (*read)(uint16_t devid, uint64_t sector, 
dao_blk_io_vec_t *iov, 
size_t len);
 
   68    int (*write)(uint16_t devid, uint64_t sector, 
dao_blk_io_vec_t *iov, 
size_t len);
 
   69    int (*flush)(uint16_t devid);
 
   70    int (*reset)(uint16_t devid);
 
   71    int (*unmap)(uint16_t devid, uint64_t sector, 
size_t len);
 
   72    int (*write_zeroes)(uint16_t devid, uint64_t sector, 
size_t len, uint8_t unmap);
 
   73    int (*get_id)(uint16_t devid, 
char *name, 
size_t max_len);
 
   74    int (*discard)(uint16_t devid, uint64_t sector, 
size_t len);
 
   76    void (*clear_stats)(uint16_t devid);
 
   77    void (*get_features)(uint16_t devid, uint64_t *feat);
 
 
   97typedef enum dao_blkdev_req_status {
 
   99    DAO_BLK_DEV_REQ_COMPGOOD,
 
  101    DAO_BLK_DEV_REQ_FAIL,
 
  103    DAO_BLK_DEV_REQ_UNSUPPORTED,
 
  105    DAO_BLK_DEV_REQ_IN_PROCESS
 
  106} dao_blkdev_req_status_t;
 
  134int dao_blkdev_destroy(uint16_t devid);
 
  152int dao_blkdev_read(uint16_t devid, uint64_t sector, 
dao_blk_io_vec_t *iov, 
size_t len);
 
  169int dao_blkdev_write(uint16_t devid, uint64_t sector, 
dao_blk_io_vec_t *iov, 
size_t len);
 
  180int dao_blkdev_flush(uint16_t devid);
 
  191int dao_blkdev_reset(uint16_t devid);
 
  206int dao_blkdev_unmap(uint16_t devid, uint64_t sector, 
size_t len);
 
  223int dao_blkdev_write_zeroes(uint16_t devid, uint64_t sector, 
size_t len, uint8_t unmap);
 
  238int dao_blkdev_get_id(uint16_t devid, 
char *name, 
size_t max_len);
 
  253int dao_blkdev_discard(uint16_t devid, uint64_t sector, 
size_t len);
 
  271void dao_blkdev_clear_stats(uint16_t devid);
 
  283int dao_blkdev_type_from_str(
const char *type);
 
  295const char *dao_blkdev_type_to_str(
int type);
 
uint64_t write_zeroes_ops
 
dao_blkdev_handlers_t * handlers