2016-07-21 20 views
0

Ich versuche, in Android 5.1.1 mit Kernel 3.4 eine schmutzige Seite in Seiten-Cache zu verfolgen. Mein Gerät ist Nexus 7 2013 mit Prozessor Qualcomm Snapdragon S4 Pro APQ8064.Wie kann ich verfolgen, wenn memcpy() in Linux Kernel aufgerufen wird?

Ich weiß, dass ein Prozess kann (1) auf Seiten-Cache aus seinem Puffer schreiben oder (2) es kann Mmap verwenden Seiten-Cache direkt mit seinem virtuellen Adressraum abzubilden. In (1) wird eine Funktion wie generic_perform_write aufgerufen werden. Aber in (2) verwendet der Prozess memcpy(), um in den Seitencache zu schreiben?

Darüber hinaus gibt es eine Menge Definition von „memcpy“ im Kernel-Quellcode, die wirklich verwirrend ist. Wie kann ich verfolgen, wenn ein Prozess mit Mmap in den Seitencache schreibt, anstatt seinen Puffer zu verwenden. Und wie kann ich viele im Kernel-Quellcode definierte Memcpys klassifizieren?

Eine weitere Frage, wenn ich die Writeback-Funktion betrachte, fand ich eine Datei, die zurück auf die Festplatte geschrieben wird, hat Inode-Nummer als 0. Ich bin auch damit wirklich verwirrt. Ich denke, Inode-Nummer sollte bei 1 beginnen. Vielen Dank für jede Hilfe.

Antwort

0

Der beste Weg, tut Profilierung und die memcpy ist völlig Architektur spezifisch. Und zu Ihrem Problem könnten Sie überprüfen mm/mmap.c -----> mmap_pgoff API.

+0

Danke. Aber ich fand schließlich, dass diese Kopie in "iov_iter_copy_from_user_atomic" gemacht werden sollte. Aber ich bin immer noch verwirrt, warum ich Inode-Nummer als 0 bekomme. –