Я пишу загружаемый модуль ядра (LKM). Для этого LKM необходимо выполнить некоторые специальные действия, если пользователь, который только что выполнил cat/proc /, является текущим пользователем. поэтому я пытаюсь выяснить, как найти эту информацию. Моя первая попытка состояла в том, чтобы использовать get_current_user(), как определено в cred.h. но это не работает. http://lxr.linux.no/linux+*/include/linux/cred.h#L290 Я не ищу другие пути, это то, что я нашел, никто не похож на работу How to get userID when writing Linux kernel module How do I call Linux syscall from kernel space?Как получить текущего пользователя в ядре, то есть как вызвать current-> uid правильным способом
функции в вопросе:
static int getuid()
{
return get_current_user()->uid;
}
НКА выход:
make -C /lib/modules/2.6.32-358.11.1.el6.x86_64/build M=/root/git_prj1 modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-358.11.1.el6.x86_64'
CC [M] /root/git_prj1/proc_setup.o
/root/git_prj1/proc_setup.c:37: warning: function declaration isn���t a prototype
/root/git_prj1/proc_setup.c: In function ���getuid���:
/root/git_prj1/proc_setup.c:39: error: dereferencing pointer to incomplete type
/root/git_prj1/proc_setup.c:39: error: implicit declaration of function ���get_uid���
/root/git_prj1/proc_setup.c:39: warning: assignment makes pointer from integer without a cast
/root/git_prj1/proc_setup.c:39: warning: return makes integer from pointer without a cast
/root/git_prj1/proc_setup.c: In function ���read_key���:
/root/git_prj1/proc_setup.c:52: warning: format ���%s��� expects type ���char *���, but argument 4 has type ���int���
make[2]: *** [/root/git_prj1/proc_setup.o] Error 1
make[1]: *** [_module_/root/git_prj1] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.32-358.11.1.el6.x86_64'
make: *** [all] Error 2
Что означает «не работает»? – tangrs
не компилирует – user1881587
Ну, покажите нам свой код и покажите нам, какие ошибки вы получаете. – tangrs