summaryrefslogtreecommitdiff
path: root/lib/libsysdecode/flags.c
AgeCommit message (Collapse)Author
2025-07-06libsysdecode: Add O_CLOFORK flags to sysdecodeRicardo Branco
Reviewed by: kib MFC after: 1 month Pull Request: https://github.com/freebsd/freebsd-src/pull/1698
2025-07-04libsysdecode: Add support for decoding inotify syscall flagsMark Johnston
MFC after: 3 months Sponsored by: Klara, Inc.
2024-03-04libsysdecode: add a decoder for pollfd eventsKyle Evans
We'll use this in another change to read pollfd arrays coming from a successful poll(2) operation. Reviewed by: bapt, jhb Differential Revision: https://reviews.freebsd.org/D44159
2023-08-16Remove $FreeBSD$: one-line .c patternWarner Losh
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
2023-08-14vm: Allow MAP_32BIT for all architecturesDmitry Chagin
Reviewed by: alc, kib, markj Differential revision: https://reviews.freebsd.org/D41435
2022-06-22libsysdecode: Decode setitimer, getitimer which argumentDmitry Chagin
Reviewed by: jhb Differential revision: https://reviews.freebsd.org/D35230 MFC after: 2 weeks
2022-06-22libsysdecode: For future use extract common code to a separate filesDmitry Chagin
Reviewed by: jhb, emaste Differential revision: https://reviews.freebsd.org/D35353 MFC after: 2 weeks
2022-04-13libsysdecode: Fix decoding of Capsicum rightsMark Johnston
Capsicum rights are a bit tricky since some of them are subsets of others, and one can have rights R1 and R2 such that R1 is a subset of R2, but there is no collection of named rights whose union is R2. So, they don't behave like most other flag sets. sysdecode_cap_rights(3) does not handle this properly and so can emit misleading decodings. Try to fix all of these problems: - Include composite rights in the caprights table. - Use a constructor to sort the caprights table such that "larger" rights appear first and thus are matched first. - Don't print rights that are a subset of rights already printed, so as to minimize the length of the output. - Print a trailing message if some of the specific rights are not matched by the table. PR: 263165 Reviewed by: pauamma_gundo.com (doc), jhb, emaste MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D34874
2022-03-03fd: add close_range(..., CLOSE_RANGE_CLOEXEC)Mateusz Guzik
For compatibility with Linux. MFC after: 3 days Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D34424
2020-12-09libsysdecode: decode _UMTX_OP flagsKyle Evans
Assume that UMTX_OP with a double underbar following is a flag, while any underbar+alphanumeric combination immeiately following is an op. This was a part of D27325. Reviewed by: kib Notes: svn path=/head/; revision=368480
2020-11-26libsysdecode: account for invalid protection flagsPawel Biernacki
Reported by: jhb MFC with: r368022 Notes: svn path=/head/; revision=368053
2020-11-25libsysdecode: correctly decode mmap flagsPawel Biernacki
r352913 added decoding of mmap PROT_MAX()'d flags but didn’t account for the case where different values were specified for PROT_MAX and regular flags. Fix it. Submitted by: sigsys_gmail.com Reported by: sigsys_gmail.com MFC after: 7 days Differential Revision: https://reviews.freebsd.org/D27312 Notes: svn path=/head/; revision=368022
2020-02-19libsysdecode: grab shmflags from sys/mman.h, add decode methodKyle Evans
Any SHM_* flag here is (and likely will continue to be) a shmflag that may be passed to shm_open2(), with exception to SHM_ANON. This is a prereq to adding appropriate support to truss/kdump. Reviewed by: kaktus (slightly earlier version) Differential Revision: https://reviews.freebsd.org/D23733 Notes: svn path=/head/; revision=358115
2019-09-30libsysdecode: decode PROT_MAX flagsPawel Biernacki
Extend libsysdecode to pretty-print PROT_MAX flags and fix decoding of regular protection flags broken since r349240. before: truss: mmap(0x0,40960,0x30000,MAP_PRIVATE|MAP_ANON|MAP_NOCORE,-1,0x0) = 34366234624 (0x800632000) kdump: 11439 protmax CALL mmap(0,0xa000,0x30000<><invalid>196608,0x21002<MAP_PRIVATE|MAP_ANON|MAP_NOCORE>,0xffffffff,0) after: truss: mmap(0x0,40960,PROT_MAX(PROT_READ|PROT_WRITE)|PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON|MAP_NOCORE,-1,0x0) = 34366234624 (0x800632000) kdump: 11439 protmax CALL mmap(0,0xa000,0x30000<PROT_MAX(PROT_READ|PROT_WRITE)|PROT_READ|PROT_WRITE>,0x21002<MAP_PRIVATE|MAP_ANON|MAP_NOCORE>,0xffffffff,0) Reviewed by: kib (mentor) Approved by: kib (mentor) Differential Revision: https://reviews.freebsd.org/D21706 Notes: svn path=/head/; revision=352913
2019-02-04Add missing SCTP_EOR entry.Michael Tuexen
MFC after: 3 days Notes: svn path=/head/; revision=343742
2018-01-15Add support for decoding the nxt_flags, rcv_flags, and snd_flags ofMichael Tuexen
SCTP level cmsgs. Notes: svn path=/head/; revision=328014
2018-01-15Add support for decoding the type of a cmsg.Michael Tuexen
Notes: svn path=/head/; revision=327995
2018-01-14Add a function is decode the sinfo_flags of struct sctp_sndrcvinfo.Michael Tuexen
Notes: svn path=/head/; revision=327966
2018-01-14Add suppor for the supported PR-SCTP policies.Michael Tuexen
Notes: svn path=/head/; revision=327962
2017-11-25Decode kevent structures logged via ktrace(2) in kdump.John Baldwin
- Add a new KTR_STRUCT_ARRAY ktrace record type which dumps an array of structures. The structure name in the record payload is preceded by a size_t containing the size of the individual structures. Use this to replace the previous code that dumped the kevent arrays dumped for kevent(). kdump is now able to decode the kevent structures rather than dumping their contents via a hexdump. One change from before is that the 'changes' and 'events' arrays are not marked with separate 'read' and 'write' annotations in kdump output. Instead, the first array is the 'changes' array, and the second array (only present if kevent doesn't fail with an error) is the 'events' array. For kevent(), empty arrays are denoted by an entry with an array containing zero entries rather than no record. - Move kevent decoding tables from truss to libsysdecode. This adds three new functions to decode members of struct kevent: sysdecode_kevent_filter, sysdecode_kevent_flags, and sysdecode_kevent_fflags. kdump uses these helper functions to pretty-print kevent fields. - Move structure definitions for freebsd11 and freebsd32 kevent structures to <sys/event.h> so that they can be shared with userland. The 32-bit structures are only exposed if _WANT_KEVENT32 is defined. The freebsd11 structures are only exposed if _WANT_FREEBSD11_KEVENT is defined. The 32-bit freebsd11 structure requires both. - Decode freebsd11 kevent structures in truss for the compat11.kevent() system call. - Log 32-bit kevent structures via ktrace for 32-bit compat kevent() system calls. - While here, constify the 'void *data' argument to ktrstruct(). Reviewed by: kib (earlier version) MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D12470 Notes: svn path=/head/; revision=326184
2017-11-07Wrap to 80 columns. No functional change.John Baldwin
Notes: svn path=/head/; revision=325519
2017-10-25RB_POWERCYCLE needs to be handled like RB_POWEROFF for decoding.Warner Losh
Sponsored by: Netflix Notes: svn path=/head/; revision=324984
2017-09-17libsysdecode: report invalid cap_rights_tEd Maste
Previously we'd have an assertion failure in cap_rights_is_set if sysdecode_cap_rights is called with an invalid cap_rights_t, so test for validity first. PR: 222258 Reviewed by: cem MFC after: 1 month Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D12391 Notes: svn path=/head/; revision=323675
2017-09-04Decode pathconf() names, *at() flags, and sysarch() numbers in libsysdecode.John Baldwin
Move tables that were previously in truss over to libsysdecode. truss output is unchanged, but kdump has been updated to decode these fields. In addition, sysdecode_sysarch_number() should support all platforms whereas the old table in truss only supported x86. Notes: svn path=/head/; revision=323151
2017-06-10Improve decoding of RB_AUTOBOOT in the 'howto' argument to reboot().John Baldwin
The reboot() system call accepts a mode (RB_AUTOBOOT, RB_HALT, RB_POWEROFF, or RB_REROOT) as well as zero or more optional flags in 'howto'. However, RB_AUTOBOOT was only displayed if 'howto' was exactly 0. Combinations like 'RB_AUTOBOOT | RB_DUMP' were decoded as 'RB_DUMP'. Instead, imply that RB_AUTOBOOT was specified if none of the other "mode" flags were specified. Notes: svn path=/head/; revision=319765
2017-06-03Decode the 'who' argument passed to getrusage().John Baldwin
Add a new sysdecode_getrusage_who() which decodes the RUSAGE_* constant passed as the first argument to getrusage(). Use this function in both kdump and truss to decode the first argument to getrusage(). PR: 215448 Submitted by: Anton Yuzhaninov <citrin+pr@citrin.ru> MFC after: 1 month Notes: svn path=/head/; revision=319520
2017-05-25Improve the decoding of the third argument of the socket() call.Michael Tuexen
Decoding of the third argument depends on the first one. For doing this, add a corresponding function to libsysdecode. Thanks to jhb@ for suggesting this. Notes: svn path=/head/; revision=318879
2017-05-04Add support for socket option names related to the level IPPROTO_UDPLITE.Michael Tuexen
Notes: svn path=/head/; revision=317789
2017-05-03Add support for socket option names related to the IPPROTO_IPV6 level.Michael Tuexen
Notes: svn path=/head/; revision=317748
2017-05-03Add support for socket option names related to the IPPROTO_SCTP level.Michael Tuexen
Notes: svn path=/head/; revision=317747
2017-03-16Fix libsysdecode vmprot flag decodingSteven Hartland
Fix the regex used to find vmprot table entries and add the missing include. This fixes kdumps output of PFLT arguments which would previously look like: 5202 101546 ktrace PFLT 0x5ae000 0x2<><invalid>2 They now display correctly: 5202 101546 ktrace PFLT 0x5ac000 0x2<VM_PROT_WRITE> MFC after: 1 week Notes: svn path=/head/; revision=315423
2017-03-14Fix sysdecode_cap_rights which currently prints bogus capability rightsTobias Kortkamp
PR: 217787 Reviewed by: jhb, emaste Approved by: jhb Notes: svn path=/head/; revision=315283
2017-01-03Update libsysdecode for getfsstat() 'flags' argument changing to 'mode'.John Baldwin
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. Notes: svn path=/head/; revision=311151
2016-10-25Use binary and (&) instead of logical to extract the mask of a capability.John Baldwin
CID: 1365227 Submitted by: cem Notes: svn path=/head/; revision=307948
2016-10-17Move mksubr from kdump into libsysdecode.John Baldwin
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. Reviewed by: kib (several older versions), wblock (manpages) MFC after: 2 months Differential Revision: https://reviews.freebsd.org/D7847 Notes: svn path=/head/; revision=307538