Module Name: src Committed By: christos Date: Sun Jan 3 22:05:18 UTC 2016
Modified Files: src/usr.bin/kdump: kdump.c Log Message: be a bit smarter about fcntl To generate a diff of this commit: cvs rdiff -u -r1.120 -r1.121 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.120 src/usr.bin/kdump/kdump.c:1.121 --- src/usr.bin/kdump/kdump.c:1.120 Tue Jun 16 20:01:59 2015 +++ src/usr.bin/kdump/kdump.c Sun Jan 3 17:05:18 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: kdump.c,v 1.120 2015/06/17 00:01:59 christos Exp $ */ +/* $NetBSD: kdump.c,v 1.121 2016/01/03 22:05:18 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.120 2015/06/17 00:01:59 christos Exp $"); +__RCSID("$NetBSD: kdump.c,v 1.121 2016/01/03 22:05:18 christos Exp $"); #endif #endif /* not lint */ @@ -460,6 +460,31 @@ output_long(u_long it, int as_x) printf(as_x ? "%#lx" : "%ld", it); } +static const char * +fcntlname(u_long cmd) +{ +#define FCNTLCASE(a) case a: return # a + switch (cmd) { + FCNTLCASE(F_DUPFD); + FCNTLCASE(F_GETFD); + FCNTLCASE(F_SETFD); + FCNTLCASE(F_GETFL); + FCNTLCASE(F_SETFL); + FCNTLCASE(F_GETOWN); + FCNTLCASE(F_SETOWN); + FCNTLCASE(F_GETLK); + FCNTLCASE(F_SETLK); + FCNTLCASE(F_SETLKW); + FCNTLCASE(F_CLOSEM); + FCNTLCASE(F_MAXFD); + FCNTLCASE(F_DUPFD_CLOEXEC); + FCNTLCASE(F_GETNOSIGPIPE); + FCNTLCASE(F_SETNOSIGPIPE); + default: + return NULL; + } +} + static void ioctldecode(u_long cmd) { @@ -544,6 +569,19 @@ ktrsyscall(struct ktr_syscall *ktr) argcount--; c = ','; + } else if (strcmp(sys_name, "fcntl") == 0 && argcount >= 2) { + (void)putchar('('); + output_long((long)*ap, !(decimal || small(*ap))); + ap++; + argcount--; + if ((cp = fcntlname(*ap)) != NULL) + (void)printf(",%s", cp); + else { + (void)printf(",%#lx", *ap); + } + ap++; + argcount--; + c = ','; } else if ((strstr(sys_name, "sigaction") != NULL || strstr(sys_name, "sigvec") != NULL) && argcount >= 1) { (void)printf("(SIG%s", signame(ap[0], 1));