如何在设备驱动程序中附加每个open()数据?

时间:2014-05-01 23:22:11

标签: freebsd kernel-module

我有一些代码如下:

static int devname_read(struct cdev *dev, struct uio *uio, int ioflag)
{
   int error = modify_state();
   return (error);
}

这里的问题是modify_state()在全局状态下运行,当它真正应该运行时是每次打开(2)。换句话说,没有读者应该相互冲突,并且当设备接近(2)时没有任何东西持续存在。

如何将状态与文件描述符或相关标识符相关联?

1 个答案:

答案 0 :(得分:2)

您可能想要使用cdevpriv;见http://www.freebsd.org/cgi/man.cgi?devfs_set_cdevpriv