我正在编写LKM并需要找出特定符号链接指向的位置。基本上我需要syscall readlinkat
(或readlink
)的功能,但需要内核空间。有一个简单的方法吗?
直接使用readlinkat
对我不起作用,我总是得到EFAULT(我想这是因为我的缓冲区明显位于内核内存空间而不是用户空间)。
答案 0 :(得分:4)
首先,您不能直接在内核模块中使用用户空间系统调用(readlinkat()
或readlink()
)。而是需要在内核空间中使用导出的函数/符号。
接下来,可能需要查看您正在使用的文件系统的struct inode_operations。另请查看内部调用vfs_readlink()
的{{3}}。