1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #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, uint64_t buffer, uint8_t arg0, uint8_t arg1);
- };
- /**
- * @brief 块设备请求队列内的packet
- *
- */
- struct block_device_request_packet
- {
- uchar cmd;
- uint64_t LBA_start;
- uint32_t count;
- uint64_t buffer_vaddr;
- uint8_t ahci_ctrl_num; // ahci控制器号, 默认应为0
- uint8_t port_num; // ahci的设备端口号
- 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 * in_service; // 正在请求的结点
- ul request_count;
- };
|