mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-09 19:36:47 +00:00
41 lines
862 B
C
41 lines
862 B
C
#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;
|
||
}; |