4 Stimmen

Wie finde ich Systemaufrufimplementierungen in Linux/Android 2.6.29?

Ich möchte einige Systemaufrufe für Trace-Zwecke modifizieren. Konkret möchte ich, dass beim Aufruf eines Systemaufrufs open einige Nachrichten ausgegeben werden.

Ich habe im Internet und im Code nachgeschaut und open.c im Verzeichnis kernel/goldfish/fs/ gefunden. Und es gibt viele Funktionen in dieser Datei. Wie kann ich herausfinden, welche Funktion genau aufgerufen wird. Ich könnte einige printk Aufrufe in all diesen Funktionen schreiben, um es herauszufinden, aber ich muss es auch für andere Systemaufrufe machen.

Daher habe ich ein paar Fragen,

1) Wie kann man die Implementierungsdetails von Systemaufrufen am besten finden?

2) Ich verwende Kernel 2.6.29 (goldfish-Android). Sind die Implementierungen von Systemaufrufen in verschiedenen Kernelversionen unterschiedlich?

3) strace sagt mir, dass die Systemaufrufe msgget, msgrecv und 'SYS_24' gemacht werden. Ich schaue in die Datei Android/bionic/libc/SYSCALLS.txt und msgget ist dort nicht aufgeführt.

Aber wenn ich in die Datei android/bionic/libc/kernel/arch-arm/asm/unistd.h schaue, finde ich msgget dort. Ich verstehe nicht, was hier passiert und wie kann ich die Implementierung für msgget finden?

Danke.

4voto

Junaid Punkte 1656

Dieser Link erwähnt fast alle Systemaufrufe, ihre Argumente und Standorte in den entsprechenden Dateien. Es hat mir geholfen, Details zum Systemaufruf zu finden.

und die Antwort für strace wird in den obigen Kommentaren von Chris gegeben, nochmals vielen Dank an ihn.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X