The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"LKM & linux/fs.h"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"LKM & linux/fs.h"
Сообщение от FreeGL Искать по авторуВ закладки on 23-Мрт-03, 22:36  (MSK)
Народ помогите пл3!
у меня возникают траблы при написании модулей для ядра (2.4.18)
под Линукс, а именно когда я включаю в код модуля заголовочный
файл <linux/fs.h> (ниже приведен пример модуля):

#define MODULE
#define __KERNEL__
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h> //!!!!!!!!!!!!!!
int init_module()
{
  printk ("GOOD\n");
  return 0;
}

при его компиляции выводяться ошибки

# gcc -c m.o m.c
In file included from /usr/include/linux/affs_fs_i.h:5,
                 from /usr/include/linux/fs.h:296,
                 from m.c:5:
/usr/include/linux/time.h:9: redefinition of `struct timespec'
/usr/include/linux/time.h:88: redefinition of `struct timeval'
/usr/include/linux/time.h:90: parse error before `suseconds_t'
/usr/include/linux/time.h:90: warning: no semicolon at end of struct or union
In file included from /usr/include/linux/fs.h:298,
                 from m.c:7:
/usr/include/linux/efs_fs_i.h:13: parse error before `efs_ino_t'
/usr/include/linux/efs_fs_i.h:13: warning: data definition has no type or storage class
/usr/include/linux/efs_fs_i.h:48: parse error before `uint32_t'
/usr/include/linux/efs_fs_i.h:48: warning: no semicolon at end of struct or union
/usr/include/linux/efs_fs_i.h:56: parse error before `}'
In file included from /usr/include/linux/coda_fs_i.h:14,
                 from /usr/include/linux/fs.h:299,
                 from m.c:7:
/usr/include/linux/coda.h:109: warning: redefinition of `u_quad_t'
/usr/include/sys/types.h:38: warning: `u_quad_t' previously declared here

А если написать простую программу с использованием <linux/fs.h> то она компилируеться без проблем (модуль без нее тоже нормально работает).
Поэтому может ктото подсказать кк мне можно заюзать в модуле <linux/fs.h>

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "LKM & linux/fs.h"
Сообщение от Bob emailИскать по авторуВ закладки on 24-Мрт-03, 16:31  (MSK)
>Народ помогите пл3!
>у меня возникают траблы при написании модулей для ядра (2.4.18)
>под Линукс, а именно когда я включаю в код модуля заголовочный
>файл <linux/fs.h> (ниже приведен пример модуля):
>
>#define MODULE
>#define __KERNEL__
>#include <linux/kernel.h>
>#include <linux/module.h>
>#include <linux/fs.h> //!!!!!!!!!!!!!!
>int init_module()
>{
>  printk ("GOOD\n");
>  return 0;
>}
>
>при его компиляции выводяться ошибки
>
># gcc -c m.o m.c
>In file included from /usr/include/linux/affs_fs_i.h:5,
>            
>     from /usr/include/linux/fs.h:296,
>            
>     from m.c:5:
>/usr/include/linux/time.h:9: redefinition of `struct timespec'
>/usr/include/linux/time.h:88: redefinition of `struct timeval'
>/usr/include/linux/time.h:90: parse error before `suseconds_t'
>/usr/include/linux/time.h:90: warning: no semicolon at end of struct or union
>In file included from /usr/include/linux/fs.h:298,
>            
>     from m.c:7:
>/usr/include/linux/efs_fs_i.h:13: parse error before `efs_ino_t'
>/usr/include/linux/efs_fs_i.h:13: warning: data definition has no type or storage class
>/usr/include/linux/efs_fs_i.h:48: parse error before `uint32_t'
>/usr/include/linux/efs_fs_i.h:48: warning: no semicolon at end of struct or union
>/usr/include/linux/efs_fs_i.h:56: parse error before `}'
>In file included from /usr/include/linux/coda_fs_i.h:14,
>            
>     from /usr/include/linux/fs.h:299,
>            
>     from m.c:7:
>/usr/include/linux/coda.h:109: warning: redefinition of `u_quad_t'
>/usr/include/sys/types.h:38: warning: `u_quad_t' previously declared here
>
>А если написать простую программу с использованием <linux/fs.h> то она компилируеться без проблем (модуль без нее тоже нормально работает).
>Поэтому может ктото подсказать кк мне можно заюзать в модуле <linux/fs.h>

Ты не указал компилятору, где искать fs.h.
Скомпилируй модуль командой

gcc -c -O2 -I$(LINUX)/include m.c

где $(LINUX) - каталог с исходниками ядра, как правило /usr/src/linux
-O2 - флаг оптимизации.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "LKM & linux/fs.h"
Сообщение от Bob emailИскать по авторуВ закладки on 24-Мрт-03, 16:52  (MSK)
>Народ помогите пл3!
>у меня возникают траблы при написании модулей для ядра (2.4.18)
>под Линукс, а именно когда я включаю в код модуля заголовочный
>файл <linux/fs.h> (ниже приведен пример модуля):
>
>#define MODULE
>#define __KERNEL__
>#include <linux/kernel.h>
>#include <linux/module.h>
>#include <linux/fs.h> //!!!!!!!!!!!!!!
>int init_module()
>{
>  printk ("GOOD\n");
>  return 0;
>}
>
>при его компиляции выводяться ошибки
>
># gcc -c m.o m.c
>In file included from /usr/include/linux/affs_fs_i.h:5,
>            
>     from /usr/include/linux/fs.h:296,
>            
>     from m.c:5:
>/usr/include/linux/time.h:9: redefinition of `struct timespec'
>/usr/include/linux/time.h:88: redefinition of `struct timeval'
>/usr/include/linux/time.h:90: parse error before `suseconds_t'
>/usr/include/linux/time.h:90: warning: no semicolon at end of struct or union
>In file included from /usr/include/linux/fs.h:298,
>            
>     from m.c:7:
>/usr/include/linux/efs_fs_i.h:13: parse error before `efs_ino_t'
>/usr/include/linux/efs_fs_i.h:13: warning: data definition has no type or storage class
>/usr/include/linux/efs_fs_i.h:48: parse error before `uint32_t'
>/usr/include/linux/efs_fs_i.h:48: warning: no semicolon at end of struct or union
>/usr/include/linux/efs_fs_i.h:56: parse error before `}'
>In file included from /usr/include/linux/coda_fs_i.h:14,
>            
>     from /usr/include/linux/fs.h:299,
>            
>     from m.c:7:
>/usr/include/linux/coda.h:109: warning: redefinition of `u_quad_t'
>/usr/include/sys/types.h:38: warning: `u_quad_t' previously declared here
>
>А если написать простую программу с использованием <linux/fs.h> то она компилируеться без проблем (модуль без нее тоже нормально работает).
>Поэтому может ктото подсказать кк мне можно заюзать в модуле <linux/fs.h>


Скомпилируй командой
gcc -c -O2 -I$(linux)/include m.c
где $(linux) - каталог с исходниками ядра, как правило /usr/src/linux

Кстати, какие-то глюки на форуме. Второй раз ответ отправляю.
В первом я немного схалтурил. Опция -I нужна, если в модуль включаешь <linux/kernel.h>.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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