2013年9月24日 星期二

file open, private_data

linux device driver中實作 "open" function ,一開始都要做一件事情 : assign  file object的private data欄位。


 eg: 
              static int devone_open(struct inode *inode, struct file * file)
              {
struct devone_data *p;
                       ...
                p=kmalloc(sizeof(struct devone_data), GFP_KERNEL);
                    
                     ...
                file-->private_data=p;
              }


如此一來,未來若有process A 要access此device (read , write , ioctrl...  etc)
第一件事就是將當初open時assign的private data 抓出來 

     ssize_t devone_write(.........)
           {
struct devone_data *p = filp->private_data;
                 ....
           }  


so , 多個process對同一device的access就不會衝突了。

沒有留言:

張貼留言