aos/include/drivers/block_driver.h
2022-05-31 09:50:06 +00:00

39 lines
1.1 KiB
C

#ifndef _INIT_BLOCK_DRIVER_H_
#define _INIT_BLOCK_DRIVER_H_
#include <aos/aos.h>
enum block_driver_action {
BLOCK_DRIVER_ACTION_READ,
BLOCK_DRIVER_ACTION_WRITE,
BLOCK_DRIVER_ACTION_LOCK,
BLOCK_DRIVER_ACTION_UNLOCK,
BLOCK_DRIVER_ACTION_REGISTER_HANDLE,
BLOCK_DRIVER_ACTION_UNREGISTER_HANDLE,
BLOCK_DRIVER_ACTION_COUNT_HANDLES
};
struct block_driver_request {
enum block_driver_action action;
size_t block_number;
size_t offset;
size_t bytes;
uint64_t directory_entry_id;
};
struct block_driver_result {
errval_t err;
};
errval_t block_driver_init(void);
errval_t block_driver_read_object(uint32_t sector_number, size_t offset, size_t size, void *dst);
errval_t block_driver_write_object(uint32_t sector_number, size_t offset, size_t size, const void *src);
errval_t block_driver_lock(void);
errval_t block_driver_unlock(void);
errval_t block_driver_register_handle(uint64_t directory_entry_id);
errval_t block_driver_unregister_handle(uint64_t directory_entry_id);
errval_t block_driver_count_handles(uint64_t directory_entry_id, size_t *count);
#endif /* _INIT_BLOCK_DRIVER_H_ */