Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

dirver linux

18 réponses
Avatar
remy
bonjour

en premier je vais profiter de cette question pour savoir
s'il n'y a pas quelque part un groupe francophile pour poser des questions
sur la programmation de drivers

et ensuite la the question je n'arrive pas à introduire la bibliothèque

#include </usr/include/stdlib.h>
pour utiliser system("beep");
dans un driver en cours de fabrication

en gros et pour faire simple le but du jeu
faire une allocation dynamique du numéro majeur( cela fonctionne déjà)
pour ensuite créer le fichier qui va bien (cela ne fct pas encore )

et dans la foulée si vous savez comment je peux récupérer
le numéro majeur qd il y a eu une allocation dynamique je suis preneur
pour un driver bien sûr parce que pour l'instant

register_chrdev(0, "mydriver", &fops);

unregister_chrdev( ?????, "mydriver");



ps mon c est rouillé donc on y va doucement
remy

8 réponses

1 2
Avatar
remy

http://tldp.org/LDP/lkmpg/2.6/html/index.html

regarder chardev.c




Zut, il utilise des fonctions obsolètes. Voir plutôt :
http://lwn.net/Kernel/LDD3/
Chapitre 3.

merci je garde le lien sous la main

mais il parle encore de script avec mkmod pour la création du fichier
spécial voir chapitre 6 remarque faite après un parcours à grands coups
de ctrl f donc ne pas crier sur moi
dans tous les cas merci

remy


Avatar
remy


ah non chez moi cela passe la compilation sans erreur j'avais mis le code
"litigieux "en commentaire dans


http://cjoint.com/data/fBkEZgllY6.htm

Avatar
Eric Levenez
Le 27/05/08 10:21, dans <g1gd78$ik8$, « remy »
a écrit :

ah non chez moi cela passe la compilation sans erreur j'avais mis le code
"litigieux "en commentaire


Ça ne passait pas chez toi vu qu'il y avait des warnings (c'était tes
warnings que j'ai reportés, et pas les miens vu que je n'ai pas testé ton
code). Et ce n'est pas parce qu'il n'y a pas d'erreurs que ça passe. Il peut
y avoir des warnings affichés ou non. Cela dépend aussi de tes options de
compilation.

Il faut ajouter "linux/devfs_fs_kernel" et peut-être d'autres includes.


là tu viens de mettre le doigt sur mon problème
il ne trouve pas le fichier d'en tête
c'est bizarre les retours d'erreurs de type


attention : implicit declaration of function «devfs_register_chrdev"

va falloir que je me remette au gout du jour

bon bref le même code met
#include <linux/devfs_fs_kernel.h>

:~/Desktop/Mydriver$ make
make -C /lib/modules/`uname -r`/build/ M=/home/remy/Desktop/Mydriver modules
make[1]: entrant dans le répertoire «
/usr/src/linux-headers-2.6.20-16-generic »
CC [M] /home/remy/Desktop/Mydriver/mydriver.o
/home/remy/Desktop/Mydriver/mydriver.c:9:35: erreur:
linux/devfs_fs_kernel.h : Aucun fichier ou répertoire de ce type


Regarde dans tes options de compilation pour avoir le chemin vers les
includes du noyau. Aucune idée si la façon dont tu compiles est la bonne ou
non car je ne fais pas comme cela du tout.

make[2]: *** [/home/remy/Desktop/Mydriver/mydriver.o] Erreur 1
make[1]: *** [_module_/home/remy/Desktop/Mydriver] Erreur 2
make[1]: quittant le répertoire « /usr/src/linux-headers-2.6.20-16-generic »
make: *** [modules] Erreur 2
:~/Desktop/Mydriver$

je dois avoir un truc à la con bête comme chou
mais quoi ?


Déjà tes options de compilation...

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
remy
el.h : Aucun fichier ou répertoire de ce type

Regarde dans tes options de compilation pour avoir le chemin vers les
includes du noyau. Aucune idée si la façon dont tu compiles est la bonne ou
non car je ne fais pas comme cela du tout.





je pense que c'est pire que ça

...
:/usr$ find -name cdev.h
./src/linux-2.6.20.16/include/linux/cdev.h
./src/linux-headers-2.6.20/include/linux/cdev.h
./src/linux-2.6.20/include/linux/cdev.h
...
:/usr$ find -name devfs_fs_kernel.h
:/usr$

je n'ai pas le fichier qui va bien
devfs_fs_kernel.h
et il n'y a aucun fichier qui contient la chaîne "devfs_mk_cdev"

cela sans la macro qui a changé du tout au tout
sinon tu es sous quelle version du noyau

et les options de compilation elles sont dans le makefile
en gros par défaut

Avatar
Eric Levenez
Le 27/05/08 14:08, dans <g1gqfs$pb0$, « remy »
a écrit :

je pense que c'est pire que ça

:/usr$ find -name devfs_fs_kernel.h
:/usr$


Ok. Je viens de vérifier. Encore un coup de Linus :-<

Cette fonction a disparu du noyau et les dizaines de drivers (56 sur ma
version de Linux) qui utilisaient cette fonction dans les premières versions
du noyau 2.6 ont dû être réécrit pour faire autrement.

C'est tout à fait typique de Linux : à chaque version, sous version, ou
sous-sous version, un driver qui compilait, peut ne plus marcher ou ne plus
compiler du tout. Linus trouve sera super car il ne veut pas d'API stables.

Maintenant il faut trouver comment faire la même chose qu'avant (à condition
que Linus n'est pas aussi supprimé cette fonctionnalité tout simplement).
Pour l'instant je ne vais pas chercher la réponse car je n'en ai pas besoin
pour mon driver, mais il faudra bien que le fasse un jour ou l'autre.

Pour ton driver, je réitère mon conseil : demande sur un groupe dédié à
Linux et pas sur ce NG dédié au C standard.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Avatar
remy
Le 27/05/08 14:08, dans <g1gqfs$pb0$, « remy »

je pense que c'est pire que ça

:/usr$ find -name devfs_fs_kernel.h
:/usr$


Ok. Je viens de vérifier. Encore un coup de Linus :-<

Cette fonction a disparu du noyau et les dizaines de drivers (56 sur ma
version de Linux) qui utilisaient cette fonction dans les premières versions
du noyau 2.6 ont dû être réécrit pour faire autrement.

C'est tout à fait typique de Linux : à chaque version, sous version, ou
sous-sous version, un driver qui compilait, peut ne plus marcher ou ne plus
compiler du tout. Linus trouve sera super car il ne veut pas d'API stables.

Maintenant il faut trouver comment faire la même chose qu'avant (à condition
que Linus n'est pas aussi supprimé cette fonctionnalité tout simplement).
Pour l'instant je ne vais pas chercher la réponse car je n'en ai pas besoin
pour mon driver, mais il faudra bien que le fasse un jour ou l'autre.



je teste la semaine prochaine j'ai pas trop le temps because boulot
http://doc.ubuntu-fr.org/udev



Pour ton driver, je réitère mon conseil : demande sur un groupe dédié à
Linux et pas sur ce NG dédié au C standard.

ok



Avatar
remy
Le 27/05/08 14:08, dans <g1gqfs$pb0$, « remy »

je pense que c'est pire que ça

:/usr$ find -name devfs_fs_kernel.h
:/usr$


Ok. Je viens de vérifier. Encore un coup de Linus :-<

Cette fonction a disparu du noyau et les dizaines de drivers (56 sur ma
version de Linux) qui utilisaient cette fonction dans les premières versions
du noyau 2.6 ont dû être réécrit pour faire autrement.

C'est tout à fait typique de Linux : à chaque version, sous version, ou
sous-sous version, un driver qui compilait, peut ne plus marcher ou ne plus
compiler du tout. Linus trouve sera super car il ne veut pas d'API stables.



vivement que quelques notions d'objets intégrent le noyau
comme cela ils pourront faire tout se qu'ils veulent tout en gardant
une certaine compatibilité ascendante
}
Maintenant il faut trouver comment faire la même chose qu'avant (à condition
que Linus n'est pas aussi supprimé cette fonctionnalité tout simplement).
Pour l'instant je ne vais pas chercher la réponse car je n'en ai pas besoin
pour mon driver, mais il faudra bien que le fasse un jour ou l'autre.



tout se que j'ai trouvé fait référence à l'usb
si tu trouves quelque chose je suis preneur
add email valide

rien vu sur http://kernelnewbies.org/Linux_2_6_20


Avatar
Eric Levenez
Le 28/05/08 16:50, dans <g1jobm$1bt$, « remy »
a écrit :

vivement que quelques notions d'objets intégrent le noyau
comme cela ils pourront faire tout se qu'ils veulent tout en gardant
une certaine compatibilité ascendante


Ceci est en contradiction totale avec ce que veut Linus : "surtout ne pas
avoir de compatibilité entre versions car cela bride l'évolutivité" (en
substance). C'est bien sûr idiot, mais c'est comme cela hélas, et les
programmeurs sur Linux en font les frais tous les jours.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

1 2