В MINIX 3.2.1, я хочу, чтобы создать новый системный вызов в сервере VFS, который будет дано имя файла в качестве параметра и будет печатать этот определенный файл inode number.MINIX: sys_call: маска IPC отказано SENDREC от 1 до 1
Так что для того, чтобы retieve индексный дескриптор файла по его имени я хочу использовать в системе по умолчанию вызов на:
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' struct, ни fuctions, как 'get_inode', потому что они все реализованы внутри' MFS', а не 'VFS'. Поэтому мне пришлось создать новый системный вызов внутри 'MFS', который я вызывал изнутри' VFS'. Некоторая информация для создания системного вызова на сервере «MFS» приведена здесь: http://www.manio.org/blog/how-to-add-new-system-calls-to-minix-3-1 -8 / –