关于应用层和驱动层的write操作的问题
时间:2010-07-08
来源:互联网
Size = write(SendPortHandle,
&WriteData[WrittenSize],
4096);
printf("Size=%d\n", Size);
write的返回值,也就是Size的值也是4096.
应用程序每次写入4096个字节,而且每次的返回值也是4096!
但是调用到驱动里边:
static int advtty_write(struct tty_struct * tty,
const unsigned char * buf, int count)
{
...
printk(KERN_INFO count=%d\n", count);
...
}
此处count的值为2048
请问为什么传给驱动的count值是2048,而不是4096?
作者: jinxinxin163 发布时间: 2010-07-08
作者: Godbach 发布时间: 2010-07-08
http://lxr.linux.no/linux+v2.6.34.1/fs/read_write.c#L334
- 334ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_t *pos)
- 335{
- 336 ssize_t ret;
- 337
- 338 if (!(file->f_mode & FMODE_WRITE))
- 339 return -EBADF;
- 340 if (!file->f_op || (!file->f_op->write && !file->f_op->aio_write))
- 341 return -EINVAL;
- 342 if (unlikely(!access_ok(VERIFY_READ, buf, count)))
- 343 return -EFAULT;
- 344
- 345 ret = rw_verify_area(WRITE, file, pos, count);
- 346 if (ret >= 0) {
- 347 count = ret;
- 348 if (file->f_op->write)
- 349 ret = file->f_op->write(file, buf, count, pos);
- 350 else
- 351 ret = do_sync_write(file, buf, count, pos);
- 352 if (ret > 0) {
- 353 fsnotify_modify(file->f_path.dentry);
- 354 add_wchar(current, ret);
- 355 }
- 356 inc_syscw(current);
- 357 }
- 358
- 359 return ret;
- 360}
作者: kgn28 发布时间: 2010-07-08
作者: ljysyn 发布时间: 2010-07-08
在发出系统调用之前,做了什么事情?还需要看看c库怎么做的。。。
作者: kgn28 发布时间: 2010-07-08
对,确实是多次调用,但是,处理多次调用的代码在哪里?sys_write里呢,还是在c库里?
作者: jinxinxin163 发布时间: 2010-07-08
赞同
作者: jinxinxin163 发布时间: 2010-07-08
kgn28 发表于 2010-07-08 12:30
请教下,你这张调用顺序图是通过什么工具得到的?感觉好像是在windows中?
作者: new_learner 发布时间: 2010-07-18
cygwin下的x的insight,调试vm7里面的2.30得到的。
作者: kgn28 发布时间: 2010-07-18
cygwin下的x的insight,调试vm7里面的2.30得到的。
kgn28 发表于 2010-07-18 18:13
有没有相应的文档可以参考一下,怎么配置这些东东? 谢谢先;)
作者: new_learner 发布时间: 2010-07-18
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28