diff --git a/kernel/driver/disk/block_device.h b/kernel/driver/disk/block_device.h new file mode 100644 index 00000000..157c8083 --- /dev/null +++ b/kernel/driver/disk/block_device.h @@ -0,0 +1,39 @@ +#pragma once + +#include "../../common/glib.h" +#include "stdint.h" + +struct block_device_operation +{ + long (*open)(); + long (*close)(); + long (*ioctl)(long cmd, long arg); + long (*transfer)(long cmd, ul LBA_start, ul count, uchar* buffer); +}; + +/** + * @brief 块设备请求队列内的packet + * + */ +struct block_device_request_packet +{ + uchar cmd; + uint32_t LBA_start; + uint32_t count; + uchar *buffer; + + void (*end_handler)(ul num, ul arg); + + struct List list; +}; + +/** + * @brief 块设备的请求队列 + * + */ +struct block_device_request_queue +{ + struct List queue_list; + struct block_device_request_packet * entry; + ul request_count; +}; \ No newline at end of file