Interrupt.h sous linux

Signaler
Messages postés
2
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
25 décembre 2004
-
Messages postés
232
Date d'inscription
vendredi 9 janvier 2004
Statut
Membre
Dernière intervention
8 janvier 2005
-
Salut tous le monde
avez vous deja utilisé la biblio interrupt.h ???
j'ai une machine:
p4 2.8GHZ
80 Go Hitachi
256 DDR

j'essaie de concevoir un prtit prog qui fera appel aux interruption clavier sous linux, mais dès mes premiere ligne de code je ramasse des erreurs !!!!!!!!!!

voila mon code:

#define MODULE
#include <linux/module.h>
#include
#include <linux/interrupt.h>
#include <linux/sched.h>

int init_module (void) /* Loads a module in the kernel */
{
printk("Hello kernel n");
return 0;
}

void cleanup_module(void) /* Removes module from kernel */
{
printk("GoodBye Kerneln");
}

lors de ma compilation pour generer le .o je ramasse ça:
Dans le fichier inclus à partir de /usr/include/linux/interrupt.h:10,
à partir de e1.c:4:
/usr/include/asm/bitops.h:327:2: attention : #warning This includefile is not available on all architectures.
/usr/include/asm/bitops.h:328:2: attention : #warning Using kernel headers in userspace: atomicity not guaranteed
Dans le fichier inclus à partir de e1.c:4:
/usr/include/linux/interrupt.h:44:25: asm/hardirq.h : Aucun fichier ou répertoire de ce type
/usr/include/linux/interrupt.h:45:25: asm/softirq.h : Aucun fichier ou répertoire de ce type
In file included from e1.c:4:
/usr/include/linux/interrupt.h:73: error: erreur de syntaxe before "void"
/usr/include/linux/interrupt.h:77: error: erreur de syntaxe before '(' token
/usr/include/linux/interrupt.h:78: error: erreur de syntaxe before '(' token
/usr/include/linux/interrupt.h:106: error: erreur de syntaxe before "atomic_t"
/usr/include/linux/interrupt.h:109: error: erreur de syntaxe before '}' token
/usr/include/linux/interrupt.h:127: error: `CONFIG_X86_L1_CACHE_SHIFT' undeclared here (not in a function)
/usr/include/linux/interrupt.h:127: error: requested alignment is not a constant
/usr/include/linux/interrupt.h:154: error: erreur de syntaxe before '(' token
/usr/include/linux/interrupt.h: Dans la fonction « tasklet_schedule »:
/usr/include/linux/interrupt.h:158: error: dereferencing pointer to incomplete type
/usr/include/linux/interrupt.h: Hors de toute fonction :
/usr/include/linux/interrupt.h:162: error: erreur de syntaxe before '(' token
/usr/include/linux/interrupt.h: Dans la fonction « tasklet_hi_schedule »:
/usr/include/linux/interrupt.h:166: error: dereferencing pointer to incomplete type
/usr/include/linux/interrupt.h: Dans la fonction « tasklet_disable_nosync »:
/usr/include/linux/interrupt.h:173: error: dereferencing pointer to incomplete type
/usr/include/linux/interrupt.h: Dans la fonction « tasklet_enable »:
/usr/include/linux/interrupt.h:187: error: dereferencing pointer to incomplete type
/usr/include/linux/interrupt.h: Dans la fonction « tasklet_hi_enable »:
/usr/include/linux/interrupt.h:193: error: dereferencing pointer to incomplete type
/usr/include/linux/interrupt.h: Hors de toute fonction :
/usr/include/linux/interrupt.h:224: error: erreur de syntaxe before "global_bh_lock"
/usr/include/linux/interrupt.h: Dans la fonction « mark_bh »:
/usr/include/linux/interrupt.h:228: error: invalid use of undefined type `struct tasklet_struct'

alors quelqu'un aurrait il une idée sur la procedure a suivre pour pouvoir utilisé la biblio <linux/interrupt.h> ou bien toute autre biblio qui me permetrer de manipuler des interruption, ou directive de compilation

merci d'avance.

2 réponses

Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
11
pourquoi vouloir utilisé interrupt.h dans ton programme en C? les interruptions pour ce que je saches sont utilisé en assembleur... voici un code équivalent a celui que tu as donnés plus haut:

#define MODULE
#include <stdio.h>

int init_module (void) /* Loads a module in the kernel */
{
printf("Hello kernel n");
return 0;
}

void cleanup_module(void) /* Removes module from kernel */
{
printf("GoodBye Kerneln");
} 

Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
232
Date d'inscription
vendredi 9 janvier 2004
Statut
Membre
Dernière intervention
8 janvier 2005

quel noyau 2.4, 2.6 ?
Le probleme vient surement de ta façon de le compiler.
Comment fais-tu ? tu es root ?
LordBob > dans le kernel, on programme en C, et quelques passages en assembleur (inline). De plus en mode noyau, la librairie standard C est inaccessible, on utilise la librairie kernel.

@+