2010-12-15 6 views
0

Hallo ich habe mehrere Fragen. Ich werde mich freuen, wenn jemand antworten wird :) Ich versuche, Linux-Treiber für ein lcd 16X2-Modul zu kompilieren. Ich versuche in meinem Code die Struktur file_operations() zu verwenden; 1. Ich merke durch andere Codes, dass sie #ifdef KERNEL21 hinzufügen, um zu kompilieren. Ich habe versucht, und ich habe viel weniger Fehler. warum es so funktioniert. Ich benutze Kernel 2.6.18-128.4.1.el5 .. Soo muss ich auf #ifdef KERNEL26 ändern? Ich bekomme mehr Fehler, wenn ich versuche, soo zu tun.#ifdef KERNEL2x & file_operations (.., .., .., ..), ssize_t Funktion, printk()

2. Einige der file_operation Argumente sind Funktion der rtuen ssize_t. was bedeutet das? in anderen Code eample dort "#ifdef KERNEL21" auch ist, aber immer noch bekomme ich einen Fehler: "lcd_module.c: 74: Fehler: expected Bezeichner oder ג (ג vor ג {ג Token"

3.last qustion, ich mit einem Makfile Beispiel gearbeitet, und ich bekomme .o-Datei und nicht, dass im Gebrauch .ko mit zu arbeiten. wie führe ich das Modul mit der .o-Datei?

danken auf Voraus :)

Antwort

1

ssize_t ist im Grunde eine signierte size_t und ist weit verbreitet im Kernel verwendet, da Werte von weniger als Null verwendet werden, um Fehler an Orten zurückzugeben, wo eine Größe ohne Vorzeichen erwartet wird. Zum Beispiel wird erwartet, dass die read Dateioperation die Anzahl der gelesenen Bytes zurückgibt, aber im Falle von nicht ausreichendem Speicher können Sie -ENOMEM zurückgeben und errno wird entsprechend im User-Space-Programm eingestellt.

Mit dem 2.6-Kernel Sie sollen das Makefile aus dem kernel-headers Paket verwenden, anstatt ein handgearbeiteten ein, und es erzeugt eine .ko Datei statt einem .o. Weitere Informationen hier: http://www.cyberciti.biz/tips/build-linux-kernel-module-against-installed-kernel-source-tree.html

+0

danke für Ihre Antwort ... – azulay7

Verwandte Themen