summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2011-11-03 19:19:28 -0700
committerDianne Hackborn <hackbod@google.com>2011-11-04 13:38:18 -0700
commit9b424b44515490cb173ce1837b763ac0f6153a17 (patch)
tree4a2a4c263fb8cad134f212d720967f905eedfde8
parente4ca92421cc07c2f7f152b774dd1ac7a8944028b (diff)
downloadframeworks_base-9b424b44515490cb173ce1837b763ac0f6153a17.zip
frameworks_base-9b424b44515490cb173ce1837b763ac0f6153a17.tar.gz
frameworks_base-9b424b44515490cb173ce1837b763ac0f6153a17.tar.bz2
DO NOT MERGE. Integrate: Include showmap output in bug report.
Change-Id: I51265eb248b7eba360f0758fa9eb8a01821f108a
-rw-r--r--cmds/dumpstate/dumpstate.c2
-rw-r--r--cmds/dumpstate/dumpstate.h3
-rw-r--r--cmds/dumpstate/utils.c9
3 files changed, 14 insertions, 0 deletions
diff --git a/cmds/dumpstate/dumpstate.c b/cmds/dumpstate/dumpstate.c
index 30aed33..ca66a4e 100644
--- a/cmds/dumpstate/dumpstate.c
+++ b/cmds/dumpstate/dumpstate.c
@@ -209,6 +209,8 @@ static void dumpstate() {
run_command("LIST OF OPEN FILES", 10, "su", "root", "lsof", NULL);
+ for_each_pid(do_showmap, "SMAPS OF ALL PROCESSES");
+
#ifdef BOARD_HAS_DUMPSTATE
printf("========================================================\n");
printf("== Board\n");
diff --git a/cmds/dumpstate/dumpstate.h b/cmds/dumpstate/dumpstate.h
index 597ab1f..6d66b1b 100644
--- a/cmds/dumpstate/dumpstate.h
+++ b/cmds/dumpstate/dumpstate.h
@@ -45,6 +45,9 @@ void for_each_pid(void (*func)(int, const char *), const char *header);
/* Displays a blocked processes in-kernel wait channel */
void show_wchan(int pid, const char *name);
+/* Runs "showmap" for a process */
+void do_showmap(int pid, const char *name);
+
/* Play a sound via Stagefright */
void play_sound(const char* path);
diff --git a/cmds/dumpstate/utils.c b/cmds/dumpstate/utils.c
index b2f9e80..14984ec 100644
--- a/cmds/dumpstate/utils.c
+++ b/cmds/dumpstate/utils.c
@@ -96,6 +96,15 @@ out_close:
return;
}
+void do_showmap(int pid, const char *name) {
+ char title[255];
+ char arg[255];
+
+ sprintf(title, "SHOW MAP %d (%s)", pid, name);
+ sprintf(arg, "%d", pid);
+ run_command(title, 10, "su", "root", "showmap", arg, NULL);
+}
+
/* prints the contents of a file */
int dump_file(const char *title, const char* path) {
char buffer[32768];