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.