MINIX: sys_call: ipc mask denied SENDREC from 1 to 1

MINIX: sys_call: ipc mask denied SENDREC from 1 to 1

MINIX 3.2.1 中,我想在 VFS 服务器中创建一个新的 系统调用,它将被赋予一个文件名作为参数并将打印此特定文件的 inode 编号。

因此,为了通过文件名检索文件的索引节点,我想使用默认系统调用:

int stat(char *name,struct stat *buffer)

http://minix1.woodhull.com/manpages/man2/stat.2.html

在我的新系统调用处理程序的主体中,它是

int mycall_1(void);

在`/usr/src/servers/vfs/misc.c

里面

但是当我测试新的系统调用时,在应该调用 stat 系统调用的地方,它实际上不会,而是打印消息:

sys_call: ipc mask denied SENDREC from 1 to 1

经过一些研究,我发现这可能是因为 VFS 服务器试图向自己发送消息,因为 stat 实际上是在 VFS 服务器内部实现的,所以 ipc mask 拒绝了这个 sendrec() 称呼。所以我必须编辑一些配置文件,以便为这种通信提供正确的权限。

但我不确定我的理解是否正确,也不知道应该编辑哪个文件以授予适当的权限。所以,如果有人能在这个问题上启发我,我将不胜感激。

提前致谢。

你没看错。但解决方案是不要继续 "fixing the permissions",这里只是为了防止搬起石头砸自己的脚:这只会让系统更加崩溃。 相反,您需要执行 VFS 在为 STAT 请求提供服务时执行的步骤,从破解消息后开始。