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;
}
};
/* 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;
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
return 0;
}
-struct pageframe *read_pageframe(int pid, struct pageframe *pageframe)
+void read_pageframe(int pid, struct pageframe *pageframe)
{
struct maps *maps;
FILE *file;
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;
}