2010-12-07 134 views
1

写功能我写了一个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函数不能被调用什么会导致这个问题?有没有人遇到过这种问题?任何人都可以给我一些帮助和建议吗?

+0

http://freshmeat.net/projects/dtrace-for-linux? – nmichaels 2010-12-07 17:40:43

+0

我们需要更多的信息。什么是“价值”?你为什么认为写作不被称为?在你的问题中你没有这样的东西,代码甚至不可编译。 – Falmarri 2010-12-07 17:40:54

回答

3

这只是一半的答案,但对于评论太大了。

您的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__); 

无论发生在函数中的任何其他情况如何。如果打印出来,那么你可以缩小从哪里出发。

如果这不起作用,那么请确保您实际上在设备结构中设置了函数指针。或者,也许你的错误在测试应用程序中。你确定你已经打开设备的写权限?如果您从最初编写的程序复制代码来测试读取功能,那将是一个容易犯的错误。