]> git.itanic.dy.fi Git - scan-pagemap/blobdiff - main.c
Add support for listing mappings that are shared between processes
[scan-pagemap] / main.c
diff --git a/main.c b/main.c
index 9f9b5c54c7e1cbf90eeb56dc9ab982028718936c..c28ed2a8a7320b4c413a675b53162daf8a29f439 100644 (file)
--- a/main.c
+++ b/main.c
@@ -18,6 +18,7 @@ void print_help_and_die(char *name)
                "given name\n"
                "-m, --map=mapname      scan maps with given mapping name\n"
                "-d, --dump             dump process maps\n"
+               "-s, --shared-mappings  dump only shared mappings\n"
                "-h, --help             show this help\n",
                name);
 
@@ -50,9 +51,10 @@ void read_args(int argc, char *argv[], struct parse_opts *opts)
                { .val = 'm', .name = "map", .has_arg = 1, },
                { .val = OPT_WITH_THREADS, .name = "with-threads" },
                { .val = 'd', .name = "dump", },
+               { .val = 's', .name = "shared-mappings", },
                { .val = 'h', .name = "help", },
        };
-       char short_options[] = "p:P:m:dh";
+       char short_options[] = "p:P:m:sdh";
        opts->parse_mask = 0;
 
        while (1) {
@@ -87,6 +89,9 @@ void read_args(int argc, char *argv[], struct parse_opts *opts)
                case OPT_WITH_THREADS:
                        opts->with_threads = 1;
                        break;
+               case 's':
+                       opts->parse_mask |= PARSE_SHARED_MAPPING;
+                       /* implies --dump */
                case 'd':
                        opts->parse_mask |= PARSE_DUMP;
                        break;
@@ -126,7 +131,7 @@ int main(int argc, char *argv[])
                return 1;
 
        if (opts.parse_mask & PARSE_DUMP)
-               dump_process_maps(&process_list);
+               dump_process_maps(&pf, &process_list, &opts);
        else
                print_pid_stats(&pf, &process_list, &opts);