39 lines
1.1 KiB
C
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_ */ |