Lesen von /proc/kpagecount oder /proc/kpageflag



  • Hallo nette Leute von diesem Forum:

    Habe eine Frage bez. Linux und /proc -fs.
    Zur allgemeinen Info:
    Ich habe mir schon die gesamten Docs durchgelesen und suche schon länger nach einer Lösung, aber ich komme selbst nicht darauf.

    Im der Docu ist folgendes zu finden:
    1. Read /proc/pid/maps to determine which parts of the memory space are mapped to what.
    Funktioniert schon bei mir.

    2. Select the maps you are interested in -- all of them, or a particular library, or the stack or the heap, etc.
    Funktioniert auch. 🙂

    3. Open /proc/pid/pagemap and seek to the pages you would like to examine.
    Funktioniert auch. 🙂

    4. Read a u64 for each page from pagemap.
    funktioniert auch schon.

    Ab hier wird es lustig
    5. Open /proc/kpagecount and/or /proc/kpageflags. For each PFN you just
    read, seek to that entry in the file, and read the data you want.

    Wie kann ich so ein File öffnen?? Ist dies eine Struct auf die man zugreifen kann? Dies wird ja erst beim Zugriff generiert. Aber wie kann ich was öffnen was noch nicht existiert 😕
    Wie kann ich sowas in c schreiben (also mit fopen() gehts sicher nicht).

    Bitte um Hilfe da ich echt keinen Lösungweg sehe.

    LG
    Kernelseppi



  • kernelseppi schrieb:

    Wie kann ich sowas in c schreiben (also mit fopen() gehts sicher nicht).

    Warum nicht? Kenn speziell diese /proc Einträge nicht, aber generell kansnt sie natürlich mit fopen aufmachen.



  • das zugreifen auf diese "datei" funktioniert genauso wie mit den anderen /proc dateien die du schon erfolgreich öffnen konntest. Wiso meinst du das diese beiden Dateien /proc/kpagecount und /proc/kpageflags anders wären als die Dateien unter /proc/<pid>?

    für den Aufbau der Datei siehe:
    http://www.kernel.org/doc/Documentation/vm/pagemap.txt (durch suche nach kpagecount linux proc gefunden.)



  • naja ganz einfach weil ich ja dafür die page brauche damit es erst generiert wird.
    bitte schreibt mir die zeilen in c, wie es ihr machen würdet bzw. wie es ihr gemacht habt.
    wie übergebe ich aber die page an kpageflags oder kpagecount.
    ich glaub ih steh auf der leitung 😉

    lg



  • du übergibst da gar nichts an diese Dateien, sondern, soweit ich die Erklärung in der Datei verstanden habe liest du aus der /proc/<pid>/pagemap die PFN (Page Frame Number) und dieser Nummer ist der index in der /proc/kpagecount und /proc/kpageflag für den entsprechenden eintrag für die PFN

    Das steht auch so in der verlinkten Datei...


Anmelden zum Antworten