Data Accelerator Offload
Loading...
Searching...
No Matches
dao_blk_dev.h
1/* SPDX-License-Identifier: Marvell-Proprietary
2 * Copyright (c) 2025 Marvell
3 */
4
5#ifndef __INCLUDE_DAO_BLK_DEV_H__
6#define __INCLUDE_DAO_BLK_DEV_H__
7
8#include <stdint.h>
9#include <stdio.h>
10
11#define DAO_BLKDEV_MAX (128)
12#define DAO_MAX_BLKDEV_ID_STRLEN (20)
13#define DAO_BLK_REQ_SECTOR_SHIFT (9) /* 512 bytes sector size */
14
16typedef enum dao_blkdev_type {
18 DAO_BLK_DEV_RAMDISK = 1,
19} dao_blkdev_type_t;
20
22typedef struct {
24 uint64_t read_ops;
26 uint64_t write_ops;
28 uint64_t bytes_read;
30 uint64_t bytes_written;
32 uint64_t flush_ops;
34 uint64_t reset_ops;
36 uint64_t unmap_ops;
40
42typedef struct blk_iobuf_ptr {
43 void *data;
44 uint32_t size;
46
48typedef struct dao_blk_io_vec {
49 uint32_t buf_cnt;
50 blk_iobuf_ptr_t *bufs;
52
56 uint64_t capacity;
58 uint32_t blk_size;
60 uint8_t dev_type;
61};
62
63/* End of structure dao_blkdev_conf. */
64
66typedef struct {
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);
75 void (*get_stats)(uint16_t devid, dao_blkdev_stats_t *stats);
76 void (*clear_stats)(uint16_t devid);
77 void (*get_features)(uint16_t devid, uint64_t *feat);
79
93
94extern struct dao_blkdev dao_blkdevs[];
95
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;
107
122int dao_blkdev_create(uint16_t dev_id, struct dao_blkdev_conf *conf,
123 const char *name);
124
134int dao_blkdev_destroy(uint16_t devid);
135
152int dao_blkdev_read(uint16_t devid, uint64_t sector, dao_blk_io_vec_t *iov, size_t len);
153
169int dao_blkdev_write(uint16_t devid, uint64_t sector, dao_blk_io_vec_t *iov, size_t len);
170
180int dao_blkdev_flush(uint16_t devid);
181
191int dao_blkdev_reset(uint16_t devid);
192
206int dao_blkdev_unmap(uint16_t devid, uint64_t sector, size_t len);
207
223int dao_blkdev_write_zeroes(uint16_t devid, uint64_t sector, size_t len, uint8_t unmap);
224
238int dao_blkdev_get_id(uint16_t devid, char *name, size_t max_len);
239
253int dao_blkdev_discard(uint16_t devid, uint64_t sector, size_t len);
254
263void dao_blkdev_get_stats(uint16_t devid, dao_blkdev_stats_t *stats);
264
271void dao_blkdev_clear_stats(uint16_t devid);
272
283int dao_blkdev_type_from_str(const char *type);
284
295const char *dao_blkdev_type_to_str(int type);
296#endif
uint64_t capacity
Definition dao_blk_dev.h:56
uint32_t blk_size
Definition dao_blk_dev.h:58
uint64_t write_zeroes_ops
Definition dao_blk_dev.h:38
uint64_t bytes_written
Definition dao_blk_dev.h:30
uint32_t dev_id
Definition dao_blk_dev.h:89
void * priv_data
Definition dao_blk_dev.h:85
uint32_t sector_size
Definition dao_blk_dev.h:87
dao_blkdev_handlers_t * handlers
Definition dao_blk_dev.h:83
uint8_t dev_type
Definition dao_blk_dev.h:91