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就不會衝突了。
沒有留言:
張貼留言