struct blk_mq_ops

/**
*struct blk_mq_ops-实现块驱动程序的回调函数
*行为。
*/
结构blk_mq_ops{
/**
*@queue_rq:对来自块IO的新请求进行排队。
*/
blk_status_t(*queue_rq)(struct blk_mq_hw_ctx*,const struct blk_mq_queue_data*);
/**
如果驱动程序使用bd->last判断何时向硬件提交请求,则必须定义此函数。如果出现错误,使我们停止发出进一步的请求,这个钩子将用于踢击硬件(否则最后一个请求将执行此操作)
*/
void(*commit_rqs)(结构blk_mq_hw_ctx*);
/**
将新请求的列表排入队列。驱动程序保证每个请求都属于同一队列。如果驱动程序没有完全清空@rqlist,那么其余的将在返回时由块层单独排队。
*/
void(*queue_rqs)(结构请求**rqlist);
/**
在队列请求之前预留预算,一旦.queue_rq运行,驾驶员就有责任释放预留预算。此外,我们还必须处理.get_budget的失败情况,以避免I/O死锁。
*/
int(*get_budget)(结构请求队列*);
/**
*@put_budget:释放预留预算。
*/
void(*put_budget)(结构request_queue*,int);
/**
*@set_rq_budget_token:存储rq的预算令牌
*/
void(*set_rq_budget_token)(结构请求*,int);
/**
*@get_rq_budget_token:检索rq的预算令牌
*/
int(*get_rq_budget_token)(结构请求*);
/**
*@timeout:请求超时时调用。
*/
enum blk_eh_timer_return(*超时)(结构请求*,bool);
/**
*@poll:调用以轮询特定标记的完成情况。
*/
int(*轮询)(结构blk_mq_hw_ctx*,结构io_comp_batch*);
/**
*@complete:将请求标记为已完成。
*/
void(*complete)(结构请求*);
/**
*@init_hctx:当设置了硬件队列的块层侧时调用,允许驱动程序分配或初始化匹配结构。
*/
int(*init_hctx)(结构blk_mq_hw_ctx*,void*,无符号int);
/**
*@exit_hctx:退出/拆卸(exit/teardown)同上。
*/
void(*exit_hctx)(结构blk_mq_hw_ctx*,无符号int);
/**
*@init_request:为块层分配的每个命令调用
*以允许驱动设置驱动专用数据。
*
*大于或等于queue_depth的标记用于设置
*刷新请求。
*/
int(*init_request)(struct blk_mq_tag_set*set,struct request*,
无符号int、无符号int);
/**
*@exit_request:退出/拆卸同上。
*/
void(*exit_request)(struct blk_mq_tag_set*set,struct request*,
无符号int);
/**
*@cleanup_rq:在释放一个未完成的请求之前调用
*并且通常用于释放驱动程序私有数据。
*/
void(*cleanup_rq)(结构请求*);
/**
*@busy:如果设置,则返回此队列当前是否繁忙。
*/
bool(*忙)(结构request_queue*);
/**
*@map_queues:这允许驱动程序通过
*重写构建mqmap的设置时间函数。
*/
int(*map_queues)(结构blk_mq_tag_set*set);
#ifdef CONFIG_BLK_DEBUG_FS
/**
*@show_rq:由debugfs实现用于显示特定于驱动程序
*有关请求的信息。
*/
void(*show_rq)(结构seq_file*m,结构请求*rq);
#endif
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值