neue Syscalls implementieren

K

KussA

Hallo Leute,

ich muss für ein Projekt Daten aus dem PCB auslesen und auf der Konsole ausgeben.

Mein Ansatz war jetzt einen neuen Syscall zu implementieren um damit auf meine Funktiion zugreifen zu können.

Leider wird aber die Funktion nicht angenommen und es kommt folgende Fehlermeldung beim komplieren mit gcc:


In file included from user-workingset.c:1:
/usr/include/sys/workingset-user.h: In Funktion workingset:
/usr/include/sys/workingset-user.h:3: Fehler: __NR_workingset nicht deklariert (erste Benutzung in dieser Funktion)
/usr/include/sys/workingset-user.h:3: Fehler: (Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt
/usr/include/sys/workingset-user.h:3: Fehler: für jede Funktion in der er auftritt.)





Folgende Schritte habe ich schon unternommen:

1. syscall_table.S erweitert
2. unistd.h __NR_funktion mit Nummer eingetragen
3. unistd.h max Syscalls erhöht
4. eine .c und eine .h Datei für meine Funktion erstellt
5. dateien in die ordner kopiert und Makefile modifiziert
6. eigene .h datei mit _syscall# prototyp erstellt

Ich benutze den Kernel 2.6.15

Aber irgendwie will der nicht...

Könnt ihr mir da helfen?
Oder habt ihr ein Patentrezept um neue syscalls zu implementieren?
 
Das kann auch nicht funktionieren. Du kannst nicht einfach einen neuen Funktionscode implementieren, der vom Kernel nicht verstanden wird. Du müsstest den Funktionscode auch entsprechend im Kernel umsetzen. Siehe dazu auch http://www.linuxjournal.com/article/3326 <- 5. Treffer bei Google bei der Suche nach 'implement syscall linux'. :rolleyes:
 

Ähnliche Themen

Prozesskommunikation mit PIPES - wie funktioniert das?

OpenCV Installieren

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

Matpack installation

kernel-bau nicht aus /usr/src heraus ! uClinux

Zurück
Oben