Module Name:    src
Committed By:   christos
Date:           Wed Jun  1 00:47:16 UTC 2016

Modified Files:
        src/usr.bin/kdump: kdump.c

Log Message:
Symbolic printing for mmap


To generate a diff of this commit:
cvs rdiff -u -r1.123 -r1.124 src/usr.bin/kdump/kdump.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/kdump/kdump.c
diff -u src/usr.bin/kdump/kdump.c:1.123 src/usr.bin/kdump/kdump.c:1.124
--- src/usr.bin/kdump/kdump.c:1.123	Sun Mar 27 17:51:20 2016
+++ src/usr.bin/kdump/kdump.c	Tue May 31 20:47:16 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: kdump.c,v 1.123 2016/03/27 21:51:20 alnsn Exp $	*/
+/*	$NetBSD: kdump.c,v 1.124 2016/06/01 00:47:16 christos Exp $	*/
 
 /*-
  * Copyright (c) 1988, 1993
@@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19
 #if 0
 static char sccsid[] = "@(#)kdump.c	8.4 (Berkeley) 4/28/95";
 #else
-__RCSID("$NetBSD: kdump.c,v 1.123 2016/03/27 21:51:20 alnsn Exp $");
+__RCSID("$NetBSD: kdump.c,v 1.124 2016/06/01 00:47:16 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -48,6 +48,7 @@ __RCSID("$NetBSD: kdump.c,v 1.123 2016/0
 #define _KMEMUSER        /* To get the pseudo errors defined */
 #include <sys/errno.h>
 #undef _KMEMUSER
+#include <sys/mman.h>
 #include <sys/time.h>
 #include <sys/uio.h>
 #include <sys/ktrace.h>
@@ -598,7 +599,43 @@ ktrsyscall(struct ktr_syscall *ktr)
 			ap += 2;
 			argcount -= 2;
 			c = ',';
-
+		} else if (strcmp(sys_name, "mmap") == 0 && argcount >= 6) {
+			char buf[1024];
+			putchar('(');
+			output_long((long)ap[0], !(decimal || small(ap[0])));
+			c = ',';
+			putchar(c);
+			output_long((long)ap[1], !(decimal || small(ap[1])));
+			putchar(c);
+			if (ap[2] == PROT_NONE) {
+			    fputs("PROT_NONE", stdout);
+			} else {
+			    const char *s = "";
+			    c = 0;
+			    if (ap[2] & PROT_READ) {
+				fputs("PROT_READ", stdout);
+				s = "|";
+				ap[2] &= ~PROT_READ;
+			    }
+			    if (ap[2] & PROT_WRITE) {
+				printf("%sPROT_WRITE", s);
+				ap[2] &= ~PROT_WRITE;
+				s = "|";
+			    }
+			    if (ap[2] & PROT_EXEC) {
+				printf("%sPROT_EXEC", s);
+				ap[2] &= ~PROT_EXEC;
+				s = "|";
+			    }
+			    if (ap[2]) {
+				printf("%s%#lx", s, (long)ap[2]);
+			    }
+			}
+			snprintb(buf, sizeof(buf), MAP_FMT, ap[3]);
+			printf(",%s", buf);
+			ap += 4;
+			argcount -= 4;
+			c = ',';
 		} else if (strcmp(sys_name, "ptrace") == 0 && argcount >= 1) {
 			putchar('(');
 			if (strcmp(emul->name, "linux") == 0 ||

Reply via email to