Wie kann ich feststellen, ob mein Linux-Kernel SYSENTER / SYSEXIT für Systemaufrufe verwendet?

Wie kann ich feststellen, ob mein Linux-Kernel SYSENTER / SYSEXIT für Systemaufrufe verwendet?

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.

verwandte Informationen