Hallo,
wie lautet der GetLastError-Ersatz unter Linux - greift da perror?
Der Grund ist, dass unter Windows IowKitRead / IowKitWrite auf Fehler abgefragt werden können, was unter Linux natürlich auch sinnvoll ist.
Die Doku schweigt sich aus...
Ciao
Matthias
P.S. Da ich den selben Code unter Windows wie Linux nutzen möchte, will ich unsere bisherige linuxspezifische Lösung aufgeben, die mit IOCTLs und Dateien arbeitet.
iowkit: GetLastError-Ersatz für Linux
Moderator: Guido Körber
Hallo Matthias,
errno wird bei Fehlern vom Treiber gesetzt. Perror sollte also auch mit der library funktionieren. Zumindest bzgl. iowkit_read und iowkit_write sollte die Auswertung von errno möglich sein.
Einfach mal einen Test schreiben?.
Das Abziehen eines IOWarrior sollte bei einem nachfolgenden lesen mit ENODEV (= 19 in errno-base) angezeigt werden.
Die verschiedenen Fehlercodes
(siehe /usr/src/linux/include/asm-generic/errno-base.h )
sind in der Datei IOWarrior-Howto.txt im Kernel-Treiber-Verzeichnis den einzelnen Funktionen zugehörig aufgelistet.
Eberhard
errno wird bei Fehlern vom Treiber gesetzt. Perror sollte also auch mit der library funktionieren. Zumindest bzgl. iowkit_read und iowkit_write sollte die Auswertung von errno möglich sein.
Einfach mal einen Test schreiben?.
Das Abziehen eines IOWarrior sollte bei einem nachfolgenden lesen mit ENODEV (= 19 in errno-base) angezeigt werden.
Die verschiedenen Fehlercodes
(siehe /usr/src/linux/include/asm-generic/errno-base.h )
sind in der Datei IOWarrior-Howto.txt im Kernel-Treiber-Verzeichnis den einzelnen Funktionen zugehörig aufgelistet.
Eberhard
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
errno wird in der libiowkit 1.5 garnicht gesetzt. Das lohnt sich nicht, da die Lib (erfreulicherweise) nur ein duenner Aufsatz auf dem Treiber ist. Es werden also die normalen errno-Fehlerwerte, die der Treiber setzt, geliefert. Das sind alles File IO Fehlerwerte wie es sich fuer File IO geziemt.
Der Treiber implementiert ja nur normales File-IO fuer die IOWarrior.
Der Treiber implementiert ja nur normales File-IO fuer die IOWarrior.