关于Linux设备驱动
问题描述:
写功能我写了一个Linux设备驱动程序,实现的功能device_write这样的:关于Linux设备驱动
static int device_write(struct file* file,const char* buff,int count, loff * offp)
{
//some implementation
printk("write value %x to card\n",value);
//some implementation
}
我也实现了device_read功能,并有中printk打印一些信息在里面。 问题是当我在应用程序中使用read(fd,buff,1)时,显示printk结果,但是当我使用write(fd,buff,1)时,没有printk的结果。device_write函数不能被调用什么会导致这个问题?有没有人遇到过这种问题?任何人都可以给我一些帮助和建议吗?
答
这只是一半的答案,但对于评论太大了。
您的device_write
函数中的其他操作是否正在发生?
在device_write
函数顶部做一个非常简单的printk
,看看是否打印。类似于
static int device_write(struct file* file,const char* buff,int count, loff * offp)
{
printk("%s: %s\n", __FILE__, __func__);
无论发生在函数中的任何其他情况如何。如果打印出来,那么你可以缩小从哪里出发。
如果这不起作用,那么请确保您实际上在设备结构中设置了函数指针。或者,也许你的错误在测试应用程序中。你确定你已经打开设备的写权限?如果您从最初编写的程序复制代码来测试读取功能,那将是一个容易犯的错误。
http://freshmeat.net/projects/dtrace-for-linux? – nmichaels 2010-12-07 17:40:43
我们需要更多的信息。什么是“价值”?你为什么认为写作不被称为?在你的问题中你没有这样的东西,代码甚至不可编译。 – Falmarri 2010-12-07 17:40:54