LINUX.ORG.RU

Модуль ядра: как создать каталог??


0

0

Пытаюсь в момент инициализации модуля создать каталог /test

long res;
res = sys_mkdir ( "/test" );

В результате код ошибки -14 = EFAULT

Я догадываюсь, что, возможно, ему надо как-то по-другому передать
в качестве параметра путь к директории. Но вот не знаю как.
А ещё непонятно, почему не работают сисколы, если им прямо впихивать
строку в качестве параметра. Думаю, что проблема User/Kernel space.
В инете не смог найти инфу по моему вопросу.
Вообщем, хелп ...
anonymous

Все верно, все системные вызовы принимают указатели в userspace, поэтому указатель на статический массив в ядре не проходит.

Варианты такие:
1) временно расширить userspace (set_fs(KERNEL_DS);...;set_fs(USER_DS);)
2) вызвать более низкоуровневую функцию VFS, которая не проводит этих проверок (сейчас исходного кода под руками нет, возможно это vfs_mkdir - посмотрите сами).

Второй вариант практически во всех отношениях предпочтительнее.

Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.