1.\" 2.\" Copyright (c) 2016 John Baldwin <jhb@FreeBSD.org> 3.\" All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice, this list of conditions and the following disclaimer. 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 14.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24.\" SUCH DAMAGE. 25.\" 26.\" $FreeBSD$ 27.\" 28.Dd October 17, 2016 29.Dt sysdecode_mask 3 30.Os 31.Sh NAME 32.Nm sysdecode_mask , 33.Nm sysdecode_accessmode , 34.Nm sysdecode_capfcntlrights , 35.Nm sysdecode_fcntl_fileflags , 36.Nm sysdecode_fileflags , 37.Nm sysdecode_filemode , 38.Nm sysdecode_flock_operation , 39.Nm sysdecode_getfsstat_flags , 40.Nm sysdecode_mlockall_flags , 41.Nm sysdecode_mmap_flags , 42.Nm sysdecode_mmap_prot , 43.Nm sysdecode_mount_flags , 44.Nm sysdecode_msg_flags , 45.Nm sysdecode_msync_flags , 46.Nm sysdecode_open_flags , 47.Nm sysdecode_pipe2_flags , 48.Nm sysdecode_reboot_howto , 49.Nm sysdecode_rfork_flags , 50.Nm sysdecode_semget_flags , 51.Nm sysdecode_sendfile_flags , 52.Nm sysdecode_shmat_flags , 53.Nm sysdecode_socket_type , 54.Nm sysdecode_thr_create_flags , 55.Nm sysdecode_umtx_cvwait_flags , 56.Nm sysdecode_umtx_rwlock_flags , 57.Nm sysdecode_vmprot , 58.Nm sysdecode_wait4_options , 59.Nm sysdecode_wait6_options 60.Nd print name of various bitmask values 61.Sh LIBRARY 62.Lb libsysdecode 63.Sh SYNOPSIS 64.In sys/types.h 65.In stdbool.h 66.In sysdecode.h 67.Ft bool 68.Fn sysdecode_access_mode "FILE *fp" "int mode" "int *rem" 69.Ft bool 70.Fn sysdecode_cap_fcntlrights "FILE *fp" "uint32_t rights" "uint32_t *rem" 71.Ft bool 72.Fn sysdecode_fcntl_fileflags "FILE *fp" "int flags" "int *rem" 73.Ft bool 74.Fn sysdecode_fileflags "FILE *fp" "fflags_t flags" "fflags_t *rem" 75.Ft bool 76.Fn sysdecode_filemode "FILE *fp" "int mode" "int *rem" 77.Ft bool 78.Fn sysdecode_flock_operation "FILE *fp" "int operation" "int *rem" 79.Ft bool 80.Fn sysdecode_mlockall_flags "FILE *fp" "int flags" "int *rem" 81.Ft bool 82.Fn sysdecode_mmap_flags "FILE *fp" "int flags" "int *rem" 83.Ft bool 84.Fn sysdecode_mmap_prot "FILE *fp" "int prot" "int *rem" 85.Ft bool 86.Fn sysdecode_mount_flags "FILE *fp" "int flags" "int *rem" 87.Ft bool 88.Fn sysdecode_msg_flags "FILE *fp" "int flags" "int *rem" 89.Ft bool 90.Fn sysdecode_msync_flags "FILE *fp" "int flags" "int *rem" 91.Ft bool 92.Fn sysdecode_open_flags "FILE *fp" "int flags" "int *rem" 93.Ft bool 94.Fn sysdecode_pipe2_flags "FILE *fp" "int flags" "int *rem" 95.Ft bool 96.Fn sysdecode_reboot_howto "FILE *fp" "int howto" "int *rem" 97.Ft bool 98.Fn sysdecode_rfork_flags "FILE *fp" "int flags" "int *rem" 99.Ft bool 100.Fn sysdecode_semget_flags "FILE *fp" "int flags" "int *rem" 101.Ft bool 102.Fn sysdecode_sendfile_flags "FILE *fp" "int flags" "int *rem" 103.Ft bool 104.Fn sysdecode_shmat_flags "FILE *fp" "int flags" "int *rem" 105.Ft bool 106.Fn sysdecode_socket_type "FILE *fp" "int type" "int *rem" 107.Ft bool 108.Fn sysdecode_thr_create_flags "FILE *fp" "int flags" "int *rem" 109.Ft bool 110.Fn sysdecode_umtx_cvwait_flags "FILE *fp" "u_long flags" "u_long *rem" 111.Ft bool 112.Fn sysdecode_umtx_rwlock_flags "FILE *fp" "u_long flags" "u_long *rem" 113.Ft bool 114.Fn sysdecode_vmprot "FILE *fp" "int type" "int *rem" 115.Ft bool 116.Fn sysdecode_wait4_options "FILE *fp" "int options" "int *rem" 117.Ft bool 118.Fn sysdecode_wait6_options "FILE *fp" "int options" "int *rem" 119.Sh DESCRIPTION 120The 121.Nm 122functions are used to generate a text description of an integer value 123built from a mask of bitfields. 124The text description lists the C macros for field values joined by pipe 125.Sq | 126characters matching the format used in C source code. 127Most of the values decoded by these functions are passed as arguments to 128system calls, 129though some of these values are used internally in the kernel. 130.Pp 131Each function writes the text description to 132.Fa fp . 133The second argument should contain the integer value to be decoded. 134The 135.Fa rem 136argument is set to the value of any bits that were not decoded 137.Pq bit fields that do not have a corresponding C macro . 138.Fa rem 139may be set to 140.Dv NULL 141if the caller does not need this value. 142Each function returns 143.Dv true 144if any bit fields in the value were decoded and 145.Dv false 146if no bit fields were decoded. 147.Pp 148Most of these functions decode an argument passed to a system call: 149.Bl -column "Fn sysdecode_flock_operation" "Xr cap_fcntls_limit 2" 150.It Sy Function Ta Sy System Call Ta Sy Argument 151.It Fn sysdecode_access_mode Ta Xr access 2 Ta Fa mode 152.It Fn sysdecode_cap_fcntlrights Ta Xr cap_fcntls_limit 2 Ta Fa fcntlrights 153.It Fn sysdecode_fileflags Ta Xr chflags 2 Ta Fa flags 154.It Fn sysdecode_filemode Ta Xr chmod 2 , Xr open 2 Ta mode 155.It Fn sysdecode_flock_operation Ta Xr flock 2 Ta Fa operation 156.It Fn sysdecode_getfsstat_flags Ta Xr getfsstatflags 2 Ta Fa flags 157.It Fn sysdecode_mlockall_flags Ta Xr mlockall 2 Ta Fa flags 158.It Fn sysdecode_mmap_flags Ta Xr mmap 2 Ta Fa flags 159.It Fn sysdecode_mmap_prot Ta Xr mmap 2 Ta Fa prot 160.It Fn sysdecode_mount_flags Ta Xr mount 2 Ta Fa flags 161.It Fn sysdecode_msg_flags Ta Xr recv 2 , Xr send 2 Ta Fa flags 162.It Fn sysdecode_msync_flags Ta Xr msync 2 Ta Fa flags 163.It Fn sysdecode_open_flags Ta Xr open 2 Ta Fa flags 164.It Fn sysdecode_pipe2_flags Ta Xr pipe2 Ta Fa flags 165.It Fn sysdecode_reboot_howto Ta Xr reboot 2 Ta Fa howto 166.It Fn sysdecode_rfork_flags Ta Xr rfork 2 Ta Fa flags 167.It Fn sysdecode_semget_flags Ta Xr semget 2 Ta Fa flags 168.It Fn sysdecode_sendfile_flags Ta Xr sendfile 2 Ta Fa flags 169.It Fn sysdecode_shmat_flags Ta Xr shmat 2 Ta Fa flags 170.It Fn sysdecode_socket_type Ta Xr socket 2 Ta Fa type 171.It Fn sysdecode_thr_create_flags Ta Xr thr_create 2 Ta Fa flags 172.It Fn sysdecode_wait4_options Ta Xr wait4 2 Ta Fa options 173.It Fn sysdecode_wait6_options Ta Xr wait6 2 Ta Fa options 174.El 175.Pp 176Other functions decode the values described below: 177.Bl -tag -width ".Fn sysdecode_umtx_cvwait_flags" 178.It Fn sysdecode_fcntl_fileflags 179The file flags used with the 180.Dv F_GETFL 181and 182.Dv F_SETFL 183.Xr fcntl 2 184commands. 185.It Fn sysdecode_umtx_cvwait_flags 186The 187.Fa val 188argument to 189.Xr _umtx_op 2 190for 191.Dv UMTX_OP_CV_WAIT 192operations. 193.It Fn sysdecode_umtx_rwlock_flags 194The 195.Fa val 196argument to 197.Xr _umtx_op 2 198for 199.Dv UMTX_OP_RW_RDLOCK 200operations. 201.It Fn sysdecode_vmprot 202The memory protection flags stored in 203.Vt vm_prot_t 204variables. 205.El 206.Sh RETURN VALUES 207The 208.Nm 209functions return 210.Dv true 211if any bit fields in the value were decoded and 212.Dv false 213if no bit fields were decoded. 214.Sh SEE ALSO 215.Xr sysdecode 3 , 216.Xr sysdecode_enum 3 217