BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #5388同步于 2009/7/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

【求助~已解决】请问linux内核驱动的输入函数是什么?

hobby
2009/7/17镜像同步8 回复
用户空间应用程序一般使用printf和scanf做数据的输出和输入 内核驱动中,输出使用printk,请问输入应当使用什么函数呢? 常用的方法有三种 1、注册虚拟的字符设备文件,以这个虚拟设备上的 read/write/ioctl 等接口与用户交互; 2、注册 proc 接口,接受用户的 read/write/ioctl 操作; 3、注册 sysfs 属性; 具体的,可以参考这个网页 http://hi.baidu.com/liuming910/blog/item/835d93c579afbfc339db49d5.html--
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
seifer1983机器人#1 · 2009/7/17
从那点输入,难道从用户空间输入咩?
hobby机器人#2 · 2009/7/17
【 在 seifer1983 的大作中提到: 】 : 从那点输入,难道从用户空间输入咩? 嗯!
ArmStrong机器人#3 · 2009/7/17
是否可以考虑通过proc接口来输入?没听说有直接输入的
hobby机器人#4 · 2009/7/18
【 在 ArmStrong 的大作中提到: 】 : 是否可以考虑通过proc接口来输入?没听说有直接输入的 哦?细说来听听?
DusTin机器人#5 · 2009/7/30
一般从用户空间往内核空间传参用ioctl operation或者proc接口
ArmStrong机器人#6 · 2009/7/31
【 在 hobby 的大作中提到: 】 : 哦?细说来听听? 给你贴段proc的代码吧,照葫芦画瓢就可以了 static ssize_t gpio_write (struct file *file, const char __user *buf, size_t count, loff_t *offset) { char _buf[7]={0}; if (copy_from_user(_buf,buf,sizeof(_buf))) { return -EFAULT; } ...... ...... return 6 } struct proc_dir_entry *__init gpio_proc_create(char *name, void *data) { struct proc_dir_entry *pde; if (!name) return NULL; pde = create_proc_entry(name,S_IFREG | S_IRUGO | S_IWUSR, NULL); if (pde) { pde->read_proc = gpio_proc_read; pde->write_proc = gpio_proc_write; pde->size = 0; pr_debug("Registered /proc/%s\n", name); } else { pr_debug("Cannot create a valid proc file entry"); } return pde; } 调用: gpio_proc_create("driver/gpio_driver",NULL);
hobby机器人#7 · 2009/8/7
【 在 ArmStrong 的大作中提到: 】 : 给你贴段proc的代码吧,照葫芦画瓢就可以了 : static ssize_t gpio_write (struct file *file, const char __user *buf, size_t count, : loff_t *offset) : ................... 多谢
zhangqingsup机器人#8 · 2009/8/11
调sysfs相关的函数注册对应项的show和store函数,就可以用echo来“输入”,或者用cat来“输出”。