LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 960|回复: 1

关于驱动程序中llseek方法是否需要加互斥锁的疑问

[复制链接]
发表于 2007-7-27 13:52:48 | 显示全部楼层 |阅读模式
书上例程如下:


  1. loff_t scull_llseek(struct file *filp, loff_t off, int whence)
  2. {
  3.         struct scull_dev *dev = filp->private_data;
  4.         loff_t newpos;

  5.         switch(whence) {
  6.           case 0: /* SEEK_SET */
  7.                 newpos = off;
  8.                 break;

  9.           case 1: /* SEEK_CUR */
  10.                 newpos = filp->f_pos + off;
  11.                 break;

  12.           case 2: /* SEEK_END */
  13.                 newpos = dev->size + off;
  14.                 break;

  15.           default: /* can't happen */
  16.                 return -EINVAL;
  17.         }
  18.         if (newpos < 0) return -EINVAL;
  19.         filp->f_pos = newpos;
  20.         return newpos;
  21. }
复制代码

可是我觉得应该加上互斥锁,各位觉得如何?
发表于 2007-7-29 10:19:15 | 显示全部楼层
Post by wawxdyy
书上例程如下:


  1. loff_t scull_llseek(struct file *filp, loff_t off, int whence)
  2. {
  3.         struct scull_dev *dev = filp->private_data;
  4.         loff_t newpos;

  5.         switch(whence) {
  6.           case 0: /* SEEK_SET */
  7.                 newpos = off;
  8.                 break;

  9.           case 1: /* SEEK_CUR */
  10.                 newpos = filp->f_pos + off;
  11.                 break;

  12.           case 2: /* SEEK_END */
  13.                 newpos = dev->size + off;
  14.                 break;

  15.           default: /* can't happen */
  16.                 return -EINVAL;
  17.         }
  18.         if (newpos < 0) return -EINVAL;
  19.         filp->f_pos = newpos;
  20.         return newpos;
  21. }
复制代码

可是我觉得应该加上互斥锁,各位觉得如何?

内核会保证该函数执行的串行化。
光看驱动没用,建议你先熟悉一下内核流程。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表