我正在编写 LKM,需要找出特定符号链接(symbolic link)指向的位置。基本上,我需要系统调用 readlinkat
(或 readlink
)的功能,但在内核空间中。有没有简单的方法可以做到这一点?
直接使用 readlinkat
对我不起作用,我总是得到 EFAULT(我想这是因为我的缓冲区显然位于内核内存空间而不是用户空间)。
最佳答案
首先,您不能直接在内核模块中使用用户空间系统调用(readlinkat()
或readlink()
)。相反,您需要在内核空间中使用导出的函数/符号。
接下来,可能要查看 struct inode_operations特定于您正在使用的文件系统。另请查看 generic_readlink()
在内部调用 vfs_readlink()
。
关于c - 读取内核空间中的符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26830150/