免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1949 | 回复: 1
打印 上一主题 下一主题

有关device_read和device_write函数loff_t *参数的疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-12 21:24 |只看该作者 |倒序浏览
在写设备驱动时常要用到下面两个函数:
static ssize_t device_read(struct file *, char *, size_t, loff_t *);
static ssize_t device_write(struct file *, const char *, size_t, loff_t *);

当用户空间的程序调用read(fd, buf, count)或write(fd, buf, count)时,实际上就会调用内核中的device_read和device_write函数。

我有一点不明白,内核中的读写函数都有一个位移参数loff_t *,而用户态的读写函数确没有,岂不是很怪,loff_t *如何维护呢?

如果我的设备是一块芯片,我要对上面的一段空间的某个寄存器进行操作,在基址确定的情况下,如何控制偏移量呢,是不是通过loff_t (*llseek) (struct file *, loff_t, int)函数,或者直接用ioctl( )函数?

糊涂中!

论坛徽章:
0
2 [报告]
发表于 2005-07-13 10:47 |只看该作者

有关device_read和device_write函数loff_t *参数的疑问

用lseek可以改变文件读写指针吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP