Ich versuche herauszufinden, ob mein Linux-Kernel Sysenter-/Sysexit-Anweisungen verwendet, um Systemaufrufe aus dem Benutzerbereich zu initiieren und zu beenden.
Der von mir verwendete Kernel ist „2.6.31.12-174.2.3.fc12.x86_64“.
Irgendwelche Ideen?
M.
Antwort1
sysenter/sysexit hängt mehr von Ihrer CPU als vom Kernel ab – Linux verwendet es seit den frühen 2,5-Tagen. Linux wählt entweder SYSENTER, SYSCALL oder ältere int 80-Methoden, je nachdem, auf welchem CPU-Typ es ausgeführt wird.
Ich bin mir nicht sicher, wie Sie bestätigen können, dass es tatsächlich verwendet wird. Ich glaube nicht, dass Systemtap oder LTT auf einer ausreichend niedrigen Ebene nachsehen werden. Vielleicht könnten Sie den Kernel instrumentieren und einige Tracepoints im vDSO-Code hinzufügen ...
Antwort2
Der einzige Vorschlag, der mir einfällt, wäre die Verwendung vonLinux Trace Toolkitum einen Kernel-Dump zu erstellen und die Systemaufrufe zu durchsuchen.
Antwort3
Sie könnten einen Blick aufSystemTap. Damit sollten Sie in der Lage sein, ein Skript zu schreiben, das eine Aktion auslöst, wenn ein von Ihnen gewünschtes Ereignis, einschließlich Systemaufrufen, eintritt.