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
15typedef enum dao_blkdev_type {
17 DAO_BLK_DEV_RAMDISK = 1,
18} dao_blkdev_type_t;
19
21typedef struct {
23 uint64_t read_ops;
25 uint64_t write_ops;
27 uint64_t bytes_read;
29 uint64_t bytes_written;
31 uint64_t flush_ops;
33 uint64_t reset_ops;
35 uint64_t unmap_ops;
39
41typedef struct blk_iobuf_ptr {
42 void *data;
43 uint32_t size;
45
47typedef struct dao_blk_io_vec {
48 uint32_t buf_cnt;
49 blk_iobuf_ptr_t *bufs;
51
55 uint64_t capacity;
57 uint32_t blk_size;
59 uint8_t dev_type;
60};
61
63typedef struct {
64 int (*read)(uint16_t devid, uint64_t sector, dao_blk_io_vec_t *iov, size_t len);
65 int (*write)(uint16_t devid, uint64_t sector, dao_blk_io_vec_t *iov, size_t len);
66 int (*flush)(uint16_t devid);
67 int (*reset)(uint16_t devid);
68 int (*unmap)(uint16_t devid, uint64_t sector, size_t len);
69 int (*write_zeroes)(uint16_t devid, uint64_t sector, size_t len, uint8_t unmap);
70 int (*get_id)(uint16_t devid, char *name, size_t max_len);
71 int (*discard)(uint16_t devid, uint64_t sector, size_t len);
72 void (*get_stats)(uint16_t devid, dao_blkdev_stats_t *stats);
73 void (*clear_stats)(uint16_t devid);
74 void (*get_features)(uint16_t devid, uint64_t *feat);
76
90
91extern struct dao_blkdev dao_blkdevs[];
92
94typedef enum dao_blkdev_req_status {
96 DAO_BLK_DEV_REQ_COMPGOOD,
98 DAO_BLK_DEV_REQ_FAIL,
100 DAO_BLK_DEV_REQ_UNSUPPORTED,
102 DAO_BLK_DEV_REQ_IN_PROCESS
103} dao_blkdev_req_status_t;
104
119int dao_blkdev_create(uint16_t dev_id, struct dao_blkdev_conf *conf,
120 const char *name);
121
131int dao_blkdev_destroy(uint16_t devid);
132
149int dao_blkdev_read(uint16_t devid, uint64_t sector, dao_blk_io_vec_t *iov, size_t len);
150
166int dao_blkdev_write(uint16_t devid, uint64_t sector, dao_blk_io_vec_t *iov, size_t len);
167
177int dao_blkdev_flush(uint16_t devid);
178
188int dao_blkdev_reset(uint16_t devid);
189
203int dao_blkdev_unmap(uint16_t devid, uint64_t sector, size_t len);
204
220int dao_blkdev_write_zeroes(uint16_t devid, uint64_t sector, size_t len, uint8_t unmap);
221
235int dao_blkdev_get_id(uint16_t devid, char *name, size_t max_len);
236
250int dao_blkdev_discard(uint16_t devid, uint64_t sector, size_t len);
251
260void dao_blkdev_get_stats(uint16_t devid, dao_blkdev_stats_t *stats);
261
268void dao_blkdev_clear_stats(uint16_t devid);
269
280int dao_blkdev_type_from_str(const char *type);
281
292const char *dao_blkdev_type_to_str(int type);
293#endif
uint64_t capacity
Definition dao_blk_dev.h:55
uint32_t blk_size
Definition dao_blk_dev.h:57
uint64_t write_zeroes_ops
Definition dao_blk_dev.h:37
uint64_t bytes_written
Definition dao_blk_dev.h:29
uint32_t dev_id
Definition dao_blk_dev.h:86
void * priv_data
Definition dao_blk_dev.h:82
uint32_t sector_size
Definition dao_blk_dev.h:84
dao_blkdev_handlers_t * handlers
Definition dao_blk_dev.h:80
uint8_t dev_type
Definition dao_blk_dev.h:88