The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Открытие файла из модуля ядра"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"Открытие файла из модуля ядра"  +/
Сообщение от XShadow (ok) on 24-Май-10, 11:05 
Здравствуйте. Помогите пожалуйста в решении проблемы. Вот простейший пример:

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fcntl.h>  
#include <linux/unistd.h>  

int init_module(void)
{
   int fd;

   fd = open("/dev/input/mice", 0);
   close(fd);

   printk("<1>Hello world 1.\n");
   return 0;
}

void cleanup_module(void)
{
printk(KERN_ALERT "Goodbye world 1.\n");
}

Makefile: obj-m += sip.o

Параметры сборки: make -C /usr/src/linux-headers-`uname -r` SUBDIRS=$PWD^C

Вот что выдает:
root@shad:/home/shad/li# make -C /usr/src/linux-headers-`uname -r` SUBDIRS=$PWD
make: Вход в каталог `/usr/src/linux-headers-2.6.32-21-generic'
CC [M] /home/shad/li/sip.o
/home/shad/li/sip.c: In function ‘init_module’:
/home/shad/li/sip.c:10: error: implicit declaration of function ‘open’
/home/shad/li/sip.c:11: error: implicit declaration of function ‘close’
make[1]: *** [/home/shad/li/sip.o] Ошибка 1
make: *** [_module_/home/shad/li] Ошибка 2
make: Выход из каталога `/usr/src/linux-headers-2.6.32-21-generic'

Почему не находит объявление функции open?

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Открытие файла из модуля ядра"  +1 +/
Сообщение от svn (??) on 24-Май-10, 21:26 
>Почему не находит объявление функции open?

Потому что нет этой функции в ядре. Фаловый ввод-вывод связан с виртуальной памятью, open не обходится без page fault и его обработчика.

По этой же причине в ядре не может быть никакого open. Посмотри как читает файлы nfsd.


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Открытие файла из модуля ядра"  +/
Сообщение от ramol (ok) on 07-Июл-10, 09:20 
Ну ти глянь реализацыю функции open. Она должна визывать ядерну функцию после переключения контекста с user space в в kernel space. Ну и еще компилер ругается потому что у тебя хедера не заинклюджени
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру