2010-12-15 161 views
0

Salut, j'ai plusieurs questions. Je serai heureux si quelqu'un va répondre :) Je suis en train de compiler le pilote linux pour un module lcd 16X2. J'essaye d'utiliser dans mon code le struct file_operations(); 1. Je remarque par d'autres codes qu'ils ajoutent #ifdef KERNEL21 à compiler. J'ai essayé et j'ai eu beaucoup moins d'erreurs. pourquoi c'est comme ça. Im utilisant le noyau 2.6.18-128.4.1.el5 .. soo dois-je changer pour #ifdef KERNEL26? Je reçois plus d'erreurs si j'essaie de le faire.#ifdef KERNEL2x & file_operations (.., .., .., ..), fonction ssize_t, printk()

2. Certains des arguments file_operation ont pour fonction rtuen ssize_t. qu'est-ce que cela signifie? dans tout autre code eample il y a aussi "#ifdef KERNEL21" mais je reçois une erreur: "lcd_module.c: 74: Erreur: identifiant prévu ou ג (ג avant ג {ג jeton"

3.last qustion, Je travaillais avec un exemple Makfile et je reçois .o fichier et non .ko que l'utilisation de im à travailler avec. comment puis-je exécuter le module avec le fichier .o?

merci à l'avance :)

Répondre

1

ssize_t est Il est essentiellement un size_t signé et est largement utilisé dans le noyau car les valeurs inférieures à zéro sont utilisées pour renvoyer des erreurs dans les endroits où une taille non signée est attendue. Par exemple, l'opération de fichier read doit renvoyer le nombre d'octets lus, mais en cas de mémoire insuffisante, vous pouvez renvoyer -ENOMEM et errno sera défini correctement dans le programme espace utilisateur.

Avec le noyau 2.6 que vous êtes censé utiliser le Makefile du paquet kernel-headers plutôt que d'un fait à la main un, et il produit un fichier .ko plutôt que d'un .o. Plus de lecture ici: http://www.cyberciti.biz/tips/build-linux-kernel-module-against-installed-kernel-source-tree.html

+0

merci pour votre réponse ... – azulay7