我的测试程序read 不了我的驱动程序中的值??

lgx73 2007-03-17 09:06:44
我的测试程序是这样的:
int main(void)
{
int keypad_fd;
char data;
int ret;
keypad_fd = open("/dev/keypad", O_RDONLY);
if (keypad_fd < 0)
{
perror("open device keypad");
exit(1);
}
for (;;)
{
read(keypad_fd, &data, sizeof(data));
printf("data=0x%x\n,data);
printf("data****=%d\n,data);
}
close(keypad_fd);
return 0;
}
我的驱动程序是:
static int pxakp_read(struct file * file, char * buffer, size_t count, loff_t *ppos)
{
static char key;
key = 1;
copy_to_user(buffer, &key, sizeof key);
return sizeof key;
}
static struct file_operations pxakp_dev =
{
.owner = THIS_MODULE,
.open = pxakp_open,
.release = pxakp_release,
.read = pxakp_read,
};
static int __init pxakp_init(void)
{
int ret, i;
ret = request_irq(IRQ_KEYPAD, pxakp_interrupt, 0, "keypad", &pxakp_dev);
if (ret < 0) {
return ret;
}
ret = register_chrdev(0,"keypad",&pxakp_dev);
if (ret < 0) {
printk("Keypad d\n");
return ret;
}
pxakp_open(NULL,NULL);
}

我把这个模块build in 内核,是2.6.17 kernel,用ramdisk文件系统,在超级终端中执行./main(我的测试程序)时,在超级终端上看不到我想要的东西,只显示

data= 0xbe
data*****= 190
data= 0xbe
data*****= 190
data= 0xbe
data*****= 190
data= 0xbe
data*****= 190
data= 0xbe
data*****= 190
我想要它显示
data= 0x01
data*****= 1

好像main.c程序中的read没有和pxakp_read联系上为什么??????
...全文
215 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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