Keep Faith

统计

ARM移植

最新评论

设备文件的访问控制

对设备文件的访问控制主要通过open函数实现:
某些设备同一时间只允许一个进程打开该设备即(独享),这是可以通过atomic_t变量实现:
    static atomic_t cleanerCtl_available = ATOMIC_INIT(1);
int cleanerCtl_open(struct inode *inode, struct file *filp)
{
    struct cleanerCtl_dev *dev; /* device information */


    if(!atomic_dec_and_test(&cleanerCtl_available)) {
        atomic_inc(&cleanerCtl_available);
        return -EBUSY;      //already open one device
    }

    dev = container_of(inode->i_cdev, struct cleanerCtl_dev, cdev);
    filp->private_data = dev; /* for other methods */
    return 0;
}
这样在release 函数中需要调用
atomic_inc函数对cleanerCtl_available进行释放。

另一些访问控制包括,单用户访问,读写权限控制等。
对于单用户访问,可以利用全局current->uid记录下打开该设备的用户id,然后进一步处理
对于读写权限控制,则可对filp->f_flags进行处理。

posted on 2007-05-30 21:32 sardis 阅读(234) 评论(0)  编辑 收藏 引用 所属分类: linux移植

只有注册用户登录后才能发表评论。