Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Aug 2013 19:57:36 +0000 (UTC)
From:      Jilles Tjoelker <jilles@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r254291 - head/usr.bin/kdump
Message-ID:  <201308131957.r7DJvawn066830@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jilles
Date: Tue Aug 13 19:57:35 2013
New Revision: 254291
URL: http://svnweb.freebsd.org/changeset/base/254291

Log:
  kdump: Improve decoding of various *at calls:
  
  * Write AT_FDCWD where appropriate.
  * Decode the remaining arguments of openat() etc like open() etc.

Modified:
  head/usr.bin/kdump/kdump.c
  head/usr.bin/kdump/mksubr

Modified: head/usr.bin/kdump/kdump.c
==============================================================================
--- head/usr.bin/kdump/kdump.c	Tue Aug 13 19:55:12 2013	(r254290)
+++ head/usr.bin/kdump/kdump.c	Tue Aug 13 19:57:35 2013	(r254291)
@@ -606,6 +606,27 @@ ktrsyscall(struct ktr_syscall *ktr, u_in
 		if (fancy &&
 		    (flags == 0 || (flags & SV_ABI_MASK) == SV_ABI_FREEBSD)) {
 			switch (ktr->ktr_code) {
+			case SYS_faccessat:
+			case SYS_fchmodat:
+			case SYS_fchownat:
+			case SYS_fstatat:
+			case SYS_futimesat:
+			case SYS_linkat:
+			case SYS_mkdirat:
+			case SYS_mkfifoat:
+			case SYS_mknodat:
+			case SYS_openat:
+			case SYS_readlinkat:
+			case SYS_renameat:
+			case SYS_unlinkat:
+				putchar('(');
+				atfdname(*ip, decimal);
+				c = ',';
+				ip++;
+				narg--;
+				break;
+			}
+			switch (ktr->ktr_code) {
 			case SYS_ioctl: {
 				print_number(ip, narg, c);
 				putchar(c);
@@ -624,6 +645,7 @@ ktrsyscall(struct ktr_syscall *ktr, u_in
 				break;
 			case SYS_access:
 			case SYS_eaccess:
+			case SYS_faccessat:
 				print_number(ip, narg, c);
 				putchar(',');
 				accessmodename(*ip);
@@ -631,6 +653,7 @@ ktrsyscall(struct ktr_syscall *ktr, u_in
 				narg--;
 				break;
 			case SYS_open:
+			case SYS_openat:
 				print_number(ip, narg, c);
 				putchar(',');
 				flagsandmodename(ip[0], ip[1], decimal);
@@ -655,6 +678,7 @@ ktrsyscall(struct ktr_syscall *ktr, u_in
 				narg--;
 				break;
 			case SYS_mknod:
+			case SYS_mknodat:
 				print_number(ip, narg, c);
 				putchar(',');
 				modename(*ip);
@@ -860,7 +884,9 @@ ktrsyscall(struct ktr_syscall *ktr, u_in
 				narg--;
 				break;
 			case SYS_mkfifo:
+			case SYS_mkfifoat:
 			case SYS_mkdir:
+			case SYS_mkdirat:
 				print_number(ip, narg, c);
 				putchar(',');
 				modename(*ip);
@@ -1083,6 +1109,15 @@ ktrsyscall(struct ktr_syscall *ktr, u_in
 				ip++;
 				narg--;
 				break;
+			case SYS_linkat:
+			case SYS_renameat:
+			case SYS_symlinkat:
+				print_number(ip, narg, c);
+				putchar(',');
+				atfdname(*ip, decimal);
+				ip++;
+				narg--;
+				break;
 			case SYS_cap_new:
 			case SYS_cap_rights_limit:
 				print_number(ip, narg, c);

Modified: head/usr.bin/kdump/mksubr
==============================================================================
--- head/usr.bin/kdump/mksubr	Tue Aug 13 19:55:12 2013	(r254290)
+++ head/usr.bin/kdump/mksubr	Tue Aug 13 19:57:35 2013	(r254291)
@@ -209,6 +209,18 @@ cat <<_EOF_
 	while (0)
 
 /* MANUAL */
+void
+atfdname(int fd, int decimal)
+{
+	if (fd == AT_FDCWD)
+		printf("AT_FDCWD");
+	else if (decimal)
+		printf("%d", fd);
+	else
+		printf("%#x", fd);
+}
+
+/* MANUAL */
 extern char *signames[]; /* from kdump.c */
 void
 signame(int sig)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308131957.r7DJvawn066830>