]> git.itanic.dy.fi Git - scan-pagemap/commitdiff
Put some sense in how pointers are being passed
authorTimo Kokkonen <kaapeli@itanic.dy.fi>
Sat, 3 Jul 2010 15:06:28 +0000 (18:06 +0300)
committerTimo Kokkonen <kaapeli@itanic.dy.fi>
Sat, 3 Jul 2010 15:06:28 +0000 (18:06 +0300)
Signed-off-by: Timo Kokkonen <kaapeli@itanic.dy.fi>
main.c
parse.c
parse.h

diff --git a/main.c b/main.c
index b9458f4be86fee79ccdd4079ae1eb95d609733ee..15d90f3a0dcd1352a4ed711b9c1ec076c7b4edcf 100644 (file)
--- a/main.c
+++ b/main.c
@@ -7,8 +7,10 @@
 
 int main(int argc, char *argv[])
 {
-       struct pageframe *pf = NULL;
-       pf = read_pageframe(2266, pf);
+       struct pageframe pf;
+
+       memset(&pf, 0, sizeof(pf));
+       read_pageframe(2266, &pf);
 
        return 0;
 }
diff --git a/parse.c b/parse.c
index bdbc46f115d518640a0f24d16cf4389eceab80ea..79f52a86e34ac096bbf769a9d6e230f12a7fd62f 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -110,11 +110,11 @@ struct bintree_ops pageframe_ops = {
 };
 
 /* Read data from the /proc/pid/pagemap file */
-static int parse_pageframe(FILE *file, struct pageframe **pageframe_tree,
+static int parse_pageframe(FILE *file, struct pageframe *pf_tree,
                        struct maps *maps)
 {
        struct maps *map, *tmp;
-       struct pageframe *match, *pageframe = alloc_pageframe();
+       struct pageframe *match, *pageframe;
        long start, len, i;
        unsigned long long pf;
        int ret, error;
@@ -146,15 +146,12 @@ static int parse_pageframe(FILE *file, struct pageframe **pageframe_tree,
                                continue;
                                return -1;
                        }
-
+                       pageframe = alloc_pageframe();
                        pageframe_to_struct(pf, pageframe);
                        match = tree_to_pageframe(
-                               bintree_add(&(*pageframe_tree)->tree,
+                               bintree_add(&pf_tree->tree,
                                        &pageframe->tree, &pageframe_ops));
 
-                       if (*pageframe_tree == NULL)
-                               *pageframe_tree = match;
-
                        match->refcount++;
                        /*
                         * Add a link from the physical page to this
@@ -175,7 +172,7 @@ static int parse_pageframe(FILE *file, struct pageframe **pageframe_tree,
        return 0;
 }
 
-struct pageframe *read_pageframe(int pid, struct pageframe *pageframe)
+void read_pageframe(int pid, struct pageframe *pageframe)
 {
        struct maps *maps;
        FILE *file;
@@ -196,12 +193,12 @@ struct pageframe *read_pageframe(int pid, struct pageframe *pageframe)
        if (!file)
                goto err_out;
 
-       parse_pageframe(file, &pageframe, maps);
+       parse_pageframe(file, pageframe, maps);
 
-       return pageframe;
+       return;
 err_out:
        error = errno;
        fprintf(stderr, "Failed to open file %s: %s\n", path, strerror(error));
 
-       return NULL;
+       return;
 }
diff --git a/parse.h b/parse.h
index bd8011e0a311a18a7245c62ae4050edd5134ab2a..dcbe1f25329a11662ac26036af6757bad480e8b6 100644 (file)
--- a/parse.h
+++ b/parse.h
@@ -1,6 +1,8 @@
 #ifndef _PARSE_H
 #define _PARSE_H
 
-struct pageframe *read_pageframe(int pid, struct pageframe *pageframe);
+#include "pagemap.h"
+
+void read_pageframe(int pid, struct pageframe *pageframe);
 
 #endif