Bonjour à tous. J'avance dans ma création d'un driver pour caméras USB. J'utilise maintenant le mot driver car je suis obligé de faire un module afin d'utiliser :
/usr/src/linux-2.4.20-8/drivers/udb/usb.h
..bref !
J'ai donc pris comme exemple le fichier usb-skeleton.c contenu dans ce même répertoire. Je compile avec :
gcc -O -Wall -D__KERNEL__ -DMODULES -I/usr/src/linux-2.4.20-8/include -c -o usbcam.o usbcam.c
Ca passe nickel sauf que lorsque je fais : insmod ./usbcam.o, il me dit :
usbcam.o : couldn't find the kernel version the module was compiled for
Pourtant, j'ai bien rajouté dans mon fichier usbcam.c (ex usb-skeleton.c), la ligne :
#include <linux/version.h>
J'ai même essayé en copiant directement :
#define UTS_RELEASE "2.4.20-8"
#define LINUX_VERSION_CODE 132116
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
dans mon fichier usbcam.c ... mais ca change rien
Avez-vous une idée de ce qui me manque ? Dois-je utiliser la macro KERNEL_VERSION(a,b,c) dans mon code pour définir la version du kernel ... ou est-ce simplement pour effectuer différents tests du style :
#if LINUX_VERSION_CODE > KERNEL(2,4,20) ...
Merci d'avance pour votre aide !