实现过aio_read的大神过来瞧瞧

lucky-lucky 2014-03-15 07:41:38
《linux device driver》源码当中的scullp实现了aio_read和aio_write,现在我把代码都编译过去了,使用下面的代码做测试,却发现内核并没有调用scullp的aio_read函数,而是调用了read函数。

#include <sys/types.h>
#include <aio.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <stdio.h>

#define SIZE_TO_READ 100

int main()
{
char buffer[SIZE_TO_READ] = {0};;
struct aiocb cb;
int file = 0;
int numBytes = 0;
file = open("/dev/scullp", O_RDONLY, 0);

if (file == -1)
{
perror("Unable to open file!");
return 1;
}

memset(&cb, 0, sizeof(struct aiocb));
cb.aio_nbytes = SIZE_TO_READ;
cb.aio_fildes = file;
cb.aio_offset = 0;
cb.aio_buf = buffer;

if (aio_read(&cb) == -1)
{
perror("Unable to create request!" );
close(file);
}

printf("Request enqueued!\n");

while(aio_error(&cb) == EINPROGRESS)
{
printf("working...\n");
}

numBytes = aio_return(&cb);

if (numBytes != -1)
{
printf("success!read:%s\n",buffer);
}
else
{
perror("aio_return error\n");
}

close(file);

return 0;
}

scullp当中的部分代码如下:

static ssize_t scullp_aio_read(struct kiocb *iocb, char __user *buf, size_t count,
loff_t pos)
{
printk(KERN_INFO "scullp_aio_read\n");
return scullp_defer_op(0, iocb, buf, count, pos);
}

ssize_t scullp_read (struct file *filp, char __user *buf, size_t count,
loff_t *f_pos)
{
....
printk(KERN_INFO "scullp_read\n");
.....
}

在shell当中执行

#gcc aio_test.c -lrt
#./a.out
Request enqueued!
working...
working...
working...
working...
success!read:
#dmesg | tail
.....
[180293.021298] scullp_read

要如何使内核调用aio_read函数而不是read函数?请大神支支招,谢谢。
...全文
251 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文系统研究了谐振式双有源桥(DAB)变换器的无传感模型预测控制(MPC)方法,旨在通过Simulink仿真平台实现无需电流传感器的高性能控制策略,从而提升系统可靠性并降低硬件成本。研究深入分析了串联谐振型DAB变换器的工作原理与数学建模过程,构建了完整的无电流传感MPC控制框架,重点解决了系统状态观测、预测模型构建、控制律设计及稳定性保障等关键问题。文中详细阐述了状态观测器的设计原理,实现了对关键电流状态的精确估计,并结合模型预测控制算法优化动态响应性能,有效应对功率波动与负载变化。通过对闭环系统的仿真验证,充分展示了该方法在动态性能、鲁棒性与控制精度方面的优越表现,为电力电子系统中先进控制策略的应用提供了可复现的技术路径。; 适合人群:具备电力电子技术、自动控制理论及Simulink仿真基础,从事新能源发电、储能系统、电动汽车、直流微网等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究无电流传感器条件下高动态性能DAB变换器的控制方案设计;②掌握模型预测控制与状态观测器在电力变换系统中的集成方法;③通过Simulink仿真复现先进控制策略,支撑高水平科研论文撰写、课题申报或实际工程项目开发。; 阅读建议:建议结合所提供的Simulink仿真模型进行动手实践,重点关注状态观测器与MPC控制器的参数设计与耦合关系,对照文中“完美复现”案例逐步调试,深入理解控制算法的实现细节与性能优化方法,以全面提升理论分析与工程应用能力。

1,323

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧