Hallo,
Ich versuche gerade von einem Kernel-Modul aus den Parallelport anzusteuern und verwende dafür die Funktionen ioperm(), inb() und outb(). Beim Laden des Modules bringt insmod aber folgende Fehler:
testmod.o: unsolved symbol ioperm testmod.o: unsolved symbol __outb testmod.o: unsolved symbol __outbc
Es scheint als wären die Funktionen innerhalb des Kernels nicht bekannt...
Weiß einer von euch, welche Funktion man stattdessen verwenden kann???
=====
__________________________________________________________________ Do You Yahoo!? Gesendet von Yahoo! Mail - http://mail.yahoo.de Yahoo! Auktionen - gleich ausprobieren - http://auktionen.yahoo.de
On Tue, Nov 16, 1999 at 01:44:51PM +0100, Tobias Koenig wrote:
Ich versuche gerade von einem Kernel-Modul aus den Parallelport anzusteuern und verwende dafuer die Funktionen ioperm(), inb() und outb(). Beim Laden des Modules bringt insmod aber folgende Fehler:
testmod.o: unsolved symbol ioperm testmod.o: unsolved symbol __outb testmod.o: unsolved symbol __outbc
gcc -O1
ist Dein Freund.
Torsten
On Tue, Nov 16, 1999 at 01:44:51PM +0100, Tobias König wrote:
Hallo,
Ich versuche gerade von einem Kernel-Modul aus den Parallelport anzusteuern und verwende dafür die Funktionen ioperm(), inb() und outb(). Beim Laden des Modules bringt insmod aber folgende Fehler:
testmod.o: unsolved symbol ioperm testmod.o: unsolved symbol __outb testmod.o: unsolved symbol __outbc
Es scheint als wären die Funktionen innerhalb des Kernels nicht bekannt...
Ich glaube man musste bei gcc mit Optimierung uerbersetzen (also z.B. -O1). Soweit ich weis, braucht man im Kernle den oder die Ports, auf die man zugreifen moechte, nicht mit ioperm freischalten. Da bin ich mir aber nicht ganz sicher.
Marcus
On Tue, Nov 16, 1999 at 09:06:51PM +0100, Marcus Obst wrote:
Ich glaube man musste bei gcc mit Optimierung uerbersetzen (also z.B. -O1).
Ich glaub' es nicht! Gab es bei Dir den 'kernel hackers guide' als Gute-Nacht-Geschichte? ;-)
Soweit ich weis, braucht man im Kernle den oder die Ports, auf die man zugreifen moechte, nicht mit ioperm freischalten.
Stimmt, aber irgendeine *reserve*-Funktion wird stattdessen verwendet, oder nicht?
Torsten
On Tue, Nov 16, 1999 at 10:17:45PM +0100, Torsten Werner wrote: : Ich glaub' es nicht! Gab es bei Dir den 'kernel hackers guide' als : Gute-Nacht-Geschichte? ;-)
In seinem Alter ;) da gibt's doch noch den Bummi ... Nee, im Ernst, was denkst Du, wer z.Z. die Arbeit bei mir in der Firma macht, waehrenddessen ich hier im Norden arbeitsunwillige und kranke Praktikanten betreue :)
: Stimmt, aber irgendeine *reserve*-Funktion wird stattdessen verwendet, : oder nicht?
Das ist m.W. um festzustellen, ob schon jemand anders die Ports hat, im Prinzip kann man, soweit ich mich erinnere, voellig willkuerlich auf die Ports zugreifen, solange man Kernel ist.
Heiko
On Tue, Nov 16, 1999 at 01:44:51PM +0100, Tobias König wrote: : : Ich versuche gerade von einem Kernel-Modul aus den : Parallelport anzusteuern und verwende dafür die : Funktionen ioperm(), inb() und outb(). : Beim Laden des Modules bringt insmod aber folgende : Fehler: : : testmod.o: unsolved symbol ioperm : testmod.o: unsolved symbol __outb : testmod.o: unsolved symbol __outbc : : Es scheint als wären die Funktionen innerhalb des : Kernels nicht bekannt...
Es gab mal was, dass bestimmte Dinge nur funktioniert haben, wenn -O2 bei den Compilerflags dabei ist. (Ist aber ca. 2 Jahre alt dieses Wissen.)
Heiko
Am Tue, 16.Nov 1999 um 01:44 schrieb Tobias König:
Hallo,
Ich versuche gerade von einem Kernel-Modul aus den Parallelport anzusteuern und verwende dafür die Funktionen ioperm(), inb() und outb(). Beim Laden des Modules bringt insmod aber folgende Fehler:
testmod.o: unsolved symbol ioperm
Bereich testen und reservieren: if (check_region(BASE,(BASE == 0x3bc)? 3 : 8) < 0 ) { return -ENODEV; } else { request_region(BASE,(BASE == 0x3bc)? 3 : 8, "test");
testmod.o: unsolved symbol __outb testmod.o: unsolved symbol __outbc
Mein Makefile: ------------ KERNEL_LOCATION=/usr/src/linux M_OBJS = test.o EXTRA_CFLAGS = -DVERIFY_HEADERS -Wno-unused
here: DIR=`pwd`; (cd $(KERNEL_LOCATION); make SUBDIRS=$$DIR modules)
include $(KERNEL_LOCATION)/Rules.make
Damit werden alle Kerneleinstellungen (CPU, Modversions, ..) beachtet.
Konrad Riedel
lug-dd@mailman.schlittermann.de