svn commit: r311999 - in stable/11: . lib/libsysdecode usr.bin/kdump usr.bin/truss

John Baldwin jhb at FreeBSD.org
Thu Jan 12 22:07:01 UTC 2017


Author: jhb
Date: Thu Jan 12 22:06:57 2017
New Revision: 311999
URL: https://svnweb.freebsd.org/changeset/base/311999

Log:
  MFC 307538,307948,308602,308603,311151: Move kdump's mksubr into libsysdecode.
  
  307538:
  Move mksubr from kdump into libsysdecode.
  
  Restructure this script so that it generates a header of tables instead
  of a source file.  The tables are included in a flags.c source file which
  provides functions to decode various system call arguments.
  
  For functions that decode an enumeration, the function returns a pointer
  to a string for known values and NULL for unknown values.
  
  For functions that do more complex decoding (typically of a bitmask), the
  function accepts a pointer to a FILE object (open_memstream() can be used
  as a string builder) to which decoded values are written.  If the
  function operates on a bitmask, the function returns true if any bits
  were decoded or false if the entire value was valid.  Additionally, the
  third argument accepts a pointer to a value to which any undecoded bits
  are stored.  This pointer can be NULL if the caller doesn't care about
  remaining bits.
  
  Convert kdump over to using decoder functions from libsysdecode instead of
  mksubr.  truss also uses decoders from libsysdecode instead of private
  lookup tables, though lookup tables for objects not decoded by kdump remain
  in truss for now.  Eventually most of these tables should move into
  libsysdecode as the automated table generation approach from mksubr is
  less stale than the static tables in truss.
  
  Some changes have been made to truss and kdump output:
  - The flags passed to open() are now properly decoded in that one of
    O_RDONLY, O_RDWR, O_WRONLY, or O_EXEC is always included in a decoded
    mask.
  - Optional arguments to open(), openat(), and fcntl() are only printed
    in kdump if they exist (e.g. the mode is only printed for open() if
    O_CREAT is set in the flags).
  - Print argument to F_GETLK/SETLK/SETLKW in kdump as a pointer, not int.
  - Include all procctl() commands.
  - Correctly decode pipe2() flags in truss by not assuming full
    open()-like flags with O_RDONLY, etc.
  - Decode file flags passed to *chflags() as file flags (UF_* and SF_*)
    rather than as a file mode.
  - Fix decoding of quotactl() commands by splitting out the two command
    components instead of assuming the raw command value matches the
    primary command component.
  
  In addition, truss and kdump now build without triggering any warnings.
  All of the sysdecode manpages now include the required headers in the
  synopsis.
  
  307948:
  Use binary and (&) instead of logical to extract the mask of a capability.
  
  308602:
  Generate and use a proper .depend file for tables.h.
  
  308603:
  Move libsysdecode-specific hack out of buildworld.
  
  This should fix the lib32 build since it was not removing the generated
  ioctl.c.  This file is generated by a find(1) call, so cannot use normal
  dependency tracking methods.
  
  311151:
  Update libsysdecode for getfsstat() 'flags' argument changing to 'mode'.
  
  As a followup to r310638, update libsysdecode (and kdump) to decode the
  'mode' argument to getfsstat().  sysdecode_getfsstat_flags() has been
  renamed to sysdecode_getfsstat_mode() and now treats the argument as an
  enumerated value rather than a mask of flags.

Added:
  stable/11/lib/libsysdecode/flags.c
     - copied, changed from r307538, head/lib/libsysdecode/flags.c
  stable/11/lib/libsysdecode/mktables
     - copied, changed from r307538, head/lib/libsysdecode/mktables
  stable/11/lib/libsysdecode/signal.c
     - copied unchanged from r307538, head/lib/libsysdecode/signal.c
  stable/11/lib/libsysdecode/sysdecode_cap_rights.3
     - copied unchanged from r307538, head/lib/libsysdecode/sysdecode_cap_rights.3
  stable/11/lib/libsysdecode/sysdecode_enum.3
     - copied, changed from r307538, head/lib/libsysdecode/sysdecode_enum.3
  stable/11/lib/libsysdecode/sysdecode_fcntl_arg.3
     - copied unchanged from r307538, head/lib/libsysdecode/sysdecode_fcntl_arg.3
  stable/11/lib/libsysdecode/sysdecode_mask.3
     - copied, changed from r307538, head/lib/libsysdecode/sysdecode_mask.3
  stable/11/lib/libsysdecode/sysdecode_quotactl_cmd.3
     - copied unchanged from r307538, head/lib/libsysdecode/sysdecode_quotactl_cmd.3
  stable/11/lib/libsysdecode/sysdecode_sigcode.3
     - copied unchanged from r307538, head/lib/libsysdecode/sysdecode_sigcode.3
  stable/11/lib/libsysdecode/sysdecode_sockopt_name.3
     - copied unchanged from r307538, head/lib/libsysdecode/sysdecode_sockopt_name.3
Deleted:
  stable/11/usr.bin/kdump/mksubr
Modified:
  stable/11/Makefile.inc1
  stable/11/ObsoleteFiles.inc
  stable/11/lib/libsysdecode/Makefile
  stable/11/lib/libsysdecode/errno.c
  stable/11/lib/libsysdecode/mkioctls
  stable/11/lib/libsysdecode/syscallnames.c
  stable/11/lib/libsysdecode/sysdecode.3
  stable/11/lib/libsysdecode/sysdecode.h
  stable/11/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3
  stable/11/lib/libsysdecode/sysdecode_ioctlname.3
  stable/11/lib/libsysdecode/sysdecode_syscallnames.3
  stable/11/lib/libsysdecode/sysdecode_utrace.3
  stable/11/lib/libsysdecode/utrace.c
  stable/11/usr.bin/kdump/Makefile
  stable/11/usr.bin/kdump/kdump.c
  stable/11/usr.bin/truss/Makefile
  stable/11/usr.bin/truss/aarch64-cloudabi64.c
  stable/11/usr.bin/truss/aarch64-freebsd.c
  stable/11/usr.bin/truss/amd64-cloudabi64.c
  stable/11/usr.bin/truss/amd64-freebsd.c
  stable/11/usr.bin/truss/amd64-freebsd32.c
  stable/11/usr.bin/truss/amd64-linux.c
  stable/11/usr.bin/truss/amd64-linux32.c
  stable/11/usr.bin/truss/arm-freebsd.c
  stable/11/usr.bin/truss/extern.h
  stable/11/usr.bin/truss/i386-freebsd.c
  stable/11/usr.bin/truss/i386-linux.c
  stable/11/usr.bin/truss/main.c
  stable/11/usr.bin/truss/mips-freebsd.c
  stable/11/usr.bin/truss/powerpc-freebsd.c
  stable/11/usr.bin/truss/powerpc64-freebsd.c
  stable/11/usr.bin/truss/powerpc64-freebsd32.c
  stable/11/usr.bin/truss/setup.c
  stable/11/usr.bin/truss/sparc64-freebsd.c
  stable/11/usr.bin/truss/syscall.h
  stable/11/usr.bin/truss/syscalls.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/Makefile.inc1
==============================================================================
--- stable/11/Makefile.inc1	Thu Jan 12 21:46:31 2017	(r311998)
+++ stable/11/Makefile.inc1	Thu Jan 12 22:06:57 2017	(r311999)
@@ -655,9 +655,6 @@ _worldtmp: .PHONY
 .endif
 .else
 	rm -rf ${WORLDTMP}/legacy/usr/include
-#	XXX - These can depend on any header file.
-	rm -f ${OBJTREE}${.CURDIR}/lib/libsysdecode/ioctl.c
-	rm -f ${OBJTREE}${.CURDIR}/usr.bin/kdump/kdump_subr.c
 .endif
 .for _dir in \
     lib lib/casper usr legacy/bin legacy/usr

Modified: stable/11/ObsoleteFiles.inc
==============================================================================
--- stable/11/ObsoleteFiles.inc	Thu Jan 12 21:46:31 2017	(r311998)
+++ stable/11/ObsoleteFiles.inc	Thu Jan 12 22:06:57 2017	(r311999)
@@ -38,6 +38,8 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20170112: sysdecode_getfsstat_flags() renamed to sysdecode_getfsstat_mode()
+OLD_FILES+=usr/share/man/man3/sysdecode_getfsstat_flags.3.gz
 # 20161217: new clang import which bumps version from 3.9.0 to 3.9.1.
 OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/allocator_interface.h
 OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/asan_interface.h

Modified: stable/11/lib/libsysdecode/Makefile
==============================================================================
--- stable/11/lib/libsysdecode/Makefile	Thu Jan 12 21:46:31 2017	(r311998)
+++ stable/11/lib/libsysdecode/Makefile	Thu Jan 12 22:06:57 2017	(r311999)
@@ -5,20 +5,94 @@
 PACKAGE=lib${LIB}
 LIB=	sysdecode
 
-SRCS=	errno.c ioctl.c syscallnames.c utrace.c
+SRCS=	errno.c flags.c ioctl.c signal.c syscallnames.c utrace.c
 INCS=	sysdecode.h
 
+CFLAGS+= -I${.OBJDIR}
 CFLAGS+= -I${.CURDIR}/../../sys
 CFLAGS+= -I${.CURDIR}/../../libexec/rtld-elf
 
-MAN+=	sysdecode.3 \
+MAN=	sysdecode.3 \
 	sysdecode_abi_to_freebsd_errno.3 \
+	sysdecode_cap_rights.3 \
+	sysdecode_enum.3 \
+	sysdecode_fcntl_arg.3 \
 	sysdecode_ioctlname.3 \
+	sysdecode_mask.3 \
+	sysdecode_quotactl_cmd.3 \
+	sysdecode_sigcode.3 \
+	sysdecode_sockopt_name.3 \
 	sysdecode_syscallnames.3 \
 	sysdecode_utrace.3
-MLINKS+= sysdecode_abi_to_freebsd_errno.3 sysdecode_freebsd_to_abi_errno.3
+MLINKS= sysdecode_abi_to_freebsd_errno.3 sysdecode_freebsd_to_abi_errno.3
+MLINKS+=sysdecode_enum.3 sysdecode_acltype.3 \
+	sysdecode_enum.3 sysdecode_atfd.3 \
+	sysdecode_enum.3 sysdecode_extattrnamespace.3 \
+	sysdecode_enum.3 sysdecode_fadvice.3 \
+	sysdecode_enum.3 sysdecode_fcntl_cmd.3 \
+	sysdecode_enum.3 sysdecode_getfsstat_mode.3 \
+	sysdecode_enum.3 sysdecode_idtype.3 \
+	sysdecode_enum.3 sysdecode_ipproto.3 \
+	sysdecode_enum.3 sysdecode_kldsym_cmd.3 \
+	sysdecode_enum.3 sysdecode_kldunload_flags.3 \
+	sysdecode_enum.3 sysdecode_lio_listio_mode.3 \
+	sysdecode_enum.3 sysdecode_madvice.3 \
+	sysdecode_enum.3 sysdecode_minherit_flags.3 \
+	sysdecode_enum.3 sysdecode_msgctl_cmd.3 \
+	sysdecode_enum.3 sysdecode_nfssvc_flags.3 \
+	sysdecode_enum.3 sysdecode_prio_which.3 \
+	sysdecode_enum.3 sysdecode_procctl_cmd.3 \
+	sysdecode_enum.3 sysdecode_ptrace_request.3 \
+	sysdecode_enum.3 sysdecode_rlimit.3 \
+	sysdecode_enum.3 sysdecode_rtprio_function.3 \
+	sysdecode_enum.3 sysdecode_scheduler_policy.3 \
+	sysdecode_enum.3 sysdecode_semctl_cmd.3 \
+	sysdecode_enum.3 sysdecode_shmctl_cmd.3 \
+	sysdecode_enum.3 sysdecode_shutdown_how.3 \
+	sysdecode_enum.3 sysdecode_sigbus_code.3 \
+	sysdecode_enum.3 sysdecode_sigchld_code.3 \
+	sysdecode_enum.3 sysdecode_sigfpe_code.3 \
+	sysdecode_enum.3 sysdecode_sigill_code.3 \
+	sysdecode_enum.3 sysdecode_signal.3 \
+	sysdecode_enum.3 sysdecode_sigprocmask_how.3 \
+	sysdecode_enum.3 sysdecode_sigsegv_code.3 \
+	sysdecode_enum.3 sysdecode_sigtrap_code.3 \
+	sysdecode_enum.3 sysdecode_sockaddr_family.3 \
+	sysdecode_enum.3 sysdecode_socketdomain.3 \
+	sysdecode_enum.3 sysdecode_sockettype.3 \
+	sysdecode_enum.3 sysdecode_sockopt_level.3 \
+	sysdecode_enum.3 sysdecode_umtx_op.3 \
+	sysdecode_enum.3 sysdecode_vmresult.3 \
+	sysdecode_enum.3 sysdecode_whence.3
+MLINKS+=sysdecode_fcntl_arg.3 sysdecode_fcntl_arg_p.3
+MLINKS+=sysdecode_mask.3 sysdecode_accessmode.3 \
+	sysdecode_mask.3 sysdecode_capfcntlrights.3 \
+	sysdecode_mask.3 sysdecode_fcntl_fileflags.3 \
+	sysdecode_mask.3 sysdecode_fileflags.3 \
+	sysdecode_mask.3 sysdecode_filemode.3 \
+	sysdecode_mask.3 sysdecode_flock_operation.3 \
+	sysdecode_mask.3 sysdecode_mlockall_flags.3 \
+	sysdecode_mask.3 sysdecode_mmap_flags.3 \
+	sysdecode_mask.3 sysdecode_mmap_prot.3 \
+	sysdecode_mask.3 sysdecode_mount_flags.3 \
+	sysdecode_mask.3 sysdecode_msg_flags.3 \
+	sysdecode_mask.3 sysdecode_msync_flags.3 \
+	sysdecode_mask.3 sysdecode_open_flags.3 \
+	sysdecode_mask.3 sysdecode_pipe2_flags.3 \
+	sysdecode_mask.3 sysdecode_reboot_howto.3 \
+	sysdecode_mask.3 sysdecode_rfork_flags.3 \
+	sysdecode_mask.3 sysdecode_semget_flags.3 \
+	sysdecode_mask.3 sysdecode_sendfile_flags.3 \
+	sysdecode_mask.3 sysdecode_shmat_flags.3 \
+	sysdecode_mask.3 sysdecode_socket_type.3 \
+	sysdecode_mask.3 sysdecode_thr_create_flags.3 \
+	sysdecode_mask.3 sysdecode_umtx_cvwait_flags.3 \
+	sysdecode_mask.3 sysdecode_umtx_rwlock_flags.3 \
+	sysdecode_mask.3 sysdecode_vmprot.3 \
+	sysdecode_mask.3 sysdecode_wait4_options.3 \
+	sysdecode_mask.3 sysdecode_wait6_options.3
 
-CLEANFILES= ioctl.c
+CLEANFILES= ioctl.c tables.h
 
 .if defined(COMPAT_32BIT)
 CPP+=	-m32
@@ -36,10 +110,19 @@ CFLAGS.gcc.ioctl.c+= -Wno-unused
 
 CFLAGS.gcc+=	${CFLAGS.gcc.${.IMPSRC}}
 
-ioctl.c: mkioctls
+DEPENDOBJS+=	tables.h
+tables.h: mktables
+	sh ${.CURDIR}/mktables ${DESTDIR}${INCLUDEDIR} ${.TARGET}
+
+# mkioctls runs find(1) for headers so needs to rebuild every time.  This used
+# to be a hack only done in buildworld.
+.if !defined(_SKIP_BUILD)
+ioctl.c: .PHONY
+.endif
+ioctl.c: mkioctls .META
 	env MACHINE=${MACHINE} CPP="${CPP}" \
 		/bin/sh ${.CURDIR}/mkioctls ${DESTDIR}${INCLUDEDIR} > ${.TARGET}
 
-beforedepend: ioctl.c
+beforedepend: ioctl.c tables.h
 
 .include <bsd.lib.mk>

Modified: stable/11/lib/libsysdecode/errno.c
==============================================================================
--- stable/11/lib/libsysdecode/errno.c	Thu Jan 12 21:46:31 2017	(r311998)
+++ stable/11/lib/libsysdecode/errno.c	Thu Jan 12 22:06:57 2017	(r311999)
@@ -28,8 +28,11 @@
 __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
+#include <sys/acl.h>
+#include <sys/wait.h>
 #include <errno.h>
 #include <limits.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <sysdecode.h>
 

Copied and modified: stable/11/lib/libsysdecode/flags.c (from r307538, head/lib/libsysdecode/flags.c)
==============================================================================
--- head/lib/libsysdecode/flags.c	Mon Oct 17 22:37:07 2016	(r307538, copy source)
+++ stable/11/lib/libsysdecode/flags.c	Thu Jan 12 22:06:57 2017	(r311999)
@@ -472,11 +472,15 @@ sysdecode_flock_operation(FILE *fp, int 
 	return (print_mask_int(fp, flockops, operation, rem));
 }
 
-bool
-sysdecode_getfsstat_flags(FILE *fp, int flags, int *rem)
+static struct name_table getfsstatmode[] = {
+	X(MNT_WAIT) X(MNT_NOWAIT) XEND
+};
+
+const char *
+sysdecode_getfsstat_mode(int mode)
 {
 
-	return (print_mask_int(fp, getfsstatflags, flags, rem));
+	return (lookup_value(getfsstatmode, mode));
 }
 
 const char *
@@ -959,7 +963,7 @@ sysdecode_umtx_rwlock_flags(FILE *fp, u_
 }
 
 /* XXX: This should be in <sys/capsicum.h> */
-#define	CAPMASK(right)	((right) && (((uint64_t)1 << 57) - 1))
+#define	CAPMASK(right)	((right) & (((uint64_t)1 << 57) - 1))
 
 void
 sysdecode_cap_rights(FILE *fp, cap_rights_t *rightsp)

Modified: stable/11/lib/libsysdecode/mkioctls
==============================================================================
--- stable/11/lib/libsysdecode/mkioctls	Thu Jan 12 21:46:31 2017	(r311998)
+++ stable/11/lib/libsysdecode/mkioctls	Thu Jan 12 22:06:57 2017	(r311999)
@@ -62,6 +62,7 @@ BEGIN {
 	print "#include <netinet6/ip6_mroute.h>"
 	print "#include <stdio.h>"
 	print "#include <cam/cam.h>"
+	print "#include <stdbool.h>"
 	print "#include <stddef.h>"
 	print "#include <stdint.h>"
 	print "#include <sysdecode.h>"

Copied and modified: stable/11/lib/libsysdecode/mktables (from r307538, head/lib/libsysdecode/mktables)
==============================================================================
--- head/lib/libsysdecode/mktables	Mon Oct 17 22:37:07 2016	(r307538, copy source)
+++ stable/11/lib/libsysdecode/mktables	Thu Jan 12 22:06:57 2017	(r311999)
@@ -37,11 +37,16 @@ LC_ALL=C; export LC_ALL
 
 if [ -z "$1" ]
 then
-	echo "usage: sh $0 include-dir"
+	echo "usage: sh $0 include-dir [output-file]"
 	exit 1
 fi
 include_dir=$1
+if [ -n "$2" ]; then
+	output_file="$2"
+	exec > "$output_file"
+fi
 
+all_headers=
 #
 # Generate a table C #definitions.  The including file can define the
 # TABLE_NAME(n), TABLE_ENTRY(x), and TABLE_END macros to define what
@@ -60,6 +65,7 @@ gen_table()
 	else
 		filter="egrep -v"
 	fi
+	all_headers="${all_headers:+${all_headers} }${file}"
 	cat <<_EOF_
 TABLE_START(${name})
 _EOF_
@@ -88,7 +94,6 @@ gen_table "extattrns"       "EXTATTR_NAM
 gen_table "fadvisebehav"    "POSIX_FADV_[A-Z]+[[:space:]]+[0-9]+"          "sys/fcntl.h"
 gen_table "openflags"       "O_[A-Z]+[[:space:]]+0x[0-9A-Fa-f]+"           "sys/fcntl.h"	"O_RDONLY|O_RDWR|O_WRONLY"
 gen_table "flockops"        "LOCK_[A-Z]+[[:space:]]+0x[0-9]+"              "sys/fcntl.h"
-gen_table "getfsstatflags"  "MNT_[A-Z]+[[:space:]]+[1-9][0-9]*"            "sys/mount.h"
 gen_table "kldsymcmd"       "KLDSYM_[A-Z]+[[:space:]]+[0-9]+"              "sys/linker.h"
 gen_table "kldunloadfflags" "LINKER_UNLOAD_[A-Z]+[[:space:]]+[0-9]+"       "sys/linker.h"
 gen_table "lio_listiomodes" "LIO_(NO)?WAIT[[:space:]]+[0-9]+"              "aio.h"
@@ -142,3 +147,12 @@ gen_table "sigcode"         "SI_[A-Z]+[[
 gen_table "umtxcvwaitflags" "CVWAIT_[A-Z_]+[[:space:]]+0x[0-9]+"           "sys/umtx.h"
 gen_table "umtxrwlockflags" "URWLOCK_PREFER_READER[[:space:]]+0x[0-9]+"    "sys/umtx.h"
 gen_table "caprights"       "CAP_[A-Z_]+[[:space:]]+CAPRIGHT\([0-9],[[:space:]]+0x[0-9]{16}ULL\)"   "sys/capsicum.h"
+
+# Generate a .depend file for our output file
+if [ -n "$output_file" ]; then
+	echo "$output_file: \\" > ".depend.$output_file"
+	echo "$all_headers" | tr ' ' '\n' | sort -u |
+	    sed -e "s,^,	$include_dir/," -e 's,$, \\,' >> \
+	    ".depend.$output_file"
+	echo >> ".depend.$output_file"
+fi

Copied: stable/11/lib/libsysdecode/signal.c (from r307538, head/lib/libsysdecode/signal.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/11/lib/libsysdecode/signal.c	Thu Jan 12 22:06:57 2017	(r311999, copy of r307538, head/lib/libsysdecode/signal.c)
@@ -0,0 +1,143 @@
+/*-
+ * Copyright (c) 2016 John H. Baldwin <jhb at FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <signal.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <sysdecode.h>
+
+static const char *signames[] = {
+	[SIGHUP] = "SIGHUP",
+	[SIGINT] = "SIGINT",
+	[SIGQUIT] = "SIGQUIT",
+	[SIGILL] = "SIGILL",
+	[SIGTRAP] = "SIGTRAP",
+	[SIGABRT] = "SIGABRT",
+	[SIGEMT] = "SIGEMT",
+	[SIGFPE] = "SIGFPE",
+	[SIGKILL] = "SIGKILL",
+	[SIGBUS] = "SIGBUS",
+	[SIGSEGV] = "SIGSEGV",
+	[SIGSYS] = "SIGSYS",
+	[SIGPIPE] = "SIGPIPE",
+	[SIGALRM] = "SIGALRM",
+	[SIGTERM] = "SIGTERM",
+	[SIGURG] = "SIGURG",
+	[SIGSTOP] = "SIGSTOP",
+	[SIGTSTP] = "SIGTSTP",
+	[SIGCONT] = "SIGCONT",
+	[SIGCHLD] = "SIGCHLD",
+	[SIGTTIN] = "SIGTTIN",
+	[SIGTTOU] = "SIGTTOU",
+	[SIGIO] = "SIGIO",
+	[SIGXCPU] = "SIGXCPU",
+	[SIGXFSZ] = "SIGXFSZ",
+	[SIGVTALRM] = "SIGVTALRM",
+	[SIGPROF] = "SIGPROF",
+	[SIGWINCH] = "SIGWINCH",
+	[SIGINFO] = "SIGINFO",
+	[SIGUSR1] = "SIGUSR1",
+	[SIGUSR2] = "SIGUSR2",
+	[SIGTHR] = "SIGTHR",
+	[SIGLIBRT] = "SIGLIBRT",
+
+	/* XXX: Solaris uses SIGRTMIN, SIGRTMIN+<x>...SIGRTMAX-<x>, SIGRTMAX */
+	[SIGRTMIN] = "SIGRT0",
+	[SIGRTMIN + 1] = "SIGRT1",
+	[SIGRTMIN + 2] = "SIGRT2",
+	[SIGRTMIN + 3] = "SIGRT3",
+	[SIGRTMIN + 4] = "SIGRT4",
+	[SIGRTMIN + 5] = "SIGRT5",
+	[SIGRTMIN + 6] = "SIGRT6",
+	[SIGRTMIN + 7] = "SIGRT7",
+	[SIGRTMIN + 8] = "SIGRT8",
+	[SIGRTMIN + 9] = "SIGRT9",
+	[SIGRTMIN + 10] = "SIGRT10",
+	[SIGRTMIN + 11] = "SIGRT11",
+	[SIGRTMIN + 12] = "SIGRT12",
+	[SIGRTMIN + 13] = "SIGRT13",
+	[SIGRTMIN + 14] = "SIGRT14",
+	[SIGRTMIN + 15] = "SIGRT15",
+	[SIGRTMIN + 16] = "SIGRT16",
+	[SIGRTMIN + 17] = "SIGRT17",
+	[SIGRTMIN + 18] = "SIGRT18",
+	[SIGRTMIN + 19] = "SIGRT19",
+	[SIGRTMIN + 20] = "SIGRT20",
+	[SIGRTMIN + 21] = "SIGRT21",
+	[SIGRTMIN + 22] = "SIGRT22",
+	[SIGRTMIN + 23] = "SIGRT23",
+	[SIGRTMIN + 24] = "SIGRT24",
+	[SIGRTMIN + 25] = "SIGRT25",
+	[SIGRTMIN + 26] = "SIGRT26",
+	[SIGRTMIN + 27] = "SIGRT27",
+	[SIGRTMIN + 28] = "SIGRT28",
+	[SIGRTMIN + 29] = "SIGRT29",
+	[SIGRTMIN + 30] = "SIGRT30",
+	[SIGRTMIN + 31] = "SIGRT31",
+	[SIGRTMIN + 32] = "SIGRT32",
+	[SIGRTMIN + 33] = "SIGRT33",
+	[SIGRTMIN + 34] = "SIGRT34",
+	[SIGRTMIN + 35] = "SIGRT35",
+	[SIGRTMIN + 36] = "SIGRT36",
+	[SIGRTMIN + 37] = "SIGRT37",
+	[SIGRTMIN + 38] = "SIGRT38",
+	[SIGRTMIN + 39] = "SIGRT39",
+	[SIGRTMIN + 40] = "SIGRT40",
+	[SIGRTMIN + 41] = "SIGRT41",
+	[SIGRTMIN + 42] = "SIGRT42",
+	[SIGRTMIN + 43] = "SIGRT43",
+	[SIGRTMIN + 44] = "SIGRT44",
+	[SIGRTMIN + 45] = "SIGRT45",
+	[SIGRTMIN + 46] = "SIGRT46",
+	[SIGRTMIN + 47] = "SIGRT47",
+	[SIGRTMIN + 48] = "SIGRT48",
+	[SIGRTMIN + 49] = "SIGRT49",
+	[SIGRTMIN + 50] = "SIGRT50",
+	[SIGRTMIN + 51] = "SIGRT51",
+	[SIGRTMIN + 52] = "SIGRT52",
+	[SIGRTMIN + 53] = "SIGRT53",
+	[SIGRTMIN + 54] = "SIGRT54",
+	[SIGRTMIN + 55] = "SIGRT55",
+	[SIGRTMIN + 56] = "SIGRT56",
+	[SIGRTMIN + 57] = "SIGRT57",
+	[SIGRTMIN + 58] = "SIGRT58",
+	[SIGRTMIN + 59] = "SIGRT59",
+	[SIGRTMIN + 60] = "SIGRT60",
+	[SIGRTMIN + 61] = "SIGRT61",
+};
+
+const char *
+sysdecode_signal(int sig)
+{
+
+	if ((unsigned)sig < nitems(signames))
+		return (signames[sig]);
+	return (NULL);
+}

Modified: stable/11/lib/libsysdecode/syscallnames.c
==============================================================================
--- stable/11/lib/libsysdecode/syscallnames.c	Thu Jan 12 21:46:31 2017	(r311998)
+++ stable/11/lib/libsysdecode/syscallnames.c	Thu Jan 12 22:06:57 2017	(r311999)
@@ -35,6 +35,9 @@ __FBSDID("$FreeBSD$");
  */
 
 #include <sys/param.h>
+#include <sys/acl.h>
+#include <sys/wait.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <sysdecode.h>
 

Modified: stable/11/lib/libsysdecode/sysdecode.3
==============================================================================
--- stable/11/lib/libsysdecode/sysdecode.3	Thu Jan 12 21:46:31 2017	(r311998)
+++ stable/11/lib/libsysdecode/sysdecode.3	Thu Jan 12 22:06:57 2017	(r311999)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 29, 2016
+.Dd October 17, 2016
 .Dt SYSDECODE 3
 .Os
 .Sh NAME
@@ -33,6 +33,10 @@
 .Nd system argument decoding library
 .Sh LIBRARY
 .Lb libsysdecode
+.Sh SYNOPSIS
+.In sys/types.h
+.In stdbool.h
+.In sysdecode.h
 .Sh DESCRIPTION
 The
 .Nm
@@ -65,7 +69,14 @@ A placeholder for use when the ABI is no
 .El
 .Sh SEE ALSO
 .Xr sysdecode_abi_to_freebsd_errno 3 ,
+.Xr sysdecode_cap_rights 3 ,
+.Xr sysdecode_enum 3 ,
+.Xr sysdecode_fcntl_arg 3 ,
 .Xr sysdecode_ioctlname 3 ,
+.Xr sysdecode_mask 3 ,
+.Xr sysdecode_quotactl_cmd 3 ,
+.Xr sysdecode_sigcode 3 ,
+.Xr sysdecode_sockopt_name 3 ,
 .Xr sysdecode_syscallnames 3 ,
 .Xr sysdecode_utrace 3
 .Sh HISTORY

Modified: stable/11/lib/libsysdecode/sysdecode.h
==============================================================================
--- stable/11/lib/libsysdecode/sysdecode.h	Thu Jan 12 21:46:31 2017	(r311998)
+++ stable/11/lib/libsysdecode/sysdecode.h	Thu Jan 12 22:06:57 2017	(r311999)
@@ -39,9 +39,79 @@ enum sysdecode_abi {
 };
 
 int	sysdecode_abi_to_freebsd_errno(enum sysdecode_abi _abi, int _error);
+bool	sysdecode_access_mode(FILE *_fp, int _mode, int *_rem);
+const char *sysdecode_acltype(int _type);
+const char *sysdecode_atfd(int _fd);
+bool	sysdecode_cap_fcntlrights(FILE *_fp, uint32_t _rights, uint32_t *_rem);
+void	sysdecode_cap_rights(FILE *_fp, cap_rights_t *_rightsp);
+const char *sysdecode_extattrnamespace(int _namespace);
+const char *sysdecode_fadvice(int _advice);
+void	sysdecode_fcntl_arg(FILE *_fp, int _cmd, uintptr_t _arg, int _base);
+bool	sysdecode_fcntl_arg_p(int _cmd);
+const char *sysdecode_fcntl_cmd(int _cmd);
+bool	sysdecode_fcntl_fileflags(FILE *_fp, int _flags, int *_rem);
+bool	sysdecode_fileflags(FILE *_fp, fflags_t _flags, fflags_t *_rem);
+bool	sysdecode_filemode(FILE *_fp, int _mode, int *_rem);
+bool	sysdecode_flock_operation(FILE *_fp, int _operation, int *_rem);
 int	sysdecode_freebsd_to_abi_errno(enum sysdecode_abi _abi, int _error);
+const char *sysdecode_getfsstat_mode(int _mode);
+const char *sysdecode_idtype(int _idtype);
 const char *sysdecode_ioctlname(unsigned long _val);
+const char *sysdecode_ipproto(int _protocol);
+const char *sysdecode_kldsym_cmd(int _cmd);
+const char *sysdecode_kldunload_flags(int _flags);
+const char *sysdecode_lio_listio_mode(int _mode);
+const char *sysdecode_madvice(int _advice);
+const char *sysdecode_minherit_inherit(int _inherit);
+const char *sysdecode_msgctl_cmd(int _cmd);
+bool	sysdecode_mlockall_flags(FILE *_fp, int _flags, int *_rem);
+bool	sysdecode_mmap_flags(FILE *_fp, int _flags, int *_rem);
+bool	sysdecode_mmap_prot(FILE *_fp, int _prot, int *_rem);
+bool	sysdecode_mount_flags(FILE *_fp, int _flags, int *_rem);
+bool	sysdecode_msg_flags(FILE *_fp, int _flags, int *_rem);
+bool	sysdecode_msync_flags(FILE *_fp, int _flags, int *_rem);
+const char *sysdecode_nfssvc_flags(int _flags);
+bool	sysdecode_open_flags(FILE *_fp, int _flags, int *_rem);
+bool	sysdecode_pipe2_flags(FILE *_fp, int _flags, int *_rem);
+const char *sysdecode_prio_which(int _which);
+const char *sysdecode_procctl_cmd(int _cmd);
+const char *sysdecode_ptrace_request(int _request);
+bool	sysdecode_quotactl_cmd(FILE *_fp, int _cmd);
+bool	sysdecode_reboot_howto(FILE *_fp, int _howto, int *_rem);
+bool	sysdecode_rfork_flags(FILE *_fp, int _flags, int *_rem);
+const char *sysdecode_rlimit(int _resource);
+const char *sysdecode_rtprio_function(int _function);
+const char *sysdecode_scheduler_policy(int _policy);
+const char *sysdecode_semctl_cmd(int _cmd);
+bool	sysdecode_semget_flags(FILE *_fp, int _flag, int *_rem);
+bool	sysdecode_sendfile_flags(FILE *_fp, int _flags, int *_rem);
+bool	sysdecode_shmat_flags(FILE *_fp, int _flags, int *_rem);
+const char *sysdecode_shmctl_cmd(int _cmd);
+const char *sysdecode_shutdown_how(int _how);
+const char *sysdecode_sigbus_code(int _si_code);
+const char *sysdecode_sigchld_code(int _si_code);
+const char *sysdecode_sigcode(int _sig, int _si_code);
+const char *sysdecode_sigfpe_code(int _si_code);
+const char *sysdecode_sigill_code(int _si_code);
+const char *sysdecode_signal(int _sig);
+const char *sysdecode_sigprocmask_how(int _how);
+const char *sysdecode_sigsegv_code(int _si_code);
+const char *sysdecode_sigtrap_code(int _si_code);
+const char *sysdecode_sockaddr_family(int _sa_family);
+const char *sysdecode_socketdomain(int _domain);
+bool	sysdecode_socket_type(FILE *_fp, int _type, int *_rem);
+const char *sysdecode_sockopt_level(int _level);
+const char *sysdecode_sockopt_name(int _level, int _optname);
 const char *sysdecode_syscallname(enum sysdecode_abi _abi, unsigned int _code);
+bool	sysdecode_thr_create_flags(FILE *_fp, int _flags, int *_rem);
+bool	sysdecode_umtx_cvwait_flags(FILE *_fp, u_long _flags, u_long *_rem);
+const char *sysdecode_umtx_op(int _op);
+bool	sysdecode_umtx_rwlock_flags(FILE *_fp, u_long _flags, u_long *_rem);
 int	sysdecode_utrace(FILE *_fp, void *_buf, size_t _len);
+bool	sysdecode_vmprot(FILE *_fp, int _type, int *_rem);
+const char *sysdecode_vmresult(int _result);
+bool	sysdecode_wait4_options(FILE *_fp, int _options, int *_rem);
+bool	sysdecode_wait6_options(FILE *_fp, int _options, int *_rem);
+const char *sysdecode_whence(int _whence);
 
 #endif /* !__SYSDECODE_H__ */

Modified: stable/11/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3
==============================================================================
--- stable/11/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3	Thu Jan 12 21:46:31 2017	(r311998)
+++ stable/11/lib/libsysdecode/sysdecode_abi_to_freebsd_errno.3	Thu Jan 12 22:06:57 2017	(r311999)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 23, 2016
+.Dd October 17, 2016
 .Dt sysdecode_abi_to_freebsd_errno 3
 .Os
 .Sh NAME
@@ -35,6 +35,9 @@
 .Sh LIBRARY
 .Lb libsysdecode
 .Sh SYNOPSIS
+.In sys/types.h
+.In stdbool.h
+.In sysdecode.h
 .Ft int
 .Fn sysdecode_abi_to_freebsd_errno "enum sysdecode_abi abi" "int error"
 .Ft int

Copied: stable/11/lib/libsysdecode/sysdecode_cap_rights.3 (from r307538, head/lib/libsysdecode/sysdecode_cap_rights.3)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/11/lib/libsysdecode/sysdecode_cap_rights.3	Thu Jan 12 22:06:57 2017	(r311999, copy of r307538, head/lib/libsysdecode/sysdecode_cap_rights.3)
@@ -0,0 +1,50 @@
+.\"
+.\" Copyright (c) 2016 John Baldwin <jhb at FreeBSD.org>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 17, 2016
+.Dt sysdecode_cap_rights 3
+.Os
+.Sh NAME
+.Nm sysdecode_cap_rights
+.Nd output list of capability rights
+.Sh LIBRARY
+.Lb libsysdecode
+.Sh SYNOPSIS
+.In sys/types.h
+.In stdbool.h
+.In sysdecode.h
+.Ft void
+.Fn sysdecode_cap_rights "FILE *fp" "cap_rights_t *rightsp"
+.Sh DESCRIPTION
+The
+.Fn sysdecode_cap_rights
+function outputs a comma-separated list of capability rights at
+.Fa rightsp
+to the stream
+.Fa fp .
+.Sh SEE ALSO
+.Xr sysdecode 3

Copied and modified: stable/11/lib/libsysdecode/sysdecode_enum.3 (from r307538, head/lib/libsysdecode/sysdecode_enum.3)
==============================================================================
--- head/lib/libsysdecode/sysdecode_enum.3	Mon Oct 17 22:37:07 2016	(r307538, copy source)
+++ stable/11/lib/libsysdecode/sysdecode_enum.3	Thu Jan 12 22:06:57 2017	(r311999)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 17, 2016
+.Dd January 2, 2017
 .Dt sysdecode_enum 3
 .Os
 .Sh NAME
@@ -35,6 +35,7 @@
 .Nm sysdecode_extattrnamespace ,
 .Nm sysdecode_fadvice ,
 .Nm sysdecode_fcntl_cmd ,
+.Nm sysdecode_getfsstat_mode ,
 .Nm sysdecode_idtype ,
 .Nm sysdecode_ipproto ,
 .Nm sysdecode_kldsym_cmd ,
@@ -86,6 +87,8 @@
 .Ft const char *
 .Fn sysdecode_fcntl_cmd "int cmd"
 .Ft const char *
+.Fn sysdecode_getfsstat_mode "int mode"
+.Ft const char *
 .Fn sysdecode_idtype "int idtype"
 .Ft const char *
 .Fn sysdecode_ipproto "int protocol"
@@ -168,6 +171,7 @@ Most of these functions decode an argume
 .It Fn sysdecode_extattrnamespace Ta Xr extattr_get_fd 2 Ta Fa attrnamespace
 .It Fn sysdecode_fadvice Ta Xr posix_fadvise 2 Ta Fa advice
 .It Fn sysdecode_fcntl_cmd Ta Xr fcntl 2 Ta Fa cmd
+.It Fn sysdecode_getfsstat_mode Ta Xr getfsstat 2 Ta Fa mode
 .It Fn sysdecode_idtype Ta
 .Xr procctl 2 ,
 .Xr waitid 2

Copied: stable/11/lib/libsysdecode/sysdecode_fcntl_arg.3 (from r307538, head/lib/libsysdecode/sysdecode_fcntl_arg.3)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/11/lib/libsysdecode/sysdecode_fcntl_arg.3	Thu Jan 12 22:06:57 2017	(r311999, copy of r307538, head/lib/libsysdecode/sysdecode_fcntl_arg.3)
@@ -0,0 +1,121 @@
+.\"
+.\" Copyright (c) 2016 John Baldwin <jhb at FreeBSD.org>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 17, 2016
+.Dt sysdecode_fcntl_arg 3
+.Os
+.Sh NAME
+.Nm sysdecode_fcntl_arg ,
+.Nm sysdecode_fcntl_arg_p
+.Nd output description of fcntl argument
+.Sh LIBRARY
+.Lb libsysdecode
+.Sh SYNOPSIS
+.In sys/types.h
+.In stdbool.h
+.In sysdecode.h
+.Ft void
+.Fn sysdecode_fcntl_arg "FILE *fp" "int cmd" "uintptr_t arg" "int base"
+.Ft bool
+.Fn sysdecode_fcntl_arg_p "int cmd"
+.Sh DESCRIPTION
+The
+.Fn sysdecode_fcntl_arg
+function outputs a text description of the optional
+.Fa arg
+argument to
+.Xr fcntl 2
+to the stream
+.Fa fp .
+The type and format of
+.Fa arg
+are determined by
+.Fa cmd :
+.Bl -column ".Dv F_SETLKW" "Vt struct flock *"
+.It Sy Command Ta Fa arg Sy Type Ta Sy Output Format
+.It
+.It Dv F_SETFD Ta Vt int Ta
+.Dq FD_CLOEXEC
+or the value of
+.Fa arg
+in the indicated
+.Fa base
+.Pq one of 8, 10, or 16 .
+.It
+.It Dv F_SETFL Ta Vt int Ta
+File flags as output by
+.Xr sysdecode_fcntl_fileflags 3
+with any unknown or remaining bits output in hexadecimal.
+.It
+.It Dv F_GETLK Ta Vt struct flock * Ta
+.It Dv F_SETLK Ta Vt struct flock * Ta
+.It Dv F_SETLKW Ta Vt struct flock * Ta
+The value of
+.Fa arg
+using the
+.Dq %p
+conversion specification.
+.It
+.It Others Ta Vt int Ta
+The value of
+.Fa arg
+in the indicated
+.Fa base
+.Pq one of 8, 10, or 16 .
+.El
+.Pp
+The
+.Fn sysdecode_fcntl_arg_p
+function can be used to determine if a
+.Xr fcntl 2
+command uses the optional third argument to
+.Xr fcntl 2 .
+The function returns
+.Dv true
+if
+.Fa cmd
+accepts a third argument to
+.Xr fcntl 2
+and
+.Dv false
+if it does not.
+.Sh RETURN VALUES
+The
+.Nm sysdecode_fcntl_arg_p
+function returns
+.Dv true
+if
+.Fa cmd
+accepts a third argument to
+.Xr fcntl 2
+and
+.Dv false
+if it does not.
+.Sh SEE ALSO
+.Xr sysdecode 3 ,
+.Xr sysdecode_fcntl_cmd 3 ,
+.Xr sysdecode_fcntl_fileflags 3

Modified: stable/11/lib/libsysdecode/sysdecode_ioctlname.3
==============================================================================
--- stable/11/lib/libsysdecode/sysdecode_ioctlname.3	Thu Jan 12 21:46:31 2017	(r311998)
+++ stable/11/lib/libsysdecode/sysdecode_ioctlname.3	Thu Jan 12 22:06:57 2017	(r311999)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd December 12, 2015
+.Dd October 17, 2016
 .Dt sysdecode_ioctlname 3
 .Os
 .Sh NAME
@@ -34,6 +34,9 @@
 .Sh LIBRARY
 .Lb libsysdecode
 .Sh SYNOPSIS
+.In sys/types.h
+.In stdbool.h
+.In sysdecode.h
 .Ft conts char *
 .Fn sysdecode_ioctlname "unsigned long request"
 .Sh DESCRIPTION

Copied and modified: stable/11/lib/libsysdecode/sysdecode_mask.3 (from r307538, head/lib/libsysdecode/sysdecode_mask.3)
==============================================================================
--- head/lib/libsysdecode/sysdecode_mask.3	Mon Oct 17 22:37:07 2016	(r307538, copy source)
+++ stable/11/lib/libsysdecode/sysdecode_mask.3	Thu Jan 12 22:06:57 2017	(r311999)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 17, 2016
+.Dd January 2, 2017
 .Dt sysdecode_mask 3
 .Os
 .Sh NAME
@@ -36,7 +36,6 @@
 .Nm sysdecode_fileflags ,
 .Nm sysdecode_filemode ,
 .Nm sysdecode_flock_operation ,
-.Nm sysdecode_getfsstat_flags ,
 .Nm sysdecode_mlockall_flags ,
 .Nm sysdecode_mmap_flags ,
 .Nm sysdecode_mmap_prot ,
@@ -153,7 +152,6 @@ Most of these functions decode an argume
 .It Fn sysdecode_fileflags Ta Xr chflags 2 Ta Fa flags
 .It Fn sysdecode_filemode Ta Xr chmod 2 , Xr open 2 Ta mode
 .It Fn sysdecode_flock_operation Ta Xr flock 2 Ta Fa operation
-.It Fn sysdecode_getfsstat_flags Ta Xr getfsstatflags 2 Ta Fa flags
 .It Fn sysdecode_mlockall_flags Ta Xr mlockall 2 Ta Fa flags
 .It Fn sysdecode_mmap_flags Ta Xr mmap 2 Ta Fa flags
 .It Fn sysdecode_mmap_prot Ta Xr mmap 2 Ta Fa prot

Copied: stable/11/lib/libsysdecode/sysdecode_quotactl_cmd.3 (from r307538, head/lib/libsysdecode/sysdecode_quotactl_cmd.3)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/11/lib/libsysdecode/sysdecode_quotactl_cmd.3	Thu Jan 12 22:06:57 2017	(r311999, copy of r307538, head/lib/libsysdecode/sysdecode_quotactl_cmd.3)
@@ -0,0 +1,93 @@
+.\"
+.\" Copyright (c) 2016 John Baldwin <jhb at FreeBSD.org>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 17, 2016
+.Dt sysdecode_quotactl_cmd 3
+.Os
+.Sh NAME
+.Nm sysdecode_quotactl_cmd
+.Nd output name of quotactl command
+.Sh LIBRARY
+.Lb libsysdecode
+.Sh SYNOPSIS
+.In sys/types.h
+.In stdbool.h
+.In sysdecode.h
+.Ft bool
+.Fn sysdecode_quotactl_cmd "FILE *fp" "int cmd"
+.Sh DESCRIPTION
+The
+.Fn sysdecode_quotactl_cmd
+function outputs a text description of the
+.Fa cmd
+argument to
+.Xr quotactl 2
+to the stream
+.Fa fp .
+The description is formatted as an invocation of the
+.Dv QCMD
+macro defined in the
+.In ufs/ufs/quota.h
+header.
+.Pp
+The function first computes the primary and secondary values used by
+.Dv QCMD
+to construct
+.Fa cmd .
+If the primary command value does not represent a known constant,
+.Fn sysdecode_quotactl_cmd
+does not generate any output and returns
+.Dv false .
+Otherwise,
+.Fn sysdecode_quotactl_cmd
+outputs text depicting an invocation of
+.Dv QCMD
+with the associated constants for the primary and secondary command values
+and returns
+.Dv true .
+If the secondary command values does not represent a known constant,
+its value is output as a hexadecimal integer.
+.Sh RETURN VALUES
+The
+.Nm sysdecode_quotactl_cmd
+function returns
+.Dv true
+if it outputs a description of
+.Fa cmd
+and
+.Dv false
+if it does not.
+.Sh EXAMPLES
+The statement
+.Pp
+.Dl sysdecode_quotatcl_cmd(stdout, QCMD(Q_GETQUOTA, USRQUOTA);
+.Pp
+outputs the text
+.Dq QCMD(Q_GETQUOTA, USRQUOTA)
+to standard output.
+.Sh SEE ALSO
+.Xr sysdecode 3

Copied: stable/11/lib/libsysdecode/sysdecode_sigcode.3 (from r307538, head/lib/libsysdecode/sysdecode_sigcode.3)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/11/lib/libsysdecode/sysdecode_sigcode.3	Thu Jan 12 22:06:57 2017	(r311999, copy of r307538, head/lib/libsysdecode/sysdecode_sigcode.3)
@@ -0,0 +1,83 @@
+.\"
+.\" Copyright (c) 2016 John Baldwin <jhb at FreeBSD.org>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 17, 2016
+.Dt sysdecode_sigcode 3
+.Os
+.Sh NAME
+.Nm sysdecode_sigcode
+.Nd lookup name of signal code
+.Sh LIBRARY
+.Lb libsysdecode
+.Sh SYNOPSIS
+.In sys/types.h
+.In stdbool.h
+.In sysdecode.h
+.Ft const char *
+.Fn sysdecode_sigcode "int signal" "int si_code"
+.Sh DESCRIPTION
+The
+.Fn sysdecode_sigcode
+function returns a text description of the
+.Fa si_code
+field of the
+.Vt siginfo_t
+object associated with an instance of signal
+.Fa sig .
+The text description contains the name of the C macro whose value matches
+.Fa si_code .
+General purpose signal codes such as
+.Dv SI_USER
+are handled as well as signal-specific codes for
+.Dv SIGBUS ,
+.Dv SIGCHLD ,
+.Dv SIGFPE ,
+.Dv SIGILL ,
+.Dv SIGSEGV
+and
+.Dv SIGTRAP .
+If
+.Fa si_code
+does not represent a known signal code,
+.Fn sysdecode_sigcode
+returns
+.Dv NULL .
+.Sh RETURN VALUES
+The
+.Fn sysdecode_sigcode
+function returns a pointer to a signal code description or
+.Dv NULL
+if
+.Fa si_code
+is not a known signal code.
+.Sh SEE ALSO
+.Xr sysdecode_sigbus_code 3 ,
+.Xr sysdecode_sigchld_code 3 ,
+.Xr sysdecode_sigfpe_code 3 ,
+.Xr sysdecode_sigill_code 3 ,
+.Xr sysdecode_sigsegv_code 3 ,
+.Xr sysdecode_sigtrap_code 3

Copied: stable/11/lib/libsysdecode/sysdecode_sockopt_name.3 (from r307538, head/lib/libsysdecode/sysdecode_sockopt_name.3)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/11/lib/libsysdecode/sysdecode_sockopt_name.3	Thu Jan 12 22:06:57 2017	(r311999, copy of r307538, head/lib/libsysdecode/sysdecode_sockopt_name.3)
@@ -0,0 +1,61 @@
+.\"
+.\" Copyright (c) 2016 John Baldwin <jhb at FreeBSD.org>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-all mailing list