在MINIX 3.2.1,我想創建一個新的系統調用在VFS服務器將被賦予一個文件名作爲參數,將打印此一定文件的inode號碼。MINIX:sys_call:IPC面膜否認SENDREC從1到1
因此,爲了通過它的名字retieve文件的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
AFER一些研究,我發現,這可能是因爲VFS服務器試圖向自己發送消息,因爲stat
實際上是在VFS服務器內部實現的,所以ipc掩碼拒絕了這個sendrec()
調用。所以我必須編輯一些配置文件,以便爲此通信提供正確的權限。
但我不確定是否我所理解的是正確的,也不知道應該編輯哪個文件以提供適當的權限。所以,如果有人能夠在這個問題上給我啓發,我將不勝感激。
在此先感謝。
那麼,我確實通過研究'do_stat'工作方式(在/usr/src/servers/vfs/stat.c中)解決了這個問題。無論如何,謝謝你指出。我在後來遇到的另一個問題是,'VFS'不能訪問'inode'結構表,既不是'get_inode',因爲它們都是在'MFS'服務器內部實現的,而不是'VFS'。所以我不得不在'MFS'內創建一個新的系統調用,我從'VFS'的內部調用。爲了創建一個系統調用正確的'MFS'服務器的一些信息在這裏提供:http://www.manio.org/blog/how-to-add-new-system-calls-to-minix-3-1 -8 / –