我必须在公开呼叫中声明多个设备。现在有一种方法可以将次要的nos修复为0,1,2,3,这样我就可以从filp-> f_dentry-> inode中提取它,并在每次制作时将它放在struct scull_dev []的数组中开放式读写或近距离通话,然后生活变得轻松:P。或者他们是一种让生活更轻松的方式?
答案 0 :(得分:0)
如果我了解您的需要,除了初始化和清理之外,您不应该直接访问您的设备。看看:
http://www.cs.uni.edu/~diesburg/courses/dd/code/scull/pipe.c
在open
功能中,您可以通过以下方式获取当前需要打开的设备:
struct scull_pipe *dev;
dev = container_of(inode->i_cdev, struct scull_pipe, cdev);
您可以在其他函数中看到如何通过内核传递给这些函数的参数来访问设备。例如:
static ssize_t scull_p_write(struct file *filp, const char __user *buf, size_t count,
loff_t *f_pos)
{
struct scull_pipe *dev = filp->private_data;