Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/04/2009, à 17:25

ikoria

Erreur Makefile pour nouveau module

Bien à vous amis tuxien ^^

Je suis sur Ubuntu 8.10.( kernel : 2.6.27-11-generic).

J'essaye de développer un nouveau module pour un future driver, en suivant le tutoriel de ROUX BENJAMIN (pdf sur ce même site ^^).

Je pose mes codes:

Module.C

#include <linux/module.h>
#include <linux/init.h>
#include <linux/fs.h>

MODULE_AUTHOR("skyrunner");
MODULE_DESCRIPTION("premier driver");
MODULE_SUPPORTED_DEVICE("none");
MODULE_LICENSE("none");


static int major = 254;

module_param(major, int, 0);
MODULE_PARM_DESC(major, "major number");

/*************************************************************
*
*Implémentation des appels systemes open, close, read, write
*
**************************************************************/

static ssize_t my_read_function(struct file *file, char *buf, size_t count, loff_t *ppos)
{
	printk(KERN_DEBUG "read()\n");
	return 0;
}

static ssize_t my_write_function(struct file *file, const char *buf, size_t count, loff_t *ppos)
{
	printk(KERN_DEBUG "write()\n");
	return 0;
}

static int my_open_function(struct inode *inode, struct file *file)
{
	printk(KERN_DEBUG "open()\n");
	return 0;
}

static int my_release_function(struct inode *inode, struct file *file)
{
	printk(KERN_DEBUG "close()\n");
	return 0;
}


//!!!!!!!!!!!!!STRUCTURE DE POINTEURS DE FONCTIONS!!!!!!!!!!!!

static struct file_operations fops =
{
	read	:	my_read_function,
	write	:	my_write_function,
	open	:	my_open_function,
	release	:	my_release_function
};


/*************************************************************
*
*Implémentation des appels systemes init_module et exit_module
*
**************************************************************/

static int __init mon_module_init(void)
{
	int ret;
	ret = register_chrdev(major, "mydriver", &fops);

	if (ret < 0)
	{
		printk(KERN_WARNING "Probleme sur le major\n");
		return ret;	
	}
	
	printk(KERN_DEBUG "mydriver chargé sans probleme\n");
	return 0;
}

static void __exit mon_module_cleanup(void)
{
	int ret;
	ret = unregister_chrdev(major, "mydriver");

	if (ret < 0)
	{
		printk(KERN_WARNING "Probleme unregister\n");
			
	}
	
	printk(KERN_DEBUG "mydriver déchargé sans pobleme\n");
	
}


/*************************************************************
*
*APPLET AUTOMATIQUE de MOUNT/UNMOUNT du module
*
**************************************************************/

module_init(mon_module_init);
module_exit(mon_module_cleanup);

Makefile

obj-m += module.o
defaut:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

Je compile sous le terminal et j'ai le code erreur suivant:

ikoria@iloria:~/Bureau/module2_3$ make
make -C /lib/modules/2.6.27-11-generic/build M=/home/ikoria/Bureau/module2_3 modules
make[1]: entrant dans le répertoire « /usr/src/linux-headers-2.6.27-11-generic »
  CC [M]  /home/ikoria/Bureau/module2_3/module.o
/home/ikoria/Bureau/module2_3/module.c: In function ‘mon_module_cleanup’:
/home/ikoria/Bureau/module2_3/module.c:82: erreur: valeur void n'a pas été ignorée comme elle aurait dû l'être
make[2]: *** [/home/ikoria/Bureau/module2_3/module.o] Erreur 1
make[1]: *** [_module_/home/ikoria/Bureau/module2_3] Erreur 2
make[1]: quittant le répertoire « /usr/src/linux-headers-2.6.27-11-generic »
make: *** [defaut] Erreur 2

Ne voyant pas du tout l'origine du défaut, je fais appel à vos lumières pour éclairer ma route ^^

Par avance merci smile

Iko

Hors ligne

#2 Le 10/04/2009, à 21:14

telliam

Re : Erreur Makefile pour nouveau module

c'est simple :
unregister_chrdev retourne un void pas un int


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#3 Le 03/02/2016, à 12:32

tuxonrub

Re : Erreur Makefile pour nouveau module

Sauf que le man dit qu'il renvoie un int
http://www.delafond.org/traducmanfr/man … dev.9.html

Et donc que faire ? car le supprimer n'est que contourner le problème qui est spécialiste des driver?

de plus le numero de major ici fixé a 254 ne permet pas de charger le module ...

A suivre .. merci

Hors ligne

#4 Le 05/02/2016, à 22:27

telliam

Re : Erreur Makefile pour nouveau module

ça c'est du déterrage de sujet !!! smile


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne