如何在内核中获取字符设备的节点名称或路径

时间:2016-12-02 08:14:13

标签: c linux-kernel kernel linux-device-driver device-driver

我在一个内核驱动程序中有" n" 字符设备。一个读取函数称为读指针。

static struct file_operations fops;
fops.read    = cd_read;

现在我需要知道从用户空间调用读取时引用的字符设备。

static ssize_t cd_read(struct file *filep, char *buffer, size_t len, loff_t *position)
{

    filep->f_path;
}

我试图通过 filep-> f_path 来获取它至少尝试打印但是 f_path指 fs.h

中的struct path
struct file {
    ...
    struct path     f_path;
    ...
}
path.h 中路径中的

dentry和vfsmount指的是2个未定义的结构。

struct dentry;
struct vfsmount;

struct path {
    struct vfsmount *mnt;
    struct dentry *dentry;
};

并卡在这里。 那么如何在内核中获取字符设备的节点名称或路径?

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。

filp->f_path.dentry->d_iname

的工作原理如下:

In Linux, how can I get the filename from the "struct file" structure, while stepping thru the kernel with kgdb?