From 6e68c98560ca5d5da765f637bec111945b2af719 Mon Sep 17 00:00:00 2001
From: Adam Wujek <adam.wujek@cern.ch>
Date: Fri, 15 Apr 2016 16:32:00 +0200
Subject: [PATCH] userspace/tools: print only specified shmem by wrs_dump_shmem

Add -P -R -L to dump only specific shmem.

Signed-off-by: Adam Wujek <adam.wujek@cern.ch>
---
 userspace/tools/wrs_dump_shmem.c | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/userspace/tools/wrs_dump_shmem.c b/userspace/tools/wrs_dump_shmem.c
index 3d6d07ec8..7a9e1f9b0 100644
--- a/userspace/tools/wrs_dump_shmem.c
+++ b/userspace/tools/wrs_dump_shmem.c
@@ -676,10 +676,16 @@ void print_info(char *prgname)
 		"             entries are printed. Note there are 2048 htab\n"
 		"             and 4096 vlan entries!\n"
 		"   -H <dir>  Open shmem dumps from the given directory\n"
-		"   -h        Show this message\n");
+		"   -h        Show this message\n"
+		"  Dump shmem for specific program (by default dump for all)\n"
+		"   -P        Dump ptp entries\n"
+		"   -R        Dump rtu entries\n"
+		"   -L        Dump hal entries\n");
 
 }
 
+int dump_print[WRS_SHM_N_NAMES];
+
 int main(int argc, char **argv)
 {
 	struct wrs_shm_head *head;
@@ -687,8 +693,9 @@ int main(int argc, char **argv)
 	void *m;
 	int i;
 	int c;
+	int print_all = 1;
 
-	while ((c = getopt(argc, argv, "ahH:")) != -1) {
+	while ((c = getopt(argc, argv, "ahH:PRL")) != -1) {
 		switch (c) {
 		case 'a':
 			dump_all_rtu_entries = 1;
@@ -696,6 +703,18 @@ int main(int argc, char **argv)
 		case 'H':
 			wrs_shm_set_path(optarg);
 			break;
+		case 'P':
+			dump_print[wrs_shm_ptp] = 1;
+			print_all = 0;
+			break;
+		case 'R':
+			dump_print[wrs_shm_rtu] = 1;
+			print_all = 0;
+			break;
+		case 'L':
+			dump_print[wrs_shm_hal] = 1;
+			print_all = 0;
+			break;
 		case 'h':
 		default:
 			print_info(argv[0]);
@@ -703,6 +722,9 @@ int main(int argc, char **argv)
 		}
 	}
 	for (i = 0; i < WRS_SHM_N_NAMES; i++) {
+		if (!print_all && !dump_print[i])
+			continue;
+
 		m = wrs_shm_get(i, "reader", 0);
 		if (!m) {
 			fprintf(stderr, "%s: can't attach memory area %i: %s\n",
-- 
GitLab