Programmation de drivers sous linux en C++ [Linux C++] - Programmation
Marsh Posté le 26-02-2002 à 10:47:58
Houba houba hop :
CE livre est le compagnon indispensable du développeur de driver sous linux :
http://www.oreilly.com/catalog/linuxdrive2/
Il est intégralement dispo en ligne, mais un conseil, achete le, parceque lorsque l'on écrit un driver, on reboote pas mal (fs journalisé TRES fortement conseillé)
J'oubliais, il existe aussi en français : http://www.oreilly.fr/catalogue/pi [...] x-2ed.html
[jfdsdjhfuetppo]--Message édité par kadreg--[/jfdsdjhfuetppo]
Marsh Posté le 21-06-2002 à 15:26:54
Ou je peux consulter en ligne le livre d'O'reilly sur la conception de drivers linux ?
Cette ouvrage m'interesse grave
Marsh Posté le 21-06-2002 à 15:39:38
Ou je peux consulter en ligne le livre d'O'reilly sur la conception de drivers linux ?
http://www.xml.com/ldd/chapter/book/index.html
Cette ouvrage m'interesse grave
Achete le, lire sur écran, ça fait mal aux yeux.
Marsh Posté le 21-06-2002 à 15:47:51
oui mais ca me permet d'avoir une idée de ce qu'il y a dans le livre
tiens ca existe pas en fr (on ligne)
En fait je voudrais réaliser un driver pour mon scanner canon n676u usb
Marsh Posté le 21-06-2002 à 18:02:59
Juste un truc, les drivers c'est en C, pas en C++, hein...
Marsh Posté le 21-06-2002 à 22:02:27
kadreg a écrit a écrit : Houba houba hop : CE livre est le compagnon indispensable du développeur de driver sous linux : http://www.oreilly.com/catalog/linuxdrive2/ Il est intégralement dispo en ligne, mais un conseil, achete le, parceque lorsque l'on écrit un driver, on reboote pas mal (fs journalisé TRES fortement conseillé) J'oubliais, il existe aussi en français : http://www.oreilly.fr/catalogue/pi [...] x-2ed.html |
rebooter??? ah bon, les modules peuvent être intégré au noyau 'a chaud' pourtant
Marsh Posté le 21-06-2002 à 23:14:15
si ca t'interesse mon ecole à un contrat avec o reilly et peut en fait profiter du monde... (genre 70% de reduc.)
Marsh Posté le 21-06-2002 à 23:35:35
Oui oui je confirme on reboote souvent
On peut les loader a chaud oui ... Mais lorsque que ton module segfault, il segfault en kernel-space ! Et souvent la stabilité en prend un serieux coup ...
Marsh Posté le 21-06-2002 à 23:48:43
Ou le module qui plante pendant l'utilisation de la carte à piloter, et ensuite elle refuse la commande reset
Marsh Posté le 22-06-2002 à 01:32:07
Jar Jar a écrit a écrit : Juste un truc, les drivers c'est en C, pas en C++, hein... |
Ca dépend des OS.
Sur MacOS X les drivers c'est en c++ (un sous ensemble plus exactement) avec l'I/O kit.
Mais c'est vrai qu'avec linux c'est en C.
Marsh Posté le 23-06-2002 à 10:00:44
Verdoux a écrit a écrit : Ca dépend des OS. Sur MacOS X les drivers c'est en c++ (un sous ensemble plus exactement) avec l'I/O kit. Mais c'est vrai qu'avec linux c'est en C. |
Ben de toutes manieres une fois que c'est compilé, les deux devraient marcher non?
Marsh Posté le 23-06-2002 à 10:30:29
Ace17 a écrit a écrit : Ben de toutes manieres une fois que c'est compilé, les deux devraient marcher non? |
Je viens de faire l'essai. J'ai déclaré init_module et cleanup_module en extern "C" pour contourner le mecanisme de nommage C++ dans les .o (différent de celui du C, je le rappelle), mais j'ai quand même des problème de compilation (printk introuvable).
Qu'a cela ne tienne, je redeclare moi même printk dans mon fichier, je met une déclaration de classe, son instanciation et ça suppression, et ça compile, mais ne se charge pas :
[root@luggage modules]# /sbin/insmod helloModule.o |
Et oui, les operateurs new et delete ne sont pas définis au niveau du langage mais de la libstdc++, donc, c'est DMC pour ces deux operateurs.
Au final, j'ai reussi a compiler un module :
Code :
|
Qui m'affiche des trucs (a part le fait que ça va tainter mon kernel ) :
|
Donc a priori, on peut ecrire des drivers linux en c++, mais on n'a pas fini de se faire chier sur des conneries.
Marsh Posté le 23-06-2002 à 11:58:53
Cool ... Mais bon ... Préfère me taper du C que du C++ avec toute les connerie au quelle y faut faire gaffe pour que le module soit utilisable
D'autant que si tu commence a faire un cout << "Test". Ou a ouvrir des fichiers, ... Je me demande ce que ca fera ...
Marsh Posté le 23-06-2002 à 12:03:30
246tNt a écrit a écrit : D'autant que si tu commence a faire un cout << "Test". Ou a ouvrir des fichiers, ... Je me demande ce que ca fera ... |
La même erreur que pour new et delete. De la même façon qu'en C dans le kernel, on n'utilise pas printf. Le noyau doit être auto suffisant et ne pas faire appel à des fonctionnalités externes.
Marsh Posté le 23-06-2002 à 22:29:21
kadreg a écrit a écrit : La même erreur que pour new et delete. De la même façon qu'en C dans le kernel, on n'utilise pas printf. Le noyau doit être auto suffisant et ne pas faire appel à des fonctionnalités externes. |
Ou alors il faut les implémenter en dur dedans, et ça prend de la place...
Marsh Posté le 26-02-2002 à 09:06:28
Je cherche la commande pour compiler un driver sous linux avec gcc, ou un site expliquant clairement la programmation des drivers sous linux.
Je dois réaliser un driver pour une carte PCI tout ou rien
Merci
---------------
Hey you hummy, we are coming for ya!