Chinaunix首页 | 论坛 | 博客
  • 博客访问: 398999
  • 博文数量: 82
  • 博客积分: 2085
  • 博客等级: 大尉
  • 技术积分: 808
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-10 10:28
文章分类

全部博文(82)

文章存档

2014年(1)

2013年(4)

2012年(2)

2011年(3)

2010年(10)

2009年(36)

2008年(26)

我的朋友

分类: LINUX

2008-11-09 17:49:58

<1>
asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count)
{
 struct file *file;
 ssize_t ret = -EBADF;
 int fput_needed;
 file = fget_light(fd, &fput_needed);
 if (file) {
  loff_t pos = file_pos_read(file);
  ret = vfs_read(file, buf, count, &pos);
  file_pos_write(file, pos);
  fput_light(file, fput_needed);
 }
 return ret;
}
<2>
ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
{
 ssize_t ret;
 if (!(file->f_mode & FMODE_READ))
  return -EBADF;
 if (!file->f_op || (!file->f_op->read && !file->f_op->aio_read))
  return -EINVAL;
 if (unlikely(!access_ok(VERIFY_WRITE, buf, count)))
  return -EFAULT;
 ret = rw_verify_area(READ, file, pos, count);
 if (!ret) {
  ret = security_file_permission (file, MAY_READ);
  if (!ret) {
   if (file->f_op->read)
    ret = file->f_op->read(file, buf, count, pos);
   else
    ret = do_sync_read(file, buf, count, pos);
   if (ret > 0) {
    fsnotify_access(file->f_dentry);
    current->rchar += ret;
   }
   current->syscr++;
  }
 }
 return ret;
}
这样系统就调用的你所写的驱动程序中的read函数!
其他的调用跟这个差不多!
阅读(1449) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~