Compare commits

...

799 Commits
v4.11 ... v4.12

Author SHA1 Message Date
ed1f206551 Prepare for 4.12 release
* NEWS: Update for 4.12 release.
* debian/changelog: 4.12-1.
* strace.spec: 4.12-1.
2016-05-31 11:12:13 +00:00
3ce8e9f1b1 Sync strace.spec and debian/changelog with packages
* debian/changelog: Sync with 4.11-1.
* strace.spec: Sync with 4.11.0.163.9720-2.
2016-05-31 10:47:53 +00:00
bb9d6835a6 Mpersify hdio.c
* defs.h (hdio_ioctl): Remove.
* hdio.c: Mpersify struct hd_geometry.
(hdio_ioctl): Mpersify.
2016-05-30 00:29:14 +00:00
4b9fa902d2 loop.c: decode LOOP_SET_DIRECT_IO
* loop.c (loop_ioctl) [LOOP_SET_DIRECT_IO] : Handle LOOP_SET_DIRECT_IO.
2016-05-29 22:58:56 +00:00
b7166a6f28 loop.c: fix printing of arrays
* loop.c (decode_loop_info): Use square brackets to print
struct loop_info.lo_init and struct loop_info.reserved arrays.
(decode_loop_info64): Use square brackets to print
struct loop_info64.lo_init array.
2016-05-29 22:34:30 +00:00
25129acea0 loop.c: fix printing of structure members' names
* loop.c (decode_loop_info, decode_loop_info64): Do not strip "lo_"
prefix from printed names.
2016-05-29 22:28:28 +00:00
bece24d1c6 loop.c: optimize decoding of paired ioctls
* loop.c (loop_ioctl): Optimize decoding of LOOP_[GS]ET_STATUS
and LOOP_[GS]ET_STATUS64 ioctl pairs.
2016-05-29 22:15:53 +00:00
124c17ad3c tests/ioctl_evdev.c: check EVIOCGUNIQ decoding
* tests/ioctl_evdev.c (main): Check EVIOCGUNIQ(0) decoding.
2016-05-28 22:13:27 +00:00
bd090efc40 tests/ioctl_mtd.c: fix build with musl
* tests/ioctl_mtd.c: Include <linux/ioctl.h>.
2016-05-28 19:55:01 +00:00
129b304c95 tests: check decoding of 'M' type ioctls
* tests/ioctl_mtd.c: New file.
* tests/ioctl_mtd.test: New test.
* tests/.gitignore: Add ioctl_mtd.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add ioctl_mtd.test.
2016-05-28 19:31:50 +00:00
a0866bce35 Mpersify mtd.c
* defs.h (mtd_ioctl): Remove.
* mtd.c: Mpersify struct mtd_oob_buf and ioctl numbers.
(mtd_ioctl): Mpersify.
2016-05-28 19:16:32 +00:00
0a27c814b2 mtd.c: refactor
* mtd.c (mtd_ioctl): Move parsers of structures to separate functions.
2016-05-28 19:16:28 +00:00
5104db4e60 Move parser of UBI_* ioctls to a separate file
* mtd.c (ubi_ioctl): Move to ...
* ubi.c: ... new file.
* Makefile.am (strace_SOURCES): Add it.
2016-05-28 10:29:30 +00:00
fc0a38612f tests: check decoding of EVIOC* ioctls
* tests/ioctl_evdev.c: New file.
* tests/ioctl_evdev-v.c: Likewise.
* tests/ioctl_evdev.test: New test.
* tests/ioctl_evdev-v.test: Likewise.
* tests/.gitignore: Add ioctl_evdev and ioctl_evdev-v.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add ioctl_evdev.test and ioctl_evdev-v.test.
2016-05-28 00:56:47 +00:00
43c8a5d0e8 Mpersify EVIOC* ioctl parser
* defs.h (evdev_abs): New xlat prototype.
(evdev_ioctl): Remove.
* evdev.c: Do not include "xlat/evdev_abs.h".
Mpersify struct ff_effect and ioctl numbers.
(evdev_ioctl): Mpersify.
* NEWS: Mention this enhancement.
2016-05-28 00:56:47 +00:00
aa21c07f2e evdev.c: fix printing of unrecognized event type passed to EVIOCGBIT
* evdev.c (bit_ioctl): If event type is not unrecognized,
print the argument as an address.
2016-05-28 00:56:47 +00:00
47be9f2597 evdev.c: fix printing of EV_PWR's argument
* evdev.c (bit_ioctl): Fix printing of comma before EV_PWR's argument.
2016-05-28 00:56:47 +00:00
3f23c0c79f evdev.c: fix indentation
* evdev.c: Fix indentation of print formats.
2016-05-28 00:56:47 +00:00
10de2eb030 evdev.c: fix decoding of EVIOCGNAME, EVIOCGPHYS, and EVIOCGUNIQ
* evdev.c (evdev_read_ioctl): Fix printing of the string returned
in response to EVIOCGNAME, EVIOCGPHYS, and EVIOCGUNIQ requests.
2016-05-28 00:56:47 +00:00
b29569aa1d evdev.c: fix EVIOCGVERSION decoding
* evdev.c (evdev_read_ioctl): Print EVIOCGVERSION's argument
using #x format.
2016-05-28 00:56:47 +00:00
563f0cefb1 evdev.c: fix EVIOCGMTSLOTS decoding
* evdev.c (mtslots_ioctl): Use umove_or_printaddr.
2016-05-28 00:56:47 +00:00
14a810e6d8 evdev.c: fix bitset decoding
* evdev.c (decode_bitset): Use umove_or_printaddr.
2016-05-28 00:56:47 +00:00
e54f98a223 evdev.c: fix decoding of struct input_id
* evdev.c (getid_ioctl): Use umove_or_printaddr.
2016-05-28 00:56:47 +00:00
13f8e8fb4e evdev.c: fix decoding of struct input_keymap_entry
* evdev.c (keycode_V2_ioctl): Use umove_or_printaddr.
2016-05-28 00:56:47 +00:00
7954e2a711 evdev.c: fix decoding of EVIOCGKEYCODE/EVIOCSKEYCODE
* evdev.c (keycode_ioctl): Use umove_or_printaddr.
2016-05-28 00:56:47 +00:00
e167006908 evdev.c: fix decoding of struct input_absinfo
* evdev.c (abs_ioctl): Use umove_or_printaddr.
2016-05-28 00:56:46 +00:00
3a45eb3711 evdev.c: fix decoding of struct ff_effect
* evdev.c (ff_effect_ioctl): Use umove_or_printaddr.
Fix printing of struct ff_effect.u member names.
2016-05-28 00:37:06 +00:00
c758ed0f50 evdev.c: fix printing of struct ff_envelope.fade_level
* evdev.c (decode_envelope): Print struct ff_envelope.fade_level
using #x format.
2016-05-28 00:37:06 +00:00
9635df43b6 evdev.c: fix decoding of EVIOCGRAB and EVIOCREVOKE
* evdev.c (evdev_write_ioctl): Print argument of EVIOCGRAB
and EVIOCREVOKE as unsigned long.
2016-05-28 00:37:06 +00:00
0039424cb9 evdev.c: fix EVIOCRMFF decoding
* evdev.c (evdev_write_ioctl): Print EVIOCRMFF's argument as int.
2016-05-28 00:37:06 +00:00
53767d8ec5 evdev.c: move handling of EVIOCGBIT to a separate function
* evdev.c (evdev_read_ioctl): Move EVIOCGBIT handling to ...
(bit_ioctl): ... new function.
2016-05-28 00:37:05 +00:00
8a18f80a37 evdev.c: reorder ioctl command checks
Change the order of ioctl command cheks to match the kernel:
1st, check for fixed-number fixed-length commands,
2nd, check for fixed-number variable-length commands,
3rd, check for multi-number fixed-length commands,
4thm check for multi-number variable-length commands.

* evdev.c (evdev_read_ioctl, evdev_write_ioctl): Reorder
ioctl command checks.
2016-05-28 00:37:05 +00:00
2114e08a87 evdev.c: decode all directions except _IOC_READ on entering syscall
* evdev.c (evdev_write_ioctl): Remove exiting check.
(evdev_read_ioctl): Move entering check ...
(evdev_ioctl): ... here.  Add RVAL_DECODED to return code in _IOC_WRITE
and default cases.
2016-05-28 00:37:05 +00:00
8d85c233d2 evdev.c: fix indentation of preprocessor directives
* evdev.c: Fix indentation of preprocessor directives.
Move inclusion of <linux/ioctl.h> into [HAVE_LINUX_INPUT_H].
2016-05-28 00:37:05 +00:00
eb36e38523 file_ioctl.c: print first two extents for FIDEDUPERANGE in abbrev mode
* file_ioctl.c (file_ioctl, print_file_dedupe_range_info): Print first
two elements of info array in abbrev mode.
* tests/btrfs.c (btrfs_test_extent_same_ioctl): Handle newly
printed elements.
2016-05-28 00:37:02 +00:00
1f1559e6a9 ioctl.c: fix typo in decoding of EVIOCSABS's parameter
* ioctl.c (evdev_decode_number): Fix typo in printxval default value.
2016-05-27 08:55:40 +00:00
826b7978ec tests: check decoding of btrfs RDWR ioctls returned data
* tests/btrfs-vw.test: New file.
* tests/btrfs-w.test: New file.
* tests/Makefile.am (DECODER_TESTS): Add them.
2016-05-27 08:54:32 +00:00
fd70b501f6 tests/btrfs.c: fix live btrfs_test_search_ioctls output
* tests/btrfs.c (btrfs_test_search_ioctls): Use print_tree_search_buf
for BTRFS_IOC_TREE_SEARCH and fix missing whitespace.
2016-05-27 08:54:18 +00:00
d32d95a87f btrfs.c: don't use print_array in btrfs_print_tree_search
* btrfs.c (btrfs_print_tree_search): Don't use print_array.  The buffer
represents a series of variable sized records, not an array.
2016-05-27 08:53:44 +00:00
2060d97382 btrfs.c: fix print_array usage in btrfs_print_logical_ino_container
* btrfs.c: (btrfs_print_logical_ino_container) Fix the element count
to reflect the number of records rather than the number of items.
2016-05-27 08:53:30 +00:00
563a758994 tests/btrfs.c: fix btrfs-v for BTRFS_IOC_TREE_SEARCH
* tests/btrfs.c (btrfs_test_send_ioctl): Assign key_reference
to search_args for BTRFS_IOC_TREE_SEARCH ioctl tests.
2016-05-26 20:54:46 +00:00
e6d2b566aa Fix -yy documentation
* strace.c (usage): Fix description of -yy option.
* strace.1: Likewise.
2016-05-26 15:34:28 +00:00
59b140a096 tests/ioctl_block.c: tweak magic constants to make the test more reliable
* tests/ioctl_block.c (main): Change bad pointer to make
its lower 32-bit part closer to -1U.
2016-05-26 15:16:31 +00:00
b356ad8abf tests/btrfs.c: check basic decoding of read-only ioctls
* tests/btrfs.c (btrfs_test_read_ioctls): New function.
(main): Use it.
2016-05-26 14:46:37 +00:00
799b22a27d tests: check decoding of BLK* ioctls
* configure.ac (AC_CHECK_TYPES): Add struct blk_user_trace_setup.
* tests/ioctl_block.c: New file.
* tests/ioctl_block.test: New test.
* tests/.gitignore: Add ioctl_block.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add ioctl_block.test.
2016-05-26 14:44:13 +00:00
37d1b3dd8c Mpersify BLK* ioctl parser
* defs.h (block_ioctl): Remove.
* block.c: Mpersify struct blk_user_trace_setup,
struct blkpg_ioctl_arg, struct blkpg_partition, and ioctl numbers.
(block_ioctl): Mpersify.
* NEWS: Mention this enhancement.
2016-05-26 14:44:13 +00:00
0c9087c1b5 block.c: optimize decoding of paired ioctls
* block.c (block_ioctl): Optimize decoding of commands that return
a signed int.
2016-05-26 14:44:13 +00:00
46d25c2b84 block.c: fix printing of uint64_t pairs
* block.c (block_ioctl): Print uint64_t values using PRIu64 format.
2016-05-26 14:44:13 +00:00
0bea528fa8 block.c: fix printing of struct blk_user_trace_setup
* block.c (block_ioctl): Fix printing of comma before
struct blk_user_trace_setup.name on exiting syscall.
2016-05-26 14:44:13 +00:00
4dd9f3f038 Move parser of 'X' type ioctls to a separate file
* fs_x_ioctl.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* block.c: (block_ioctl): Move parser of FITRIM, FIFREEZE, and FITHAW
to fs_x_ioctl.c.
* defs.h (fs_x_ioctl): New prototype.
* ioctl.c (ioctl_decode): Call fs_x_ioctl for ioctl type 'X'.
2016-05-26 14:44:13 +00:00
b3f00403c3 Move parser of HDIO_* ioctls to a separate file
* hdio.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* block.c: Do not include <linux/hdreg.h>.
(block_ioctl): Move parser of HDIO_GETGEO to hdio.c.
* defs.h (hdio_ioctl): New prototype.
* ioctl.c (ioctl_decode): Call hdio_ioctl for ioctl type 0x03.
2016-05-26 14:44:13 +00:00
84a979c9ee Fix explicit casts of signed integer types to unsigned long long
* defs.h (widen_to_ull): New macro.
* dirent.c (print_old_dirent, SYS_FUNC(getdents)): Use it in place
of explicit casts to unsigned long long.
* io.c (print_lld_from_low_high_val): Likewise.
* lseek.c (SYS_FUNC(llseek)): Likewise.
* printsiginfo.c (print_si_info): Likewise.
* printstat.h (DO_PRINTSTAT): Likewise.
* sysinfo.c (SYS_FUNC(sysinfo)): Likewise.
* times.c (SYS_FUNC(times)): Likewise.
* fetch_struct_statfs.c (ASSIGN_NUMBER): Remove.
(fetch_struct_statfs, fetch_struct_statfs64): Replace ASSIGN_NUMBER
with widen_to_ull.
2016-05-26 14:44:13 +00:00
51507201ea scsi.c: print __u64 types using PRI__u64 format
* scsi.c (print_sg_io_v4_req, print_sg_io_v4_res): Remove explicit casts
to unsigned long long, print fields of type __u64 using PRI__u64 format.
2016-05-26 14:44:13 +00:00
ba35137246 tests: check decoding of RTC_* ioctls
* configure.ac (AC_CHECK_FUNCS): Add ioctl_rtc.
* tests/ioctl_rtc.c: New file.
* tests/ioctl_rtc-v.c: Likewise.
* tests/ioctl_rtc.test: New test.
* tests/ioctl_rtc-v.test: Likewise.
* tests/.gitignore: Add ioctl_rtc and ioctl_rtc-v.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add ioctl_rtc.test and ioctl_rtc-v.test.
2016-05-25 17:58:57 +00:00
5d7812a479 Mpersify RTC_* ioctl parser
* defs.h (rtc_ioctl): Remove.
* rtc.c: Mpersify struct rtc_pll_info and ioctl numbers.
(rtc_ioctl): Mpersify.
* NEWS: Mention this enhancement.
2016-05-25 16:36:37 +00:00
7e3a381c3d rtc.c: fix decoding of struct rtc_wkalrm
* rtc.c (decode_rtc_wkalrm): Print field name of struct rtc_wkalrm.time.
2016-05-25 15:28:23 +00:00
eea86017e1 file_ioctl.c: print file descriptors using printfd
* file_ioctl.c (print_file_dedupe_range_info): Print
struct file_dedupe_range_info.dest_fd using printfd.
(file_ioctl): Print struct file_clone_range.src_fd using printfd.
2016-05-25 08:38:53 +00:00
6085825201 rtc.c: do not print argument of ioctls that have no arguments
* rtc.c (rtc_ioctl): Do not print argument of RTC_{A,U,P,W}IE_{ON,OFF}
and RTC_VL_CLR ioctls.
2016-05-25 08:38:53 +00:00
3adf229434 rtc.c: decode RTC_PLL_GET and RTC_PLL_SET
* rtc.c (rtc_ioctl): Decode RTC_PLL_GET and RTC_PLL_SET
2016-05-25 08:38:52 +00:00
e0b5e91375 rtc.c: optimize decoding of paired ioctls
* rtc.c (rtc_ioctl): Optimize decoding of RTC_ALM_READ/RTC_ALM_SET,
RTC_RD_TIME/RTC_SET_TIME, and RTC_WKALM_RD/RTC_WKALM_SET ioctl pairs.
2016-05-25 07:37:44 +00:00
a41fdb5786 block.c: handle BLKDAXGET
* block.c [!BLKDAXGET] (BLKDAXGET): Define.
(block_ioctl): Handle it.
2016-05-25 07:33:02 +00:00
f8da0f3e78 tests: check decoding of mount syscall
* tests/mount.c: New file.
* tests/mount.test: New test.
* tests/.gitignore: Add mount.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add mount.
2016-05-25 00:11:37 +00:00
1ba55355c6 tests/vhangup.c: diassociate from the controlling terminal first
* tests/vhangup.c (main): Call setsid before vhangup.
2016-05-24 20:12:25 +00:00
a41d9f5621 tests: add vhangup.test
* tests/vhangup.c: New file.
* tests/vhangup.test: New test.
* tests/.gitignore: Add vhangup.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add vhangup.test.
2016-05-24 20:09:16 +00:00
0cf24d9184 NEWS: Prepare for 4.12 release 2016-05-24 18:12:08 +00:00
e79f038dd9 tests/btrfs.c: fix build on x32
* tests/btrfs.c (btrfs_test_ino_path_ioctls): Fix printing of st_ino.
2016-05-24 15:10:41 +00:00
6697d15f0a tests/btrfs.c: fix build with u64 based BTRFS_IOC_DEFAULT_SUBVOL
* tests/btrfs.c: Fix build on systems where BTRFS_IOC_DEFAULT_SUBVOL
is defined using unexported type "u64".
2016-05-24 14:52:27 +00:00
ea516df85e btrfs.c: fix build on systems without BTRFS_IOC_FILE_EXTENT_SAME
* btrfs.c (btrfs_ioctl): Skip BTRFS_IOC_FILE_EXTENT_SAME case
if this constant is not defined.
* tests/btrfs.c (btrfs_test_extent_same_ioctl): Skip this part
of the test if BTRFS_IOC_FILE_EXTENT_SAME is not defined.
2016-05-24 14:52:27 +00:00
3f36611e98 tests/btrfs.c: fix printing struct btrfs_ioctl_clone_range_args
* tests/btrfs.c (btrfs_test_clone_ioctls): Print __u64 members
of struct btrfs_ioctl_clone_range_args using PRI__u64 format.
2016-05-24 14:52:27 +00:00
57888fa5f9 tests/btrfs.c: tweak magic constants to make the test more reliable
* tests/btrfs.c (btrfs_test_sync_ioctls): Change u64val
to 0xdeadbeefbadc0ded.
(btrfs_test_subvol_ioctls): Likewise.  Change bad_pointer
to make their lower 32-bit parts closer to -1U.
2016-05-24 14:52:27 +00:00
6ce6d3be10 btrfs.c: print file descriptors using printfd
* btrfs.c (btrfs_ioctl): Print struct btrfs_ioctl_send_args.send_fd,
struct btrfs_ioctl_vol_args.fd, and struct btrfs_ioctl_vol_args_v2.fd
using printfd.
* tests/btrfs.c (btrfs_print_vol_args_v2, btrfs_test_subvol_ioctls,
btrfs_test_device_ioctls, btrfs_test_clone_ioctls,
btrfs_test_send_ioctl): Update.
2016-05-24 14:52:27 +00:00
9298c66dc0 tests/btrfs.c: do not print errno in case of fs type mismatch
* tests/btrfs.c (main): Use error_msg_and_fail instead of
perror_msg_and_fail when the fs type of the given directory
is not BTRFS_SUPER_MAGIC.
2016-05-24 14:52:27 +00:00
2447de4ca1 tests/btrfs.c: fix indentation
* tests/btrfs.c: Fix indentation of preprocessor directives
and function prototypes.
2016-05-24 14:52:27 +00:00
28a5f66e2e tests/btrfs.c: sort included headers
* tests/btrfs.c: Sort included headers.
2016-05-24 14:52:27 +00:00
45fcc0c853 tests/btrfs.c: do not use alloca
* tests/btrfs.c: Don't include <alloca.h>.
(btrfs_test_subvol_ioctls): Allocate
struct btrfs_ioctl_vol_args_v2.qgroup_inherit using tail_alloc.
2016-05-24 14:52:27 +00:00
2212918aa2 tests/btrfs.c: fix build on systems without <linux/btrfs.h> or <linux/fiemap.h>
* tests/btrfs.c: Include "tests.h" first.
Skip the test if [!HAVE_LINUX_BTRFS_H].  Skip parts of the test
that use struct fiemap if [!HAVE_LINUX_FIEMAP_H].
2016-05-24 14:52:27 +00:00
3586679f7a tests: add testing for btrfs ioctls
* tests/btrfs.c: New file.
* tests/btrfs.test: New test.
* tests/btrfs-v.test: Likewise.
* tests/.gitignore: Add btrfs.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add btrfs.test and btrfs-v.test.
2016-05-24 14:52:27 +00:00
aab00c2023 tests/file_ioctl.c: use tail_alloc
* tests/file_ioctl.c (main): Allocate struct fiemap using tail_alloc.
2016-05-24 14:52:27 +00:00
3b730d4a0f tests/file_ioctl.c: fix build on systems without <linux/fiemap.h>
* tests/file_ioctl.c: Include "tests.h" first.
Skip the test if [!HAVE_LINUX_FIEMAP_H].
2016-05-24 14:52:27 +00:00
c05c24cc51 tests: add testing for FS_IOC_FIEMAP
This is limited to FIEMAP.  FICLONE* and FIDEDUPERANGE originated in
btrfs and will be tested there.

* tests/file_ioctl.c: New file.
* tests/file_ioctl.test: New test.
* tests/.gitignore: Add file_ioctl.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add file_ioctl.test.
2016-05-24 14:52:27 +00:00
fb0c6095f3 Mpersify btrfs.c
* btrfs.c: Mpersify 3 arch-specific structures
and corresponding ioctl numbers.
(btrfs_ioctl): Mpersify.
* defs.h (btrfs_ioctl): Remove.
2016-05-24 14:52:27 +00:00
d57cc26bf0 btrfs.c: use print_array
* btrfs.c (print_btrfs_data_container_logical_ino,
print_btrfs_data_container_ino_path, print_uint64,
print_btrfs_ioctl_search_header, print_objectid_callback,
print_btrfs_ioctl_space_info): New functions.
(btrfs_print_logical_ino_container, btrfs_print_ino_path_container):
Rewrite printers of struct btrfs_data_container.val array
using print_array.
(btrfs_print_qgroup_inherit): Rewrite printer of
struct btrfs_qgroup_inherit.qgroups array using print_array.
(btrfs_print_tree_search): Rewrite printer of
struct btrfs_ioctl_search_header array using print_array.
(btrfs_ioctl): Rewrite printer of
struct btrfs_ioctl_send_args.clone_sources and
struct btrfs_ioctl_space_args.spaces using print_array.
2016-05-24 14:52:27 +00:00
82b9e34e7c btrfs.c: simplify BTRFS_IOC_GET_FSLABEL parser
* btrfs.c (btrfs_ioctl): Share code of parser of BTRFS_IOC_SET_FSLABEL
with parser of BTRFS_IOC_GET_FSLABEL only on BTRFS_IOC_GET_FSLABEL's
entering.
2016-05-24 14:52:27 +00:00
d67b2173a1 btrfs.c: fix BTRFS_IOC_TREE_SEARCH_V2 output
* btrfs.c (btrfs_ioctl): Fix BTRFS_IOC_TREE_SEARCH_V2 output
in case of EOVERFLOW and failed umove.
2016-05-24 14:52:27 +00:00
6638a5d132 btrfs.c: cleanup use of tcp->auxstr
* btrfs.c (btrfs_ioctl): Reset tcp->auxstr only if it is set.
2016-05-24 14:52:27 +00:00
92b90621cc btrfs.c: cleanup struct btrfs_ioctl_get_dev_stats.nr_items check
* btrfs.c (btrfs_ioctl): Cleanup check of iterator of
btrfs_ioctl_get_dev_stats.values array.
2016-05-24 14:52:27 +00:00
0cd7ea0552 btrfs.c: do not use BTRFS_SUBVOL_NAME_MAX
* btrfs.c [BTRFS_SUBVOL_NAME_MAX]: Remove.
(btrfs_ioctl): Use sizeof(struct btrfs_ioctl_vol_args_v2.name)
instead of BTRFS_SUBVOL_NAME_MAX + 1.
2016-05-24 14:52:27 +00:00
b85d09f316 btrfs.c: mark some function arguments as const
* btrfs.c (btrfs_print_balance_args, btrfs_print_features,
btrfs_print_qgroup_limit, btrfs_print_data_container_header,
btrfs_print_logical_ino_container, btrfs_print_ino_path_container,
btrfs_print_qgroup_inherit): Mark some function arguments as const.
2016-05-24 14:52:27 +00:00
90ffbc79b0 btrfs.c: use umove instead of umoven
* btrfs.c: Use umove instead of umoven and umove_or_printaddr
instead of umoven_or_printaddr.
2016-05-24 14:52:27 +00:00
3ce2dfcebb btrfs.c: remove unused variable
* btrfs.c (btrfs_ioctl): Remove "ret" variable.
2016-05-24 14:52:27 +00:00
95577cf9d3 btrfs.c: use printxval/printxval64 instead of printxvals
* btrfs.c (btrfs_ioctl): Do not call printxvals directly,
use printxval/printxval64 wrappers that do the right thing.
2016-05-24 14:52:27 +00:00
2be39ec201 btrfs.c: fix indentation
* btrfs.c: Fix indentation of preprocessor directives and print formats.
2016-05-24 14:52:27 +00:00
aa7787f85b xlat/btrfs_dev_stats_values.in: cleanup
* xlat/btrfs_dev_stats_values.in: Remove HAVE_DECL_* defines,
use #unconditional instead.
2016-05-24 14:52:27 +00:00
d2bd683202 file_ioctl.c: use print_array
* file_ioctl.c (file_ioctl): Rewrite printers of
struct file_dedupe_range_info and struct fiemap_extent arrays
using print_array.
2016-05-24 14:52:27 +00:00
0b13d9c294 file_ioctl.c: fix indentation
* file_ioctl.c: Fix indentation of preprocessor directives
and print formats.
2016-05-24 14:52:27 +00:00
1d2201c95c file_ioctl.c: include <linux/ioctl.h> instead of <sys/ioctl.h>
Being a wrapper around <linux/ioctl.h>, <sys/ioctl.h> brings
no benefits for this parser.

* file_ioctl.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>.
2016-05-24 14:52:27 +00:00
c5253077d8 file_ioctl.c: fix build on systems without <linux/fiemap.h>
* configure.ac (AC_CHECK_HEADERS): Add linux/fiemap.h.
* file_ioctl.c: Do not include <linux/fiemap.h> and xlat/fiemap_*.h
if [!HAVE_LINUX_FIEMAP_H].
(file_ioctl): Do not parse FS_IOC_FIEMAP if [!HAVE_LINUX_FIEMAP_H].
2016-05-24 14:52:27 +00:00
25f3758510 ioctl.c: fix build
* ioctl.c (ioctl_decode): Move definition of "ret" variable
to [ALPHA || POWERPC] case.
[ALPHA || POWERPC]: Fix syntax error.
2016-05-24 14:52:27 +00:00
398fe0493e ioctl: add decoding for FS_IOC_FIEMAP
* file_ioctl.c: Include <linux/fiemap.h>, "xlat/fiemap_flags.h",
and "xlat/fiemap_extent_flags.h".
(file_ioctl): Handle FS_IOC_FIEMAP.
* ioctl.c (ioctl_decode): Use file_ioctl for decoding 'f' code ioctls.
2016-05-24 14:52:27 +00:00
306a2612a5 Add xlat/fiemap_flags.in and xlat/fiemap_extent_flags.in
* xlat/fiemap_flags.in: New file.
* xlat/fiemap_extent_flags.in: Likewise.
2016-05-24 14:52:27 +00:00
8cc6962216 ioctl: add decoding support for btrfs ioctls
* btrfs.c: New file.
* file_ioctl.c: Likewise.
* Makefile.am (strace_SOURCES): Add them.
* configure.ac (AC_CHECK_HEADERS): Add linux/btrfs.h.
(AC_CHECK_MEMBERS): Add struct btrfs_ioctl_feature_flags.compat_flags,
struct btrfs_ioctl_fs_info_args.nodesize,
struct btrfs_ioctl_defrag_range_args.start,
and struct btrfs_ioctl_search_args_v2.buf_size.
(AC_CHECK_DECLS): Add BTRFS_COMPRESS_* enums.
* defs.h (btrfs_ioctl, file_ioctl): New prototypes.
* ioctl.c (ioctl_decode) [HAVE_LINUX_BTRFS_H]: Use btrfs_ioctl.
* xlat/btrfs_balance_args.in: New file.
* xlat/btrfs_balance_ctl_cmds.in: Likewise.
* xlat/btrfs_balance_flags.in: Likewise.
* xlat/btrfs_balance_state.in: Likewise.
* xlat/btrfs_compress_types.in: Likewise.
* xlat/btrfs_defrag_flags.in: Likewise.
* xlat/btrfs_dev_replace_cmds.in: Likewise.
* xlat/btrfs_dev_replace_results.in: Likewise.
* xlat/btrfs_dev_replace_state.in: Likewise.
* xlat/btrfs_dev_stats_flags.in: Likewise.
* xlat/btrfs_dev_stats_values.in: Likewise.
* xlat/btrfs_features_compat.in: Likewise.
* xlat/btrfs_features_compat_ro.in: Likewise.
* xlat/btrfs_features_incompat.in: Likewise.
* xlat/btrfs_key_types.in: Likewise.
* xlat/btrfs_qgroup_ctl_cmds.in: Likewise.
* xlat/btrfs_qgroup_inherit_flags.in: Likewise.
* xlat/btrfs_qgroup_limit_flags.in: Likewise.
* xlat/btrfs_qgroup_status_flags.in: Likewise.
* xlat/btrfs_scrub_flags.in: Likewise.
* xlat/btrfs_send_flags.in: Likewise.
* xlat/btrfs_snap_flags_v2.in: Likewise.
* xlat/btrfs_space_info_flags.in: Likewise.
* xlat/btrfs_tree_objectids.in: Likewise.
2016-05-24 14:52:27 +00:00
c4d4d3c3a6 x32: update ioctl entries from linux 4.6
* linux/x32/ioctls_inc0.h: Update from linux v4.6 using ioctls_gen.sh.
2016-05-24 14:50:43 +00:00
9b49af1871 tests/attach-f-p.c: sleep a bit more to let the tracer catch up
On noticeably lagging systems, the parent process may invoke its chdir
call before the tracer gets notified about completion of its last child
process.  Add extra sleep in the parent process to win the race.

* tests/attach-f-p.c (main): Change timerid into a static array.
Arm a timer in the parent process and wait for it.
2016-05-24 12:14:33 +00:00
475d2b5da6 tests/attach-p-cmd-cmd.c: fix potential errno clobbering
* tests/attach-p-cmd-cmd.c (main): Call getpid before chdir.
2016-05-23 16:39:23 +00:00
4ea65fb549 tests/net-yy-netlink.c: robustify against libc specific issues
* tests/net-yy-netlink.c (main): Use getsockname instead of recvmsg
as the latter has notible implementation differences that make
the test unreliable.
2016-05-23 10:26:46 +00:00
29df0351a9 tests/net-yy-netlink.c: robustify against os specific issues
* tests/net-yy-netlink.c (main): Pass a pointer to a real struct msghdr
as NULL doesn't work well on some systems.
2016-05-23 10:26:46 +00:00
1e9dabee66 tests/net-yy-{inet,netlink}.test: cleanup
* tests/net-yy-inet.test: Do not pass arguments to net-yy-inet
as the latter does not accept them.
* tests/net-yy-netlink.test: Do not pass arguments to net-yy-netlink
as the latter does not accept them.
2016-05-23 10:14:39 +00:00
f21a2f4119 tests: define PRI__[dux]64 macros to print __s64 and __u64 values
Rather than cast every __u64 or __s64 before printing,
define printing helpers for those types directly.

This complements commit 1f3482beda.

* tests/tests.h (PRI__d64, PRI__u64, PRI__x64): New macros.
2016-05-22 22:54:23 +00:00
62a35fa572 tests: remove manual creation of memory mapping holes
We used to call tail_alloc(1) to create memory mapping holes around
regular tail_alloc allocations.  This is no longer needed since regular
tail_alloc allocations create additional memory mapping holes.

* tests/clock_adjtime.c (main): Remove creation of memory mapping holes
using tail_alloc(1).
* tests/futimesat.c (main): Likewise.
* tests/get_mempolicy.c (print_nodes, main): Likewise.
* tests/getgroups.c (main): Likewise.
* tests/getresugid.c (main): Likewise.
* tests/ioctl_uffdio.c (main): Likewise.
* tests/ioctl_v4l2.c (main): Likewise.
* tests/move_pages.c (main): Likewise.
* tests/net-icmp_filter.c (main): Likewise.
* tests/ptrace.c (test_peeksiginfo, main): Likewise.
* tests/pwritev.c (main): Likewise.
* tests/set_mempolicy.c (print_nodes): Likewise.
* tests/setgroups.c (main): Likewise.
* tests/umovestr3.c (main): Likewise.
* tests/utimes.c (main): Likewise.
* tests/xattr.c (main): Likewise.
2016-05-22 22:29:33 +00:00
0f303f99c6 tests: make tail_alloc create additional memory mapping holes
* tests/tail_alloc.c (tail_alloc): Create additional memory mapping
holes before and after the allocated memory.
2016-05-22 22:21:48 +00:00
a8fce09e34 mpers: add support of conditionally compiled printers
We used to declare and define all printers marked with
MPERS_PRINTER_DECL, including ifdef'ed ones.  That approach left us
no way to conditionally compile mpersified printers, which was not
a problem until btrfs ioctls appeared on the horizon.

With this change, those mpersified printers that are not going
to be compiled are also won't be declared and won't be added to
struct_printers.

This is implemented by filtering all source files containing
MPERS_PRINTER_DECL markers through CPP.  As a nice side effect, this
also lifts an ugly requirement of writing all MPERS_PRINTER_DECL
declarations in a single line.

* README-mpers: Update description of MPERS_PRINTER_DECL syntax.
* defs.h [IN_MPERS_BOOTSTRAP] (MPERS_PRINTER_DECL): Turn into
a recursive variadic macro.
[!IN_MPERS_BOOTSTRAP] (MPERS_PRINTER_DECL): Turn into a variadic macro.
All callers changed.
* Makefile.am (mpers_preproc_files, mpers_printer_decl_pattern):
New variables.
(CLEANFILES): Add $(mpers_preproc_files).
(%.c.mpers.i): New rule.
(printers.h, %_printer_decls.h, %_printer_defs.h): Use
mpers_preproc_files instead of srcdir_mpers_source_files,
use mpers_printer_decl_pattern.
* .gitignore: Add /*.mpers.i.
2016-05-21 22:53:06 +00:00
4bf7ab7005 Remove redundant declaration of v4l2_ioctl
There is no need to declare mpers printers in defs.h because
they are already declared in printers.h or native_printer_decls.h.

This complements commit 1e56814f77.

* defs.h (v4l2_ioctl): Remove.
2016-05-20 22:47:39 +00:00
7b6979701b Fix one more code pattern that might break gcc strict aliasing rules
* socketutils.c (receive_responses): Turn static buffer into a union
to avoid breaking of gcc strict aliasing rules.
* tests/netlink_inet_diag.c (check_responses): Likewise.
* tests/netlink_netlink_diag.c (check_responses): Likewise.
* tests/netlink_unix_diag.c (check_responses): Likewise.
2016-05-21 09:33:12 +00:00
28e955d747 tests: add check for netlink protocol decoding with -yy option
* tests/netlink_netlink_diag.c: New file.
* tests/net-yy-netlink.c: New file.
* tests/net-yy-netlink.test: New test.
* tests/.gitignore: Add net-yy-netlink and netlink_netlink_diag
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add net-yy-netlink.test.
2016-05-21 09:32:52 +00:00
814c0d575d Add netlink domain sockets support to socketutils
* linux/netlink_diag.h: New file.
* Makefile.am (EXTRA_DIST): Add it.
* socketutils.c: Include it and "xlat/netlink_protocols.h".
(netlink_send_query, netlink_parse_response, netlink_print): New
functions.
(print_sockaddr_by_inode): Hook up netlink_print.
2016-05-18 22:02:48 +00:00
ff2b853e7f tests/pread64-pwrite64.c: robustify against os specific issues
Do not assume that pwrite64 syscall fails when only part of the
specified memory buffer is accessible.  With some kernels, one
accessible byte at the end of page is enough for pwrite64 syscall
to return 1.

* tests/pread64-pwrite64.c (main): Tweak the test that can lead
to a partial write.
2016-05-18 09:26:01 +00:00
a8e820586e tests/read-write.c: robustify against os specific issues
Do not assume that write syscall fails when only part of the specified
memory buffer is accessible.  With some kernels, one accessible byte
at the end of page is enough for write syscall to return 1.

* tests/read-write.c (main): Tweak the test that can lead to a partial
write.
2016-05-18 09:26:01 +00:00
af09d4f4fa umovestr3.test: extend test coverage
* tests/umovestr3.c: Include <sys/param.h>.
(main): Test with each number between PATH_MAX-1 and 0.
2016-05-18 09:26:01 +00:00
81f1b1689a tests/timer_create.c: robustify against os specific issues
* tests/timer_create.c (main): Do not assume any specific error code
returned by timer_create, print whatever it is.
2016-05-18 09:26:01 +00:00
e0ba92016b Fix some compilation warnings on older systems
* print_statfs.c (print_statfs_flags): Define only
for [HAVE_STRUCT_STATFS_F_FLAGS || HAVE_STRUCT_STATFS64_F_FLAGS].
* tests/inet-cmsg.c (print_origdstaddr): Define only
for [IP_ORIGDSTADDR].
2016-05-18 09:26:01 +00:00
9164722af0 Update generic ioctl entries from linux 4.6
* linux/64/ioctls_inc.h: Update from linux v4.6 using ioctls_gen.sh.
* linux/32/ioctls_inc_align32.h: Likewise.
* linux/32/ioctls_inc_align64.h: Likewise.
* NEWS: Mention this.
2016-05-18 09:26:01 +00:00
d07201aeef maint: update for linux 4.6
* maint/ioctls_sym.sh: Update workarounds for linux/kvm.h.
2016-05-18 09:26:01 +00:00
a9fdbf1d59 Update SOL_* constants
* xlat/socketlayers.in: Add SOL_KCM.
2016-05-18 09:26:01 +00:00
85acd1304e Update MSG_* constants
* xlat/msg_flags.in: Add MSG_BATCH.
2016-05-18 09:26:01 +00:00
72712cbc58 Update AF_* constants
* xlat/addrfams.in: Add AF_KCM.
2016-05-18 09:26:01 +00:00
854a25930c tests: add brk.test
* tests/brk.c: New file.
* tests/brk.test: New test.
* tests/.gitignore: Add brk.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add brk.test.
2016-05-17 10:53:03 +00:00
9b8ca23cc0 Fix printing of invalid arguments of term ioctls
* term.c (term_ioctl): Print arguments of TCXONC and TCFLSH ioctls
using printxval_long.
2016-05-17 08:03:58 +00:00
29c845ca85 mips: fix printing of invalid operations argument of sysmips syscall
* sysmips.c (SYS_FUNC(sysmips)): Print 1st argument of syscall using
printxval_long.
2016-05-17 08:03:58 +00:00
5e2fc6228e bfin: fix printing of invalid flags argument of sram_alloc syscall
* sram_alloc.c (SYS_FUNC(sram_alloc)): Print 2nd argument using
printflags_long.
2016-05-17 08:03:58 +00:00
c5f6863a18 Fix printing of invalid arguments of prctl syscall
* prctl.c (SYS_FUNC(prctl)): Print 2nd syscall argument
of PR_CAPBSET_DROP, PR_CAPBSET_READ, PR_CAP_AMBIENT, PR_MCE_KILL,
and PR_SET_SECCOMP using printxval_long.
Print 2nd syscall argument of PR_SET_SECUREBITS using printflags_long.
Print 3rd syscall argument of PR_CAP_AMBIENT and PR_MCE_KILL using
printxval_long.
* tests/prctl-seccomp-strict.c (main): Update.
2016-05-16 23:50:59 +00:00
a95c3e515f Fix printing of invalid flags argument of perf_event_open syscall
* numa.c (SYS_FUNC(perf_event_open)): Print 5th argument of syscall
using printflags_long.
2016-05-16 23:48:05 +00:00
30dc5418a3 or1k: fix printing of invalid 1st argument of or1k_atomic syscall
* or1k_atomic.c (SYS_FUNC(or1k_atomic)): Print 1st argument using
printxval_long.
2016-05-16 23:48:05 +00:00
0da9b0e3b2 Fix printing of invalid flags argument of get_mempolicy syscall
* numa.c (SYS_FUNC(get_mempolicy)): Print 5th argument of syscall
using printxval_long.
2016-05-16 23:48:05 +00:00
3a0fa5c619 Fix printing of invalid mode argument of mbind syscall
* numa.c (SYS_FUNC(mbind)): Print 3rd argument of syscall
using printxval_long.
* tests/mbind.c (main): Update.
2016-05-16 23:48:05 +00:00
942da9c895 Fix printing of invalid argument of MTDFILEMODE ioctl
* mtd.c (mtd_ioctl): Print 3rd argument of MTDFILEMODE ioctl
using printflags_long.
2016-05-16 23:48:05 +00:00
412ec9480c Fix printing of invalid flags argument of mount syscall
* mount.c (SYS_FUNC(mount)): Print 1st argument using printflags_long.
2016-05-16 23:48:05 +00:00
1168114879 Fix printing of invalid arguments of memory mapping related syscalls
* mem.c (print_mmap): Print 3rd and 4th arguments of syscall
using printflags_long.
(SYS_FUNC(mprotect)): Print 3rd argument of syscall using
printflags_long.
(SYS_FUNC(mremap)): Print 4th argument of syscall using printflags_long.
(SYS_FUNC(remap_file_pages)): Print 3rd and 4th arguments of syscall
using printflags_long.
* tests/remap_file_pages.c (main): Update.
2016-05-16 23:47:34 +00:00
e2c5a3c60e Fix printing of invalid flags argument of kexec_load and kexec_file_load
* kexec.c (SYS_FUNC(kexec_load), SYS_FUNC(kexec_file_load)): Print
flags argument using printflags_long.
2016-05-16 22:54:41 +00:00
c560c80aa0 Fix printing of invalid 3rd argument of fcntl/fcntl64 syscall
* fcntl.c (print_fcntl): Print 3rd argument of F_NOTIFY, F_SETLEASE, and
F_ADD_SEALS operations using printflags_long.
2016-05-16 22:52:04 +00:00
d06fa28b0e Fix printing of invalid flags argument of unshare syscall
* clone.c (SYS_FUNC(unshare)): Print 1st argument using printflags_long.
2016-05-16 22:49:54 +00:00
77ab8dd0bd Introduce printflags_long and printxval_long
* defs.h (printflags_long, printxval_long): New static inline functions.
2016-05-16 22:44:50 +00:00
f77ca9ca71 Fix printing of invalid struct xfs_dqblk.d_flags
* quota.c (decode_cmd_data): Explicitly cast struct xfs_dqblk.d_flags
to uint8_t to avoid potential sign-extension bug when printing
invalid struct xfs_dqblk.d_flags.
2016-05-16 22:41:20 +00:00
2cad72f489 Fix printing of invalid struct ubi_mkvol_req.vol_type
* mtd.c (ubi_ioctl): Explicitly cast struct ubi_mkvol_req.vol_type
to unsigned short to avoid potential sign-extension bug when printing
invalid struct ubi_mkvol_req.vol_type.
2016-05-16 22:41:20 +00:00
b8eec608fa Fix decoding of prctl/arch_prctl operation argument
Consistently treat operation argument of prctl/arch_prctl syscalls
as int to match the kernel behaviour.

* prctl.c (SYS_FUNC(prctl), SYS_FUNC(arch_prctl)): Assign 1st argument
of syscalls to a variable of type unsigned int and use it in all
subsequent checks and lookups.
2016-05-16 22:41:20 +00:00
ba62f34243 Fix printing of struct sched_attr.sched_flags
* sched.c (print_sched_attr): Print sched_flags using printflags64.
2016-05-16 22:41:19 +00:00
e9dd8f9406 Fix printing of struct statfs.f_flags
* print_statfs.c (print_statfs_flags): Print flags using printflags64.
2016-05-16 22:41:19 +00:00
b0695de14f Fix printing of invalid struct ifreq.ifr_flags
* sock.c (print_ifreq): Explicitly cast struct ifreq.ifr_flags
to unsigned short to avoid potential sign-extension bug when printing
invalid struct ifreq.ifr_flags.
2016-05-16 22:41:19 +00:00
952d89ba5a Fix printing of invalid struct pollfd.events
* poll.c (print_pollfd): Explicitly cast struct pollfd.events
to unsigned short to avoid potential sign-extension bug when printing
invalid struct pollfd.events.
2016-05-16 22:41:19 +00:00
977aee82bf Fix printing of invalid struct sembuf.sem_flg
* ipc_sem.c (print_sembuf): Explicitly cast struct sembuf.sem_flg
to unsigned short to avoid potential sign-extension bug when printing
invalid struct sembuf.sem_flg.
2016-05-16 22:41:19 +00:00
a734a97d0e Fix printing of invalid l_type and l_whence in fcntl/fcntl64 syscalls
* fcntl.c (print_struct_flock64): Explicitly cast l_type and l_whence
fields to unsigned short to avoid potential sign-extension bug when
printing invalid l_type or l_whence fields.
2016-05-16 22:41:19 +00:00
6e381c67fd Fix printing of fanotify_mark mask argument
* fanotify.c (SYS_FUNC(fanotify_mark)): Print mask using printflags64.
2016-05-16 22:41:17 +00:00
55044d9670 Fix decoding of epoll_ctl operation argument
Consistently treat operation argument of epoll_ctl syscall as int
to match the kernel behaviour.

* epoll.c (SYS_FUNC(epoll_ctl)): Assign 2nd argument of syscall
to a variable of type unsigned int and use it in all subsequent
checks and lookups.
* tests/epoll_ctl.c (invoke_syscall): New function.
(main): Use it.
2016-05-16 21:47:09 +00:00
7fb984e27e Fix printing of invalid d_type in getdents syscall
* dirent.c (SYS_FUNC(getdents)): Treat d_type as unsigned char to avoid
potential sign-extension bug when printing invalid d_type.
2016-05-16 21:47:09 +00:00
2eb56d1906 bfin: fix decoding of cacheflush syscall
* cacheflush.c (SYS_FUNC(cacheflush)): Print 2nd argument
using %lu format.  Print 3rd argument as flags.
2016-05-16 21:47:09 +00:00
18d921da6d Fix decoding of BPF_MAP_UPDATE_ELEM flags
* bpf.c (bpf_map_update_elem): Print attr.flags using printxval64.
2016-05-16 21:47:09 +00:00
77086594ce Fix decoding of fcntl/fcntl64 operation argument
Consistently treat operation argument of fcntl/fcntl64 syscalls as int
to match the kernel behaviour.

* fcntl.c (print_fcntl, SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): Assign
2nd argument of syscall to a variable of type unsigned int
and use it in all subsequent checks and lookups.
* tests/struct_flock.c (invoke_test_syscall): New function.
(test_flock_einval, test_flock): Use it.
* tests/fcntl.c (test_flock64_einval): Use it.
* tests/fcntl64.c (test_flock64_einval, test_flock64): Use it.
2016-05-16 21:46:48 +00:00
4811023e74 Rename sprintflags64 to sprintflags.
* defs.h (sprintflags): Remove.
(sprintflags64): Rename to sprintflags.
* util.c (sprintflags64): Rename to sprintflags.
2016-05-15 14:26:03 +00:00
6274ecc752 Prepare for transition from sprintflags64 to sprintflags
* fcntl.c (print_fcntl): Cast 3rd argument of sprintflags
to unsigned long.
* membarrier.c (SYS_FUNC(membarrier)): Likewise.
* prctl.c (SYS_FUNC(prctl)): Likewise.
* poll.c (decode_poll_exiting): Cast 3rd argument of sprintflags
to unsigned short.
2016-05-15 14:23:06 +00:00
c0db59b97b Rename xlookup64 to xlookup
* defs.h (xlookup): Remove.
(xlookup64): Rename to xlookup.
* util.c (xlookup64): Rename to xlookup.
2016-05-14 22:05:09 +00:00
9134aab407 Prepare for transition from xlookup64 to xlookup
* fcntl.c (print_fcntl, SYS_FUNC(fcntl), SYS_FUNC(fcntl64)):
Cast 2nd argument of xlookup to unsigned long.
* prctl.c (SYS_FUNC(prctl)): Likewise.
* sched.c (SYS_FUNC(sched_getscheduler)): Likewise.
* time.c (do_adjtimex): Likewise.
* ioprio.c (sprint_ioprio): Change type of the argument
and local variables from int to unsigned int.
* keyctl.c (print_keyring_serial_number): Cast 2nd argument
of xlookup to unsigned int.
* net.c (tprint_sock_type): Change type of the argument to unsigned int.
* printmode.c (sprintmode): Likewise.
* printsiginfo.c (printsigval):  Change type of si_code argument
to unsigned int.
2016-05-14 22:05:06 +00:00
a8443f8695 v4l2: fix build with old kernel headers
Prior to v2.6.25-rc3, <linux/videodev2.h> didn't include all
required headers, resulting to omission of V4L2_* constants.

This issue doesn't arise in v4l2.c and tests/ioctl_v4l2.c files
because they already include all necessary headers themselves.

* configure.ac (AC_CHECK_DECLS): Include <sys/time.h>, <linux/ioctl.h>,
and <linux/types.h> before <linux/videodev2.h>.
2016-05-14 00:36:27 +00:00
3cc989e7fc configure.ac: do not check for sys/ioctl.h and ioctls.h
Since sys/ioctl.h is included unconditionally when needed
and ioctls.h doesn't exist, these checks are redundant.

* configure.ac (AC_CHECK_HEADERS): Remove ioctls.h and sys/ioctl.h.
2016-05-13 22:09:40 +00:00
deff569f41 sock.c: include <linux/ioctl.h> instead of <sys/ioctl.h> or <ioctls.h>
Include <linux/ioctl.h> for <linux/sockios.h> on alpha, sh, and sh64
architectures because their <asm/sockios.h> use _IOR and _IOW macros
but don't include anything that would define these macros.

Being a wrapper around <linux/ioctl.h>, <sys/ioctl.h> brings
no benefits in this case.  <ioctls.h> simply doesn't exist.

* sock.c [ALPHA || SH || SH64]: Include <linux/ioctl.h>
instead of <sys/ioctl.h> or <ioctls.h>.
2016-05-13 22:09:40 +00:00
fe3de9c601 v4l2: include <linux/ioctl.h> instead of <sys/ioctl.h>
Being a wrapper around <linux/ioctl.h>, <sys/ioctl.h> brings
no benefits for parser of VIDIOC_* ioctls.

* v4l2.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>.
2016-05-13 22:09:40 +00:00
f9199ab081 printsiginfo: remove "verbose" argument
Remove erroneous use of verbose(tcp) as a printing limit
for already fetched members of siginfo_t structure.

* printsiginfo.h (printsiginfo): Remove boolean argument.
* printsiginfo.c (printsigval): Remove boolean argument, print
si_int and si_ptr members unconditionally.  All callers changed.
(print_si_info): Remove boolean argument, print si_utime and si_stime
members unconditionally.  All callers changed.
(printsiginfo): Remove boolean argument.  All callers changed.
2016-05-13 22:09:07 +00:00
602998be62 tests/ptrace.c: tweak magic constants to make the test more reliable
* tests/ptrace.c (main): Change bad_request and bad_data to make they
lower 32-bit parts closer to -1U.
2016-05-13 09:37:10 +00:00
98f632a14c tests/ioctl_v4l2.c: fix build on older systems
Fix build on systems without HAVE_DECL_V4L2_CTRL_TYPE_STRING or
V4L2_CTRL_CLASS_CAMERA.

* tests/ioctl_v4l2.c (main) [VIDIOC_S_EXT_CTRLS]: Disable part of the
test if [!HAVE_DECL_V4L2_CTRL_TYPE_STRING].
Replace V4L2_CTRL_CLASS_CAMERA with V4L2_CTRL_CLASS_USER.
2016-05-13 05:18:42 +00:00
f2f162e89c Do not use htole32 function
htole32 function is not portable enough.

* v4l2.c (print_pixelformat): Rewrite initialization of pixel format
union without using of htole32.
* tests/ioctl_v4l2.c (main): Likewise.
2016-05-13 05:18:42 +00:00
09de43b39d tests/ioctl_v4l2.c: fix typo
* tests/ioctl_v4l2.c (main)
[!HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE]: Fix typo in expected
output string.
2016-05-13 05:18:42 +00:00
632efff900 tests: check decoding of ptrace syscall
* tests/ptrace.c: New file.
* tests/ptrace.test: New test.
* tests/.gitignore: Add ptrace.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add ptrace.
2016-05-13 05:18:41 +00:00
76b4c33c7f ptrace: decode data argument of PTRACE_PEEKSIGINFO request
The data argument of PTRACE_PEEKSIGINFO request is a pointer
to siginfo_t array.

* printsiginfo.c (print_siginfo_t): New function.
(print_siginfo_array): New mpers printer.
* process.c (SYS_FUNC(ptrace)): Print data argument of
PTRACE_PEEKSIGINFO request using print_siginfo_array.
2016-05-13 02:36:14 +00:00
d9fb4a434d ptrace: decode data argument of PTRACE_SECCOMP_GET_FILTER request
* process.c (SYS_FUNC(ptrace)): Print data argument of
PTRACE_SECCOMP_GET_FILTER request on exiting using print_seccomp_fprog.
2016-05-13 01:39:41 +00:00
846f617805 ptrace: decode argument of PTRACE_GETEVENTMSG request
* process.c (SYS_FUNC(ptrace)): Print data argument of
PTRACE_GETEVENTMSG request on exiting using printnum_ulong.
2016-05-13 01:39:41 +00:00
1634de70b2 ptrace: decode arguments of PTRACE_[GS]ETSIGMASK requests
* process.c (SYS_FUNC(ptrace)): Print arguments of PTRACE_GETSIGMASK
and PTRACE_SETSIGMASK requests using print_sigset_addr_len.
2016-05-13 01:39:41 +00:00
8bd7f3155c ptrace: return RVAL_DECODED for requests decoded on entering
* process.c (SYS_FUNC(ptrace)): Return RVAL_DECODED on entering for all
ptrace requests except those that are partially decoded in exiting,
2016-05-13 01:39:39 +00:00
388aca6472 ptrace: print PTRACE_O_* flags using printflags64
As flags argument has a long integer type, print it using printflags64
because printflags takes unsigned int argument.

* process.c (SYS_FUNC(ptrace)): Print PTRACE_O_* flags
using printflags64.
2016-05-12 16:35:54 +00:00
7c8e3302ea ptrace: print data argument of PTRACE_SEIZE et al requests as flags
* process.c (SYS_FUNC(ptrace)): Print data argument of
PTRACE_SEIZE and PTRACE_OLDSETOPTIONS as PTRACE_O_* flags.
2016-05-12 15:53:28 +00:00
caa2bc3873 ptrace: print data argument of PTRACE_SINGLEBLOCK et al requests as signo
* process.c (SYS_FUNC(ptrace)): Print data argument of
PTRACE_SINGLEBLOCK, PTRACE_SYSEMU, and PTRACE_SYSEMU_SINGLESTEP requests
as a signal number.
2016-05-12 15:50:43 +00:00
809ee3e46c ptrace: decode addr argument of PTRACE_PEEKSIGINFO request
The addr argument of PTRACE_PEEKSIGINFO request is a pointer to
a struct ptrace_peeksiginfo_args.

* process.c: Include "xlat/ptrace_peeksiginfo_flags.h".
(SYS_FUNC(ptrace)): Print addr argument of PTRACE_PEEKSIGINFO request
as a struct ptrace_peeksiginfo_args.
* xlat/ptrace_peeksiginfo_flags.in: New file.
2016-05-12 15:45:24 +00:00
3a5cd34e34 ptrace: fix printing addr argument of PTRACE_GETSIGMASK et al requests
For PTRACE_GETSIGMASK and PTRACE_SETSIGMASK requests, addr argument
contains the size of the buffer pointed to by data argument.
For PTRACE_SECCOMP_GET_FILTER request, addr argument contains
an offset counter.

* process.c (SYS_FUNC(ptrace)): Print addr argument of
PTRACE_GETSIGMASK, PTRACE_SETSIGMASK, and PTRACE_SECCOMP_GET_FILTER
requests using %lu format.
2016-05-12 15:38:35 +00:00
5c720b0b9b ptrace: do not print data argument of some requests on sparc
On sparc, kernel ignores data argument of PTRACE_GETREGS,
PTRACE_SETREGS, PTRACE_GETFPREGS, and PTRACE_SETFPREGS requests.

* process.c (SYS_FUNC(ptrace)) [SPARC || SPARC64]: Return RVAL_DECODED
right after printing addr argument if request is one of PTRACE_GETREGS,
PTRACE_SETREGS, PTRACE_GETFPREGS, or PTRACE_SETFPREGS.
2016-05-12 15:18:05 +00:00
91bd125f53 ptrace: do not print addr and data arguments of PTRACE_ATTACH-like requests
As kernel ignores addr and data arguments of PTRACE_ATTACH,
PTRACE_INTERRUPT, PTRACE_KILL, and PTRACE_LISTEN request,
we do not print them either.

* process.c (SYS_FUNC(ptrace)): After printing pid argument, return
RVAL_DECODED if request is one of PTRACE_ATTACH, PTRACE_INTERRUPT,
PTRACE_KILL, or PTRACE_LISTEN.
2016-05-12 15:10:41 +00:00
89ca4aa140 ptrace: do not print arguments of PTRACE_TRACEME request
As kernel ignores arguments of PTRACE_TRACEME request,
we do not print them either.

* process.c (SYS_FUNC(ptrace)): If request is PTRACE_TRACEME,
return early with RVAL_DECODED.
2016-05-12 15:03:58 +00:00
73a8e97d56 ptrace: print request using printxval64
As first argument of ptrace syscall has a long integer type, print
it using printxval64 because printxval takes unsigned int argument.

* process.c (SYS_FUNC(ptrace)): Change type of "request" variable
from "long" to "unsigned long", print it using printxval64 instead
of printxval.
2016-05-12 14:47:01 +00:00
49955948fb Do not sign-extend siginfo_t.si_syscall
* printsiginfo.c (print_si_info): Explicitly cast si_syscall member
of siginfo_t that has type "int" to "unsigned int", to avoid sign
extension when passed to syscall_name function.
2016-05-12 14:35:02 +00:00
50a26514a5 Export print_seccomp_fprog for further use in parser of ptrace syscall
* defs.h (print_seccomp_fprog): New prototype.
* seccomp.c (print_seccomp_fprog): Remove "static" keyword.
Move printing of struct seccomp_fprog fields ...
(print_seccomp_filter): ... here.
2016-05-12 14:35:02 +00:00
01d16ccb96 tests: add munlockall.test
* tests/munlockall.c: New file.
* tests/munlockall.test: New test.
* tests/.gitignore: Add munlockall.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add munlockall.test.
2016-05-11 12:26:00 +00:00
0684c35c25 tests: add link.test
* tests/link.c: New file.
* tests/link.test: New test.
* tests/.gitignore: Add link.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add link.test.
2016-05-11 12:26:00 +00:00
d81b58f650 tests: check decoding and dumping of preadv2 and pwritev2 syscalls
* tests/preadv2-pwritev2.c: New file.
* tests/preadv2-pwritev2.test: New test.
* tests/.gitignore: Add preadv2-pwritev2.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add preadv2-pwritev2.
2016-05-11 01:54:12 +00:00
a6dd094287 Implement decoding of preadv2 and pwritev2 syscalls
* io.c: Include "xlat/rwf_flags.h".
(do_preadv, do_pwritev, SYS_FUNC(preadv2), SYS_FUNC(pwritev2)):
New functions.
(SYS_FUNC(preadv)): Use do_preadv.
(SYS_FUNC(pwritev)): Use do_pwritev.
* linux/32/syscallent.h (preadv2, pwritev2): New entries.
* linux/64/syscallent.h: Likewise.
* linux/arm/syscallent.h: Likewise.
* linux/hppa/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/ia64/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/mips/syscallent-n32.h: Likewise.
* linux/mips/syscallent-n64.h: Likewise.
* linux/mips/syscallent-o32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* syscall.c (dumpio): Handle SEN_preadv2 and SEN_pwritev2.
* xlat/rwf_flags.in: New file.
* NEWS: Mention parsers of new syscalls.
2016-05-11 00:58:06 +00:00
ea7b9dbcbd tests: extend test coverage of xattr family syscalls
* tests/xattr.c: Check decoding of all xattr family syscalls.
* tests/xattr.test: Use run_strace_match_diff.
* tests/xattr.expected: Remove.
* tests/Makefile.am (EXTRA_DIST): Remove it.
2016-05-10 22:25:23 +00:00
72cb81151f tests: add print_quoted_memory function to libtests
* tests/print_quoted_string.c (print_quoted_memory): New function.
(print_quoted_string): Use it.
* tests/tests.h (print_quoted_memory): New prototype.
2016-05-10 22:12:01 +00:00
ec9c31705b Fix corner cases of xattr family syscalls decoding
* xattr.c (print_xattr_val): Do not take insize into account, print it
as unsigned long.
Do not decode xattr values of size larger than XATTR_SIZE_MAX.
Use static buffer for fetching xattr values.
(print_xattr_list): Do not decode string when size is zero.
2016-05-10 21:50:37 +00:00
0efd888e22 userfaultfd: Add ioctl tests
* tests/ioctl_uffdio.c: New file.
* tests/ioctl_uffdio.test: New test.
* tests/.gitignore: Add ioctl_uffdio.
* tests/Makefile.am (check_PROGRAMS):  Likewise.
(DECODER_TESTS): Add ioctl_uffdio.test.
2016-05-10 11:00:12 +00:00
5d1216a56b Decode UFFDIO_* ioctls
Decode the ioctls associated with the userfaultfd fd.
Note that they tend to read from and also return result in it's data
structure.

* configure.ac (AC_CHECK_HEADERS): Add linux/userfaultfd.h.
* userfaultfd.c [HAVE_LINUX_USERFAULTFD_H]: Add ioctl decoder.
* defs.h (uffdio_ioctl): New prototype.
* ioctl.c (ioctl_decode) [HAVE_LINUX_USERFAULTFD_H]: Wire in
uffdio_ioctl.
* xlat/uffd_*.in: Create flag xlat for all the IOCTLs.
2016-05-10 10:54:54 +00:00
c415387157 Update AX_CODE_COVERAGE
* m4/ax_code_coverage.m4: Update to serial 16.
* Makefile.am (CODE_COVERAGE_LCOV_OPTIONS): Remove.
(CODE_COVERAGE_GENHTML_OPTIONS): Update, add prefix.
(CODE_COVERAGE_BRANCH_COVERAGE): Set to 1.
2016-05-10 09:51:56 +00:00
26b2cfeb6b strace-ff.test: fix race condition
* tests/strace-ff.test: Wait for completion of PR_SET_PTRACER command.
2016-05-10 09:51:04 +00:00
d12c44bcac tests/epoll_pwait.c: fix for x32
* tests/epoll_pwait.c (main): Explicitly cast last syscall argument
to kernel_ulong_t.
2016-05-10 01:37:46 +00:00
a44c5184f9 strace-S.test: check "-S name"
* tests/strace-S.test: Add a check for "-c -S name" output.
2016-05-10 00:39:17 +00:00
fa925dce70 Fix NULL dereference in "-S name" when syscall table has holes
* count.c (syscall_cmp): Do not pass NULL to strcmp.
2016-05-10 00:38:59 +00:00
804bb8797b strace-S.test: cleanup
* tests/strace-S.test: Rewrite using sed.
2016-05-10 00:38:52 +00:00
6781111857 tests: add strace-S.test
* tests/strace-S.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
2016-05-09 23:33:32 +00:00
58ab8b49e0 strace-ff.test: check that -ff does not create unexpected output files
* tests/strace-ff.expected: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
* tests/strace-ff.test: Use it.  Check that no other output files
have been created.
2016-05-09 23:21:30 +00:00
c259f4fd5d tests: add strace-ff.test
* tests/strace-ff.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
2016-05-09 23:21:20 +00:00
a30d02e902 strace-V.test: cleanup
* tests/strace-V.test: Move config.h parser to a function.
Rename $OUT to $EXP, swap arguments passed to match_diff.
2016-05-09 23:19:37 +00:00
c4bb57745a tests: add strace-V.test
* tests/strace-V.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
2016-05-09 23:18:40 +00:00
e3086cbc4d tests: check decoding of epoll_pwait syscall
* tests/epoll_pwait.c: New file.
* tests/epoll_pwait.test: New test.
* tests/.gitignore: Add epoll_pwait.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add epoll_pwait.test.
2016-05-09 22:12:57 +00:00
6d44012cb5 Assume that sys/epoll.h exists
This header file was added in glibc-2.3.2,
so it's safe to assume its availability.

* configure.ac (AC_CHECK_HEADERS): Remove sys/epoll.h.
* epoll.c: Include <sys/epoll.h> unconditionally.
Compile [HAVE_SYS_EPOLL_H] code unconditionally.
* tests/epoll_ctl.c: Do not check for HAVE_SYS_EPOLL_H.
* tests/epoll_wait.c: Likewise.
2016-05-09 21:46:17 +00:00
071b9274f4 Factorize send_query functions
* socketutils.c (send_query): New function.
(inet_send_query, unix_send_query): Use it.
2016-05-08 12:37:03 +00:00
b6d4b1167b tests: relax timings
Allow nanosleep(2) to spend 10% more time to make the test suite
more reliable on slow systems.

* tests/count.test: Treat 1.1 seconds as valid output.
* tests/strace-T.expected: Likewise.
* tests/strace-r.expected: Likewise.
2016-05-08 00:00:18 +00:00
88fc4c23d4 tests/attach-f-p.c: increase timeouts
Increase timeouts to make the test more reliable on slow systems.

* tests/attach-f-p.c (its): Increase timeouts to 1, 2, and 3 seconds,
respectively.
2016-05-07 23:51:47 +00:00
dc0dcf90d6 Remove unused functions
* defs.h (umove_ulong_or_printaddr, umove_ulong_array_or_printaddr):
Remove.
* util.c (umove_ulong_or_printaddr, umove_ulong_array_or_printaddr):
Likewise.
2016-05-07 23:37:53 +00:00
17d1a1633d v4l2.c: use print_array function
* v4l2.c (print_v4l2_ext_control, umoven_or_printaddr_ignore_syserror):
New functions.
(print_v4l2_ext_controls): Use them via print_array.
2016-05-07 23:37:53 +00:00
6469f39ee9 uid.c: use print_array function
* uid.c (print_gid): New function.
(print_groups): Use it via print_array.
2016-05-07 23:37:53 +00:00
f82dcd980d seccomp.c: use print_array function
* seccomp.c (decode_filter, decode_seccomp_fprog): Remove.
(print_bpf_filter): New function.
(print_seccomp_fprog): Use it via print_array.
* tests/seccomp-filter-v.c (main): Update.
2016-05-07 23:37:53 +00:00
48b06a63e8 scsi.c: use print_array function
* scsi.c (print_uchar): New function.
(print_sg_io_buffer): Use it via print_array.
2016-05-07 23:37:53 +00:00
fd2d6a7f52 poll.c: use print_array function
* poll.c (print_pollfd): Change for use as print_array callback.
(decode_poll_entering): Use print_array.
* tests/poll.c: Update.
* tests/poll.test: Update.
2016-05-07 23:37:53 +00:00
636b8c161c numa.c: use print_array function
* numa.c (print_node): New function.
(print_nodemask): Use it via print_array.
(print_page_array, print_int_array): Remove.
(print_addr): New function.
(print_status, print_int): Change for use as print_array callback.
(SYS_FUNC(move_pages)): Use print_addr, print_int, and print_status
via print_array.
* tests/move_pages.c: Update.
* tests/set_mempolicy.c: Likewise.
* tests/set_mempolicy.test: Likewise.
2016-05-07 23:37:52 +00:00
0f04b9d6d1 mem.c: use print_array function
* mem.c [POWERPC] (print_protmap_entry): New function.
[POWERPC] (SYS_FUNC(subpage_prot)): Use it via print_array.
2016-05-07 23:32:30 +00:00
ba4a4c60cf kexec.c: use print_array function
* kexec.c (print_seg): Change for use as print_array callback.
(print_kexec_segments): Use print_array.
2016-05-07 23:32:30 +00:00
0bae8001da ipc_sem.c: use print_array function
* ipc_sem.c (tprint_sembuf): Rename to print_sembuf, change signature
for use as print_array callback.
(tprint_sembuf_array): Use print_array.
2016-05-07 23:32:30 +00:00
4ce3054340 io.c: use print_array function
* io.c (print_iovec_config): New structure.
(print_iovec): New function.
(tprint_iov_upto): Use print_array.
* tests/preadv.c (main): Update.
* tests/pwritev.c (print_iovec, main): Likewise.
2016-05-07 23:32:29 +00:00
02387258cb epoll.c: use print_array function
* epoll.c (print_epoll_event): Change signature for use as print_array
callback, all users updated.
(print_epoll_event_array): Remove.
(epoll_wait_common): Change to use print_array instead
of print_epoll_event_array.
2016-05-07 22:49:39 +00:00
2868e2b941 aio.c: use print_array function
* aio.c (print_iocbp): New function.
(SYS_FUNC(io_submit)): Use it via print_array.  Use widen_to_long
to process long int argument.
(print_io_event): Change to print struct io_event fetched elsewhere.
(SYS_FUNC(io_cancel)): Update use of print_io_event.
(SYS_FUNC(io_getevents)): Use print_io_event via print_array.
Use widen_to_long to print long int arguments.
* tests/aio.c (main): Check decoding of io_submit with negative "nr".
2016-05-07 22:40:06 +00:00
72e4f7af56 Introduce print_array function for consistent decoding of arrays
* defs.h (print_array): New prototype.
* util.c (print_array): New function.
2016-05-07 13:08:36 +00:00
eb5c233d99 Fix corner cases of ICMP_FILTER decoding
* net.c (print_icmp_filter): Print icmp_filter for any positive length.
* tests/net-icmp_filter.c: New file.
* tests/net-icmp_filter.test: New test.
* tests/.gitignore: Add net-icmp_filter.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add net-icmp_filter.test.
2016-05-06 00:22:52 +00:00
1d17ac7c32 xlat: do not strip "1<<" prefix from xlat strings
* xlat/gen.sh (cond_xlat, gen_header): Do not strip "1<<" prefix
from xlat strings to fix incorrect output.
* tests/caps.awk: Update.

Reported-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2016-05-05 22:20:40 +00:00
dcb18a6fd5 tests/xstatfsx.c: fix mips o32 support
mips o32 differs from all other 32-bit architectures by defining
__kernel_fsid_t structure as an array of long ints.

* tests/xstatfsx.c (print_statfs): Explicitly cast elements
of PRINT_F_FSID array to unsigned int.
2016-05-05 21:20:58 +00:00
1e56814f77 Mpersify VIDIOC_* ioctl parser
* v4l2.c: Mpersify arch-specific structures.
(v4l2_ioctl): Mpersify.
* tests/ioctl_v4l2.c: New file.
* tests/ioctl_v4l2.test: New test.
* tests/.gitignore: Add ioctl_v4l2.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add ioctl_v4l2.test.
2016-05-05 21:20:56 +00:00
1822546133 Mpersify ioctl macros
As values of some ioctl macros differ between personalities, these
personality specific ioctl macros should be properly defined for
mpersified code.  Implement this by redefining personality specific
ioctl macros from ioctlent*.h for each file that includes MPERS_DEFS.

* Makefile.am (ioctl_macros_h): New variable.
(ioctl_macros%.h): New rule.
(BUILT_SOURCES, CLEANFILES): Add $(ioctl_macros_h).
(m%_type_defs.h): #include MPERS_$(mpers_PREFIX)IOCTL_MACROS.
* defs.h [HAVE_M32_MPERS] (MPERS_m32_IOCTL_MACROS): New macro.
[HAVE_MX32_MPERS] (MPERS_mx32_IOCTL_MACROS): Likewise.

Acked-by: Elvira Khabirova <lineprinter0@gmail.com>
2016-05-05 21:20:47 +00:00
0a47ff79ca Fix decoding of VIDIOC_* ioctls
* v4l2.c: Fix numerous bugs in decoding of VIDIOC_* ioctls.
* tests/ioctl.c (main): Update.
2016-05-05 21:20:45 +00:00
6331fd4b32 nsyscalls.test: add mips o32 support
Out-of-range syscalls looks differently on mips o32.

* tests/nsyscalls.c (main): Handle LINUX_MIPSO32.
* tests/nsyscalls.test: Trace syscall called "syscall" on mips.
2016-05-05 18:04:33 +00:00
1e9c966398 Remove initialization of big holes in syscallent.h files
There is no need to explicitly initialize big holes after conversion
of syscallent.h files to use designated initializers.  For architectures
that have some data at the end of syscallent.h this initialization of
big holes is no-op, for others it just inflates the table unnecessarily.

* linux/arc/syscallent.h: Remove initialization of arch specific block
at the end of table.
* linux/metag/syscallent.h: Likewise.
* linux/nios2/syscallent.h: Likewise.
* linux/or1k/syscallent.h: Likewise.
* linux/tile/syscallent.h: Likewise.
* linux/tile/syscallent1.h: Likewise.
* linux/arm/syscallent.h: Remove explicit initialization of a big hole
before socket subcalls.
* linux/i386/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/mips/syscallent-n32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* linux/mips/syscallent-compat.h: Remove explicit initialization
of big holes between different mips ABIs.
* linux/mips/syscallent-n64.h: Remove explicit initialization
of big holes before socket subcalls and between different mips ABIs.
* linux/mips/syscallent-o32.h: Likewise.
2016-04-29 21:51:00 +00:00
7a1c25ebc4 xlat: make "1<<val" syntax work with 64-bit values
* xlat/gen.sh(cond_xlat, gen_header): Generate 1UUL<<val
for 1<<val syntax.

Reported-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2016-04-29 20:12:54 +00:00
070fec2248 Fix typo in XLAT_TYPE_PAIR
* xlat.h (XLAT_TYPE_PAIR): Take "type" parameter.

Reported-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2016-04-29 20:04:38 +00:00
e212a15955 Fix decoding of move_pages syscall
* numa.c (print_page_array, print_status, print_int, print_int_array):
New functions.
(SYS_FUNC(move_pages)): Rewrite using these functions.
* tests/move_pages.c: New file.
* tests/move_pages.test: New test.
* tests/.gitignore: Add move_pages.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add move_pages.test.
2016-04-29 18:21:02 +00:00
900a282d36 tests: check decoding of mbind syscall
* tests/mbind.c: New file.
* tests/mbind.test: New test.
* tests/.gitignore: Add mbind.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add mbind.test.
2016-04-29 18:21:01 +00:00
9019cf4cf5 Change type of struct xlat.val to uint64_t
Some ioctls have flags fields that are 64-bit.  A 32-bit val means
these flags will never be matched or printed.

* xlat.h: Include <stdint.h>.
(struct xlat): Change type of val to uint64_t.
2016-04-29 01:12:14 +00:00
9ae46690bd xlat: extend syntax with #val_type directive
When #val_type directive is encountered, gen.sh starts using
XLAT_TYPE/XLAT_TYPE_PAIR macros instead of XLAT/XLAT_PAIR,
with #val_type's argument as a type.

For example, "#val_type uint64_t" means values of type uint64_t.

* xlat/gen.sh (gen_header, print_xlat, print_xlat_pair):
Add val_type support.
2016-04-29 01:12:14 +00:00
6b040fc505 xlat/gen.sh: prepare for adding #val_type directive support
This is essentially a no-op change that makes the following change
easier to read.

* xlat/gen.sh (print_xlat, print_xlat_pair): New functions.
(cond_xlat, gen_header): Use them.
2016-04-29 01:12:14 +00:00
0f4982691e Introduce XLAT_TYPE and XLAT_TYPE_PAIR macros
* xlat.h (XLAT_TYPE): New macro, similar to XLAT but casts
to the specified type instead of unsigned int.
(XLAT_TYPE_PAIR): New macro, similar to XLAT_PAIR but casts
to the specified type instead of unsigned int.
2016-04-29 00:15:01 +00:00
3f25b65d63 xlat: generate xlat pairs using new XLAT_PAIR macro
Before this change there were two forms of xlat entries: those that use XLAT
or XLAT_END macros, and others verbatim entries.  This change converts
the latter to use new XLAT_PAIR macro.

This is necessary for the upcoming change of xlat.val type.

* xlat.h (XLAT_PAIR): New macro.
* xlat/gen.sh (cond_xlat, gen_header): Use it.
2016-04-29 00:15:01 +00:00
a9f956d279 Explicitly cast argument of XLAT macro to unsigned int
This is necessary for the upcoming change of xlat.val type.

* xlat.h (XLAT): Cast the argument to unsigned int.
2016-04-29 00:15:01 +00:00
dd9a511c17 Change type of {s,t}print_open_modes's argument to unsigned
As "flags" argument of sprint_open_modes and tprint_open_modes is
involved only in bit operations, change its type to unsigned.

* defs.h.c (sprint_open_modes, tprint_open_modes): Change type
to unsigned int.
* open.c (sprint_open_modes, tprint_open_modes): Likewise.
2016-04-29 00:13:20 +00:00
909e664a2e tests/remap_file_pages.c: fix for the upcoming change of xlat.val type
The "flags" argument of remap_file_page syscall has type "unsigned
long", so it is not correct to load most significant bits with garbage
ans assume they are going to be ignored.

* tests/remap_file_pages.c (main): Remove artificial garbage from flags.
2016-04-28 21:14:54 +00:00
00beed61a4 Introduce printflags64 function
This is necessary for the upcoming change of xlat.val type.

* defs.h (printflags): Rename to printflags64, change type of integer
argument to uint64_t.
(printflags): New static inline function.
* util.c (printflags): Rename to printflags64, change type of integer
argument to uint64_t.  Print it using PRIx64 format.
Based on patch by Jeff Mahoney <jeffm@suse.com>.
2016-04-28 19:05:13 +00:00
01c910ccc3 Introduce sprintflags64 function
This is necessary for the upcoming change of xlat.val type.

* defs.h (sprintflags): Rename to sprintflags64, change type of integer
argument to uint64_t.
(sprintflags): New static inline function.
* util.c (sprintflags): Rename to sprintflags64, change type of integer
argument to uint64_t.  Print it using PRIx64 format.
Based on patch by Jeff Mahoney <jeffm@suse.com>.
2016-04-28 19:04:38 +00:00
c1328100d4 printxvals: change type of integer argument to uint64_t
This is necessary for the upcoming change of xlat.val type.
All users of printxvals are already prepared for this change.

* defs.h (printxvals): Change type of integer argument to uint64_t.
* util.c (printxvals): Likewise.  Print it using PRIx64 format.
Patch by Jeff Mahoney <jeffm@suse.com>.
2016-04-28 19:04:02 +00:00
43242e6656 xlat_search: change type of integer argument to uint64_t
This is necessary for the upcoming change of xlat.val type.
All users of addflags are already prepared for this change.

* defs.h (xlat_search): Change type of integer argument to uint64_t.
* util.c (xlat_search): Likewise.  Pass it by pointer.
(xlat_bsearch_compare): Treat first argument as a pointer.
Patch by Jeff Mahoney <jeffm@suse.com>.
2016-04-28 19:04:02 +00:00
ed92d87f1c Introduce xlookup64 function
This is necessary for the upcoming change of xlat.val type.

* defs.h (xlookup): Rename to xlookup64, change type of integer argument
to uint64_t.
(xlookup): New static inline function.
* util.c (xlookup): Rename to xlookup64, change type of integer
argument to uint64_t.
Based on patch by Jeff Mahoney <jeffm@suse.com>.
2016-04-28 19:04:02 +00:00
c9146ebef8 addflags: change type of integer argument to uint64_t
This is necessary for the upcoming change of xlat.val type.
All users of addflags are already prepared for this change.

* defs.h (addflags): Change type of integer argument to uint64_t.
* util.c (addflags): Likewise.  Print it using PRIx64 format.
Based on patch by Jeff Mahoney <jeffm@suse.com>.
2016-04-28 19:04:02 +00:00
482bab05a0 Introduce printxval64 wrapper
This is necessary for the upcoming change of xlat.val type.

* defs.h (printxval64): New static inline function.
2016-04-28 19:04:01 +00:00
7d63aa5ef3 Turn printxval macro into a static inline function
This is necessary for the upcoming change of xlat.val type.

* defs.h (printxval): Change to static inline function.
2016-04-28 19:03:21 +00:00
38ed916d1b tests: check decoding of migrate_pages syscall
* tests/migrate_pages.c: New file.
* tests/migrate_pages.test: New test.
* tests/.gitignore: Add migrate_pages.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add migrate_pages.test.
2016-04-28 01:20:19 +00:00
c8c7a5333e Fix decoding of migrate_pages syscall
* numa.c (SYS_FUNC(migrate_pages)): Print syscall arguments
in the right order.
2016-04-28 01:20:19 +00:00
d10a95548c tests: check decoding of set_mempolicy syscall
* tests/set_mempolicy.c: New file.
* tests/set_mempolicy.test: New test.
* tests/.gitignore: Add set_mempolicy.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add set_mempolicy.test.
2016-04-28 01:17:39 +00:00
aa1ed760c8 tests: check decoding of get_mempolicy syscall
* tests/get_mempolicy.c: New file.
* tests/get_mempolicy.test: New test.
* tests/.gitignore: Add get_mempolicy.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add get_mempolicy.test.
2016-04-28 01:17:39 +00:00
9547c4526e numa: fix decoding of nodemask arrays
* numa.c (get_nodes): Rewrite an rename to print_nodemask.
All callers updated.
(SYS_FUNC(mbind), SYS_FUNC(set_mempolicy), SYS_FUNC(get_mempolicy)):
Print a delimiter before nodemask argument.
2016-04-28 01:17:05 +00:00
fb1ae073e9 Fix decoding of policy argument of get_mempolicy syscall
* numa.c (SYS_FUNC(get_mempolicy)): Print policy argument in square
brackets to indicate indirect access.
2016-04-27 22:36:07 +00:00
45a3e460bc Fix decoding of pid_t argument of migrate_pages syscall
* numa.c (SYS_FUNC(migrate_pages)): Print pid_t syscall
argument using %d format.
2016-04-27 22:09:41 +00:00
a182d8c6c1 tests: add printxval function to libtests
* tests/tests.h (printxval): New prototype.
* tests/printxval.c: New file.
* tests/Makefile.am  (libtests_a_SOURCES): Add it.
2016-04-27 20:31:34 +00:00
d6c76f3a37 tests: check decoding of remap_file_pages syscall
* tests/remap_file_pages.c: New file.
* tests/remap_file_pages.test: New test.
* tests/.gitignore: Add remap_file_pages.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add remap_file_pages.test.
2016-04-27 16:04:01 +00:00
649ee4b370 tests: add pause.test
* tests/pause.c: New file.
* tests/pause.test: New test.
* tests/.gitignore: Add pause.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add pause.test.
2016-04-27 14:22:22 +00:00
7585ccdcab tests: add kill.test
* tests/kill.c: New file.
* tests/kill.test: New test.
* tests/.gitignore: Add kill.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add kill.test.
2016-04-27 14:22:02 +00:00
f1cadc2675 Fix decoding of pid_t arguments of kill and tgkill syscalls
* signal.c (SYS_FUNC(kill), SYS_FUNC(tgkill)): Print pid_t syscall
arguments using %d format.
2016-04-27 14:04:55 +00:00
b45a1e78e3 tests: add mlock.test
* tests/mlock.c: New file.
* tests/mlock.test: New test.
* tests/.gitignore: Add mlock.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add mlock.test.
2016-04-27 11:11:12 +00:00
a4da0c8b79 Move parsers of NUMA related syscalls to numa.c
* mem.c (get_nodes, SYS_FUNC(mbind), SYS_FUNC(set_mempolicy),
SYS_FUNC(get_mempolicy), SYS_FUNC(migrate_pages), SYS_FUNC(move_pages)):
Move ...
* numa.c: ... here.
* Makefile.am (strace_SOURCES): Add numa.c
2016-04-27 05:09:16 +00:00
db34e195bb tests/umovestr3.c: robustify against os specific issues
* tests/umovestr3.c (main): Create extra gap before unreadable page.
2016-04-27 03:18:44 +00:00
12890ffda1 tests: extend test coverage of umovestr short read condition
* tests/umovestr3.c: New file.
* tests/umovestr3.test: New test.
* tests/.gitignore: Add umovestr3.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add umovestr3.test.
2016-04-27 01:32:21 +00:00
1c61f829e4 tests: check decoding of out-of-range syscalls
* tests/nsyscalls.c: New file.
* tests/nsyscalls.test: New test.
* tests/.gitignore: Add nsyscalls.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add nsyscalls.test.
2016-04-27 01:32:20 +00:00
f443fd40cb Fix decoding of 3rd argument of getdents/getdents64 syscalls
* dirent.c (SYS_FUNC(getdents)): Always print 3rd syscall argument
as unsigned int.
* dirent64.c (SYS_FUNC(getdents64)): Likewise.
* tests/getdents.c (main): Check it.
* tests/getdents64.c (main): Likewise.
2016-04-26 22:38:10 +00:00
b83bb1cc7a Fix decoding of LINUX_REBOOT_CMD_RESTART2 argument
* reboot.c (SYS_FUNC(reboot)): Cast numeric arguments to unsigned int.
2016-04-26 17:46:44 +00:00
2607b4e48a .travis.yml: raise sleep delay
Previous sleep delay value seems to be not enough nowadays.

.travis.yml (SLEEP_A_BIT): Raise sleep delay.
2016-04-26 16:46:20 +00:00
9d2b6b9b52 Move definitions of MPOL_* constants to xlat files
* mem.c (MPOL_DEFAULT, MPOL_PREFERRED, MPOL_BIND, MPOL_INTERLEAVE):
Move to xlat/policies.in.
(MPOL_F_NODE, MPOL_F_ADDR): Move to xlat/mempolicyflags.in.
(MPOL_MF_STRICT, MPOL_MF_MOVE, MPOL_MF_MOVE_ALL): Move
to xlat/mbindflags.in.
2016-04-26 16:36:30 +00:00
f41eaebddf tests: check decoding of renameat2 syscall
* tests/renameat2.c: New file.
* tests/renameat2.test: New test.
* tests/.gitignore: Add renameat2.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add renameat2.test.
2016-04-26 16:30:43 +00:00
96cf7d79b3 Add default values for RENAME_* constants
* xlat/rename_flags.in: Add default values.
2016-04-26 16:30:43 +00:00
33fc2e4757 tests: check decoding of utimes syscall
* tests/utimes.c: New file.
* tests/utimes.test: New test.
* tests/.gitignore: Add utimes.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add utimes.test.
2016-04-26 16:13:17 +00:00
4e9269aebc tests: check decoding of futimesat syscall
* tests/futimesat.c: New file.
* tests/futimesat.test: New test.
* tests/.gitignore: Add futimesat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add futimesat.test.
2016-04-26 16:13:15 +00:00
7dad3f3edd tests: extend test coverage of mknod syscall
* mknod.c (main): Check more corner cases of mode_t parser.
* mknod.test: Update.
2016-04-26 11:00:51 +00:00
68b1d24e59 tests: add sched_yield.test
* tests/sched_yield.c: New file.
* tests/sched_yield.test: New test.
* tests/.gitignore: Add sched_yield.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add sched_yield.test.
2016-04-26 10:31:11 +00:00
86ff93e527 tests: add sync.test
* tests/sync.c: New file.
* tests/sync.test: New test.
* tests/.gitignore: Add sync.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add sync.test.
2016-04-26 10:29:58 +00:00
63be9e318c tests: add mknodat.test
* tests/mknodat.c: New file.
* tests/mknodat.test: New test.
* tests/.gitignore: Add mknodat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add mknodat.test.
2016-04-26 10:11:41 +00:00
363b71d281 tests: add unlink.test
* tests/unlink.c: New file.
* tests/unlink.test: New test.
* tests/.gitignore: Add unlink.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add unlink.test.
2016-04-26 10:11:41 +00:00
68d171d133 tests: add reboot.test
* tests/reboot.c: New file.
* tests/reboot.test: New test.
* tests/.gitignore: Add reboot.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add reboot.test.
2016-04-26 10:11:41 +00:00
67c2f67410 Fix decoding of statfs family syscalls
Fix decoders of fstatfs, fstatfs64, statfs, and statfs64 syscalls
by rewriting them using mpers infrastructure.

* fetch_struct_statfs.c: New file.
* fstatfs.c: Likewise.
* fstatfs64.c: Likewise.
* print_statfs.c: Likewise.
* statfs.h: Likewise.
* statfs64.c: Likewise.
* statfs.c: Remove everything except SYS_FUNC(statfs).
* configure.ac: Remove the check for struct statfs64 in <sys/vfs.h>.
Add checks for struct statfs and struct statfs64 in <asm/statfs.h>.
Add checks for f_frsize and f_flags members of these structures.
* defs.h (struct strace_statfs): New forward declaration.
(print_struct_statfs, print_struct_statfs64): New prototypes.
* Makefile.am (libstrace_a_SOURCES): Add fstatfs.c, fstatfs64.c,
statfs.c, and statfs64.c.
(strace_SOURCES): Add fetch_struct_statfs.c, print_statfs.c,
and statfs.h.
* NEWS: Mention this fix.
* tests/fstatfs.c: New file.
* tests/fstatfs64.c: Likewise.
* tests/statfs64.c: Likewise.
* tests/xstatfs.c: Likewise.
* tests/xstatfs64.c: Likewise.
* tests/xstatfsx.c: Likewise.
* tests/fstatfs.test: New test.
* tests/fstatfs64.test: Likewise.
* tests/statfs64.test: Likewise.
* tests/statfs.c: Rewrite using xstatfs.c.
* tests/statfs.test: Update.
* tests/.gitignore: Add fstatfs, fstatfs64, and statfs64.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add  fstatfs.test, fstatfs64.test, and statfs64.test.
(EXTRA_DIST): Add xstatfs.c, xstatfs64.c, and xstatfsx.c.
2016-04-26 01:35:31 +00:00
121e1961d7 tests: add printflags function to libtests
* tests/printflags.c: New file.
* tests/tests.h (printflags): New prototype.
* tests/Makefile.am (libtests_a_SOURCES): Add it.
2016-04-26 00:13:47 +00:00
0e09704e09 Move definition of struct xlat to a separate header file
Define struct xlat in a separate file so that it could be used later by
tests without inclusion of defs.h header file.

* defs.h (struct xlat, XLAT, XLAT_END): Move ...
* xlat.h: ... here.
* Makefile.am (strace_SOURCES): Add xlat.h.
2016-04-26 00:08:16 +00:00
a6acc310d7 alpha: decode osf_statfs64 and osf_fstatfs64 syscalls
* linux/alpha/syscallent.h (osf_statfs64, osf_fstatfs64): Set nargs
and handler.
2016-04-25 23:52:03 +00:00
39e7e1f05d alpha: fix decoding of osf_statfs and osf_fstatfs syscalls
Do not attempt to print struct osf_statfs as if it was the same as
struct statfs.  Since struct osf_statfs has never been decoded properly,
it is probably too late to implement a decoder, so let's just print the
pointer.

* statfs.c [ALPHA] (SYS_FUNC(osf_statfs), SYS_FUNC(osf_fstatfs)): Move ...
* alpha.c: ... here.  Replace printstatfs with printaddr.
2016-04-25 23:52:03 +00:00
f3ac12990d statfs: print f_flags field only when ST_VALID flag is set
* statfs.c (print_statfs_flags): New function.
(printstatfs, printstatfs64, printcompat_statfs64): Use it.
* xlat/statfs_flags.in (ST_VALID): Move to the head of the list.
* tests/statfs.expected: Update.
2016-04-25 10:30:03 +00:00
13c1d0899d tests: add symlink.test
* tests/symlink.c: New file.
* tests/symlink.test: New test.
* tests/.gitignore: Add symlink.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add symlink.test.
2016-04-25 10:24:48 +00:00
506a42f8c3 tests: add rmdir.test
* tests/rmdir.c: New file.
* tests/rmdir.test: New test.
* tests/.gitignore: Add rmdir.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add rmdir.test.
2016-04-25 10:24:12 +00:00
7f05113624 tests: add setdomainname.test
* tests/setdomainname.c: New file.
* tests/setdomainname.test: New test.
* tests/.gitignore: Add setdomainname.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setdomainname.test.
2016-04-25 10:24:12 +00:00
cd61c9f3e4 tests: add sched_rr_get_interval.test
* tests/sched_rr_get_interval.c: New file.
* tests/sched_rr_get_interval.test: New test.
* tests/.gitignore: Add sched_rr_get_interval.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add sched_rr_get_interval.test.
2016-04-25 10:24:12 +00:00
b4a478dbfa statfs: decode f_flags field of struct statfs
* xlat/statfs_flags.in: New file.
* statfs.c: Include "xlat/statfs_flags.h".
(printstatfs) [_STATFS_F_FLAGS]: Print statbuf.f_flags as flags.
(printstatfs64) [_STATFS_F_FLAGS]: Likewise.
(printcompat_statfs64): Likewise.
* tests/statfs.expected: Update.
2016-04-25 01:58:25 +00:00
b587a5a1be statfs: don't quote f_type macro names
* statfs.c (sprintfstype): Don't add double-quotes to fs magic macros.
* tests/statfs.expected: Remove double-quotes.
2016-04-25 01:54:05 +00:00
6c69ed7ac5 tests/shmxt.c: robustify against arch specific issues
Do not treat failed shmat(SHM_RND) as a test failure.
This change partially reverts commit
bea707377d.

* tests/shmxt.c (main): Use SHM_RND in the second shmat call,
do not treat its potential error as a test failure.
2016-04-25 01:54:05 +00:00
e5c88499a3 Rename PRI__s64 to PRI__d64
As PRI__*64 macros mirror PRI*64 macros from inttypes.h, follow the
principle of least astonishment and name these macros the same way.

* defs.h (PRI__s64): Rename to PRI__d64.
2016-04-23 00:07:16 +00:00
3db07f11c8 Fix old_mmap output when mmap arguments are unfetchable
* mem.c (SYS_FUNC(old_mmap)): Use umove_or_printaddr instead of umoven
to fetch mmap arguments, return RVAL_DECODED when umove_or_printaddr
fails.
* tests/old_mmap.c (main): Check it.
2016-04-23 00:07:14 +00:00
cf52778aba aarch64: fix old_mmap output for arm personality
* mem.c (SYS_FUNC(old_mmap)) [AARCH64]: Fetch mmap arguments
as 32-bit integers.
2016-04-22 23:47:46 +00:00
bc724ce0bf Define old_mmap parser only on architectures that use it
* mem.c (SYS_FUNC(old_mmap)): Define only on AARCH64, ARM, I386, X86_64,
X32, M68K, S390, and S390X.
2016-04-22 23:36:26 +00:00
3797d10e82 tests: extend test coverage of mmap syscall
Check decoding of "old mmap" edition of mmap syscall
on those architectures that define it.

* tests/old_mmap.c: New file.
* tests/old_mmap.test: New test.
* tests/.gitignore: Add old_mmap.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add old_mmap.test.
2016-04-22 23:28:23 +00:00
0e6cb1740a tests: extend test coverage of mincore syscall
* tests/mincore.c (print_mincore): New function.
(test_mincore): Use it.  Check mincore with invalid vec address.
Check mincore with length argument not a multiple of the page size.
(main): Check with DEFAULT_STRLEN pages.
2016-04-22 14:14:39 +00:00
a7501f6adb Move parsers of sync_file_range and sync_file_range2 syscalls to libstrace
For each given architecture only one of these two syscalls has a
syscallent entry.  When each parser is placed into a separate file,
moving to libstrace ensures that only one of them that is need
is linked into strace executable.

* sync_file_range.c (SYS_FUNC(sync_file_range2)): Move ...
* sync_file_range2.c: ... here.
* Makefile.am (strace_SOURCES): Move sync_file_range.c ...
(libstrace_a_SOURCES): ... here.  Add sync_file_range2.c.
(strace_SOURCES_c): Add filtered libstrace_a_SOURCES.
2016-04-22 04:34:22 +00:00
a9540e72c7 tests: check decoding of clock_adjtime syscall
* tests/clock_adjtime.c: New file.
* tests/clock_adjtime.test: New test.
* tests/.gitignore: Add clock_adjtime.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add clock_adjtime.test.
2016-04-22 01:13:27 +00:00
fa5e5d9854 tests: do not include <assert.h> unnecessarily
Automatically change tests/*.c files using the following script:

for f in tests/*.c; do
	grep -q '\<assert(' "$f" ||
		sed -i '/# *include *<assert\.h>/d' "$f"
done
2016-04-21 22:05:57 +00:00
96a9ff5746 tests: do not include <errno.h> unnecessarily
Automatically change tests/*.c files using the following script:

for f in tests/*.c; do
	grep -Fv errno.h "$f" |
	grep -Ewq '(si_)?errno|SOCK_FILTER_DENY_SYSCALL' ||
		sed -i '/# *include *<errno\.h>/d' "$f"
done
2016-04-21 22:05:57 +00:00
e5297aeb13 tests/xetpriority.c: print syscall() result using %ld format 2016-04-21 22:05:57 +00:00
8141093cd0 tests/xetpgid.c: print syscall() result using %ld format 2016-04-21 22:05:57 +00:00
556179345b tests/xchownx.c: use errno2name 2016-04-21 22:05:57 +00:00
92288b2ba3 tests/userfaultfd.c: stop using assert 2016-04-21 22:05:56 +00:00
5d8c235110 tests/unlinkat.c: print syscall() result using %ld format 2016-04-21 22:05:56 +00:00
0df647673a tests/umount.c: use errno2name 2016-04-21 22:05:56 +00:00
ae4ba89702 tests/truncate64.c: cleanup
* tests/truncate64.c (main): Use errno2name, stop using assert.
2016-04-21 22:05:56 +00:00
2eec1ce820 tests/truncate.c: cleanup
* tests/truncate.c (main): Use errno2name, stop using assert.
2016-04-21 22:05:56 +00:00
7456b6420b tests/tee.c: stop using assert 2016-04-21 22:05:56 +00:00
86a090120a tests/syslog.c: use errno2name 2016-04-21 22:05:56 +00:00
82dd238b84 tests/sync_file_range2.c: stop using assert 2016-04-21 22:05:56 +00:00
3694b0c5bd tests/sync_file_range.c: stop using assert 2016-04-21 22:05:56 +00:00
5bc585ecc8 tests/symlinkat.c: cleanup 2016-04-21 22:05:56 +00:00
f75e034c84 tests/swap.c: cleanup
* tests/swap.c (error_msg): Remove.
(main): Use errno2name.
2016-04-21 22:05:56 +00:00
f5748b006f tests/splice.c: stop using assert 2016-04-21 22:05:56 +00:00
0b52ac3134 tests/setugid.c: cleanup 2016-04-21 22:05:56 +00:00
60b9187a7c tests/sethostname.c: use errno2name 2016-04-21 22:05:56 +00:00
b255f6e186 tests/setgroups.c: use errno2name
* tests/setgroups.c (errno2str): Remove.
(main): Use errno2name.
2016-04-21 22:05:56 +00:00
4483f628ab tests/seccomp-strict.c: cleanup
* tests/seccomp-strict.c (main): Use errno2name, stop using assert.
2016-04-21 22:05:56 +00:00
14fa74f9aa tests/seccomp-filter.c: cleanup
* tests/seccomp-filter.c (main): Use errno2name, stop using assert.
2016-04-21 22:05:56 +00:00
06c2828ee1 tests/sched_xetscheduler.c: print syscall() result using %ld format 2016-04-21 22:05:56 +00:00
61042d491b tests/sched_xetparam.c: print syscall() result using %ld format 2016-04-21 22:05:56 +00:00
3f470d83de tests/renameat.c: print syscall() result using %ld format 2016-04-21 22:05:56 +00:00
f224909546 tests/rename.c: print syscall() result using %ld format 2016-04-21 22:05:56 +00:00
92e3cca998 tests/readv.c: cleanup 2016-04-21 22:05:56 +00:00
304689e4ec tests/pwritev.c: use errno2name 2016-04-21 22:05:56 +00:00
cf1cfe13be tests/preadv-pwritev.c: cleanup 2016-04-21 22:05:56 +00:00
abde241e68 tests/prctl-seccomp-strict.c: cleanup
* tests/prctl-seccomp-strict.c (main): Use errno2name,
stop using assert.
2016-04-21 22:05:55 +00:00
037ab86e9a tests/openat.c: use errno2name 2016-04-21 22:05:55 +00:00
1e2f5f7733 tests/open.c: use errno2name 2016-04-21 22:05:55 +00:00
84aeea7e29 tests/mlockall.c: cleanup 2016-04-21 22:05:55 +00:00
c0b1d6f37c tests/mlock2.c: stop using assert 2016-04-21 22:05:55 +00:00
d0652a40eb tests/mknod.c: print syscall() result using %ld format 2016-04-21 22:05:55 +00:00
a175bfe445 tests/mkdirat.c: print syscall() result using %ld format 2016-04-21 22:05:55 +00:00
1b511d0fea tests/lseek.c: cleanup
* tests/lseek.c (main): Use errno2name, stop using assert.
2016-04-21 22:05:55 +00:00
cd157776bd tests/llseek.c: cleanup
* tests/llseek.c (main): Use errno2name, stop using assert.
2016-04-21 22:05:55 +00:00
5c62af0753 tests/linkat.c: print syscall() result using %ld format 2016-04-21 22:05:55 +00:00
33e0df7074 tests/iopl.c: use errno2name 2016-04-21 22:05:55 +00:00
c1dbe052f1 tests/ioperm.c: use errno2name 2016-04-21 22:05:55 +00:00
7f68f80f42 tests/getgroups.c: use errno2name
* tests/getgroups.c (errno2str): Remove.
(main): Use errno2name.
2016-04-21 22:05:55 +00:00
337f66e7c7 tests/ftruncate64.c: cleanup
* tests/ftruncate64.c (main): Use errno2name, stop using assert.
2016-04-21 22:05:55 +00:00
a57bc5be7f tests/ftruncate.c: cleanup
* tests/ftruncate.c (main): Use errno2name, stop using assert.
2016-04-21 22:05:55 +00:00
1717c8c06d tests/fsync.c: print syscall() result using %ld format 2016-04-21 22:05:55 +00:00
ca24b94652 tests/flock.c: print syscall() result using %ld format 2016-04-21 22:05:55 +00:00
884471bc9f tests/file_handle.c: use errno2name 2016-04-21 22:05:53 +00:00
02269e5da0 tests/fdatasync.c: print syscall() result using %ld format 2016-04-21 20:52:42 +00:00
3fc6bd96d8 tests/fchownat.c: use errno2name 2016-04-21 20:52:42 +00:00
bf563a9ea3 tests/fchmodat.c: use errno2name 2016-04-21 20:52:42 +00:00
ba93e7b886 tests/fchmod.c: use errno2name 2016-04-21 20:52:42 +00:00
a2633101da tests/faccessat.c: print syscall() result using %ld format 2016-04-21 20:52:42 +00:00
33568cf1be tests/epoll_wait.c: print syscall() result using %ld format 2016-04-21 20:52:42 +00:00
becfc0eb0a tests/epoll_ctl.c: print syscall() result using %ld format 2016-04-21 20:52:42 +00:00
7529683349 tests/epoll_create1.c: cleanup
* tests/epoll_create1.c (main): Use errno2name, stop using assert.
2016-04-21 20:52:42 +00:00
8243175721 tests/epoll_create.c: print syscall() result using %ld format 2016-04-21 20:52:41 +00:00
22f9fa7fd9 tests/dup3.c: print syscall() result using %ld format 2016-04-21 20:52:41 +00:00
65dea4b1e4 tests/dup2.c: print syscall() result using %ld format 2016-04-21 20:52:41 +00:00
89b575d3c5 tests/dup.c: cleanup 2016-04-21 20:52:41 +00:00
b0a647f4d4 tests/creat.c: stop using sys/stat.h 2016-04-21 20:52:41 +00:00
0d8361fc80 tests/copy_file_range.c: stop using assert 2016-04-21 20:52:41 +00:00
adbbc2d288 tests/chroot.c: use errno2name 2016-04-21 20:52:41 +00:00
5327e9c179 tests/aio.c: use errno2name 2016-04-21 20:52:41 +00:00
dd02f09f4b tests: cleanup acct.test
* tests/acct.c (main): Use errno2name, stop using assert,
change sample file name.
* tests/acct.test: Update.
2016-04-21 20:20:42 +00:00
9f6611bb31 tests: use errno2name()
Automatically change tests/*.c files using the following sed regexp:
sed -i 's/errno == E[[:alnum:]]\+ ? "E[[:alnum:]]\+" : "E[[:alnum:]]\+"/errno2name()/g'
2016-04-21 18:16:50 +00:00
57b5f55a2a tests/dup.c: include "tests.h"
This is going to be necessary for the following commit.
2016-04-21 18:16:10 +00:00
ef6b4262bb tests: add getpgrp.test
* tests/getpgrp.c: New file.
* tests/getpgrp.test: New test.
* tests/.gitignore: Add getpgrp.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add getpgrp.test.
2016-04-21 17:37:44 +00:00
f914194fc3 tests: add access.test
* tests/access.c: New file.
* tests/access.test: New test.
* tests/.gitignore: Add access.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add access.test.
2016-04-21 17:37:43 +00:00
e0057a578f tests: add fchdir.test
* tests/fchdir.c: New file.
* tests/fchdir.test: New test.
* tests/.gitignore: Add fchdir.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add fchdir.test.
2016-04-21 17:35:39 +00:00
5c1776fe00 tests: add mkdir.test
* tests/mkdir.c: New file.
* tests/mkdir.test: New test.
* tests/.gitignore: Add mkdir.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add mkdir.test.
2016-04-21 17:34:38 +00:00
8bfe0d5e22 tests: add getsid.test
* tests/getsid.c: New file.
* tests/getsid.test: New test.
* tests/.gitignore: Add getsid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add getsid.test.
2016-04-21 17:31:05 +00:00
2b69fd4c43 tests: add errno2name function to libtests
Add a simple translator of errno to its name, so one could
simply use errno2name() instead of complex expressions like
errno == EINVAL ? "EINVAL" : "EFAULT".

* tests.h (errno2name): New prototype.
* errno2name.c: New file.
* Makefile.am (libtests_a_SOURCES): Add it.
2016-04-21 04:08:55 +03:00
769c98af34 hppa: rename ECANCELLED to ECANCELED
hppa seems to be the only architecture that defines ECANCELLED synonym
for ECANCELED constant, other architectures just define ECANCELED.
Change the way how this constant is printed on hppa to be in line
with other architectures.

* linux/hppa/errnoent.h [253]: Rename ECANCELLED to ECANCELED.
2016-04-20 21:36:46 +00:00
126464566d Remove parser of unimplemented timerfd syscall
timerfd syscall was introduced in v2.6.22-rc1, but in v2.6.25-rc1
it was replaced by timerfd_* syscall family.

* linux/avr32/syscallent.h (timerfd): Fix nargs.
* linux/dummy.h (sys_timerfd): Add stub alias.
* time.c (SYS_FUNC(timerfd)): Remove.
2016-04-20 17:15:05 +00:00
e8a8f6d6e8 tests: workaround kernel bugs in seccomp-strict.test and prctl-seccomp-strict.test
If kernel implementation of strict seccomp mode is buggy, test programs
will be killed by SIGKILL.  This is a known problem at least on
x32 and mips.  Skip affected tests if this is the case.

This change partially revert commit 9c1a72cd3f.

* tests/seccomp-strict.c (main): Remove workaround for x32.
* tests/prctl-seccomp-strict.c: Likewise.
* tests/seccomp-strict.test: Skip the test if the test program
has been killed by SIGKILL.
* tests/prctl-seccomp-strict.test: Likewise.
2016-04-20 14:30:43 +00:00
bea707377d tests/shmxt.c: do not use SHM_RND, it is unreliable
* tests/shmxt.c (main): Do not set SHM_RND flag.
2016-04-20 05:40:58 +00:00
c8cc0f2a87 tests/rt_sigpending.c: fix for systems where _NSIG > 16 * sizeof(long)
* tests/rt_sigsuspend.c (iterate): Do not assume that size will be less
than sizeof(long) on the second iteration.
2016-04-20 04:35:25 +00:00
d424c765f7 prctl-seccomp-strict.test: robustify against unrelated prctl invocations
* tests/prctl-seccomp-strict.test: Filter out PR_GET_* prctl calls.
2016-04-20 01:08:13 +00:00
fdb2a1867e tests: adjust rt_sigpending to older kernels
With linux kernels older than v3.9-rc1, compat rt_sigpending syscall
could fail with EFAULT in cases where on later kernels it succeeds.
Adjust the test to handle both cases properly.

* tests/rt_sigpending.c (iterate): Stop iterations if rt_sigpending
failed with EFAULT.
2016-04-20 01:08:13 +00:00
f73a3a44dd tests: adjust readv/writev and preadv/pwritev tests to older kernels
With linux kernels older than v3.16-rc1, iovec based compat syscalls may
return EINVAL in some cases where on later kernels they return EFAULT.
Adjust tests to handle both cases properly.

* tests/preadv-pwritev.c: Include <errno.h>.
(main): Print either "EINVAL" or "EFAULT" depending on errno.
* tests/pwritev.c: Likewise.
* tests/readv.c: Likewise.
2016-04-20 01:08:13 +00:00
87c0b56a77 tests: remove obsolete non-strict uid tests
Recently added strict tests for uid/gid related syscalls
made old uid tests obsolete.

* tests/uid.awk: Remove.
* tests/uid.c: Remove.
* tests/uid.test: Remove.
* tests/uid16.c: Remove.
* tests/uid16.test: Remove.
* tests/uid32.c: Remove.
* tests/uid32.test: Remove.
* tests/.gitignore: Remove uid, uid16, and uid32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Remove uid.test, uid16.test, and uid32.test.
(EXTRA_DIST): Remove uid.awk.
2016-04-20 01:08:13 +00:00
f096422882 tests: extend test coverage of getuid/getgid family syscalls
Add strict tests for getuid, getuid32, getgid, getgid32, geteuid,
geteuid32, getegid, and getegid32 syscalls.

* tests/getegid.c: New file.
* tests/getegid.test: New test.
* tests/getegid32.c: New file.
* tests/getegid32.test: New test.
* tests/geteuid.c: New file.
* tests/geteuid.test: New test.
* tests/geteuid32.c: New file.
* tests/geteuid32.test: New test.
* tests/getgid.c: New file.
* tests/getgid.test: New test.
* tests/getgid32.c: New file.
* tests/getgid32.test: New test.
* tests/getuid.c: New file.
* tests/getuid.test: New test.
* tests/getuid32.c: New file.
* tests/getuid32.test: New test.
* tests/.gitignore: Add getuid, getuid32, getgid, getgid32, geteuid,
* geteuid32, getegid, and getegid32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add getegid.test, getegid32.test, geteuid.test,
geteuid32.test, getgid.test, getgid32.test, getuid.test,
and getuid32.test.
2016-04-20 01:08:13 +00:00
7f3da2ff4c tests: extend test coverage of getresgid32 syscall
* tests/getresgid32.c: New file.
* tests/getresgid32.test: New test.
* tests/.gitignore: Add getresgid32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add getresgid32.test.
2016-04-20 01:08:13 +00:00
91119e5306 tests: extend test coverage of getresgid syscall
* tests/getresgid.c: New file.
* tests/getresgid.test: New test.
* tests/.gitignore: Add getresgid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add getresgid.test.
2016-04-20 01:08:13 +00:00
dcc6660256 tests: extend test coverage of getresuid32 syscall
* tests/getresuid32.c: New file.
* tests/getresuid32.test: New test.
* tests/.gitignore: Add getresuid32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add getresuid32.test.
2016-04-20 01:08:13 +00:00
fbe1a9ec6e tests: extend test coverage of getresuid syscall
* tests/getresugid.c: New file.
* tests/getresuid.c: New file.
* tests/getresuid.test: New test.
* tests/.gitignore: Add getresuid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add getresuid.test.
(EXTRA_DIST): Add getresugid.c.
2016-04-20 01:08:13 +00:00
bff70d4311 tests: add symlinkat.test
* tests/symlinkat.c: New file.
* tests/symlinkat.test: New test.
* tests/.gitignore: Add symlinkat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add symlinkat.test.
2016-04-20 01:08:13 +00:00
1eb0051663 tests: add iopl.test
* tests/iopl.c: New file.
* tests/iopl.test: New test.
* tests/.gitignore: Add iopl.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add iopl.test.
2016-04-20 01:08:13 +00:00
ef2007eccc mips o32, powerpc, powerpc64: fix decoding of iopl syscall
* linux/mips/syscallent-o32.h (iopl): Fix nargs.
* linux/powerpc/syscallent.h (iopl): Fix nargs and sys_func.
* linux/powerpc64/syscallent.h (iopl): Likewise.
2016-04-20 01:08:13 +00:00
2e069fcc0d tests: add ioperm.test
* tests/ioperm.c: New file.
* tests/ioperm.test: New test.
* tests/.gitignore: Add ioperm.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add ioperm.test.
2016-04-20 01:08:13 +00:00
5e9944df2c Fix corner cases of getgroups and setgroups syscall decoders
* uid.c (print_groups): New function.
(SYS_FUNC(setgroups), SYS_FUNC(getgroups)): Use it.
Print first syscall argument using %u format.
* tests/getgroups.c: New file.
* tests/getgroups.test: New test.
* tests/getgroups32.c: New file.
* tests/getgroups32.test: New test.
* tests/setgroups.c: New file.
* tests/setgroups.test: New test.
* tests/setgroups32.c: New file.
* tests/setgroups32.test: New test.
* tests/.gitignore: Add getgroups, getgroups32, setgroups,
and setgroups32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add getgroups.test, getgroups32.test,
setgroups.test, and setgroups32.test.
2016-04-20 01:08:13 +00:00
ba210af060 Cleanup setfsuid syscall decoder
* uid.c (SYS_FUNC(setfsuid)): Remove redundant check.
2016-04-20 01:08:13 +00:00
f184989593 tests: check decoding of setfsgid32 syscall
* tests/setfsgid32.c: New file.
* tests/setfsgid32.test: New test.
* tests/.gitignore: Add setfsgid32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setfsgid32.test.
2016-04-20 01:08:13 +00:00
fba762db71 tests: check decoding of setfsgid syscall
* tests/setfsugid.c: New file.
* tests/setfsgid.c: New file.
* tests/setfsgid.test: New test.
* tests/.gitignore: Add setfsgid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setfsgid.test.
(EXTRA_DIST): Add setfsugid.c.
2016-04-20 01:08:13 +00:00
2def3d4a04 tests: check decoding of setfsuid32 syscall
* tests/setfsuid32.c: New file.
* tests/setfsuid32.test: New test.
* tests/.gitignore: Add setfsuid32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setfsuid32.test.
2016-04-20 01:08:13 +00:00
281e4578dd tests: check decoding of setfsuid syscall
* tests/setfsugid.c: New file.
* tests/setfsuid.c: New file.
* tests/setfsuid.test: New test.
* tests/.gitignore: Add setfsuid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setfsuid.test.
(EXTRA_DIST): Add setfsugid.c.
2016-04-20 01:08:13 +00:00
fa7c988bd9 tests: extend test coverage of setresgid32 syscall
* tests/setresgid32.c: New file.
* tests/setresgid32.test: New test.
* tests/.gitignore: Add setresgid32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setresgid32.test.
2016-04-20 01:08:13 +00:00
4f6d95dd58 tests: extend test coverage of setresgid syscall
* tests/setresgid.c: New file.
* tests/setresgid.test: New test.
* tests/.gitignore: Add setresgid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setresgid.test.
2016-04-20 01:08:12 +00:00
2b42d8e32f tests: extend test coverage of setresuid32 syscall
* tests/setresuid32.c: New file.
* tests/setresuid32.test: New test.
* tests/.gitignore: Add setresuid32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setresuid32.test.
2016-04-20 01:08:12 +00:00
0eac88a00a tests: extend test coverage of setresuid syscall
* tests/setresugid.c: New file.
* tests/setresuid.c: New file.
* tests/setresuid.test: New test.
* tests/.gitignore: Add setresuid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setresuid.test.
(EXTRA_DIST): Add setresugid.c.
2016-04-20 01:08:12 +00:00
7d7dfbede8 tests: extend test coverage of setregid32 syscall
* tests/setregid32.c: New file.
* tests/setregid32.test: New test.
* tests/.gitignore: Add setregid32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setregid32.test.
2016-04-20 01:08:12 +00:00
28d02ea6f3 tests: extend test coverage of setregid syscall
* tests/setregid.c: New file.
* tests/setregid.test: New test.
* tests/.gitignore: Add setregid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setregid.test.
2016-04-20 01:08:12 +00:00
619a96a295 tests: extend test coverage of setreuid32 syscall
* tests/setreuid32.c: New file.
* tests/setreuid32.test: New test.
* tests/.gitignore: Add setreuid32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setreuid32.test.
2016-04-20 01:08:12 +00:00
e6d8473850 tests: extend test coverage of setreuid syscall
* tests/setreugid.c: New file.
* tests/setreuid.c: New file.
* tests/setreuid.test: New test.
* tests/.gitignore: Add setreuid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setreuid.test.
(EXTRA_DIST): Add setreugid.c.
2016-04-20 01:08:12 +00:00
6511b2df01 tests: extend test coverage of setgid32 syscall
* tests/setgid32.c: New file.
* tests/setgid32.test: New test.
* tests/.gitignore: Add setgid32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setgid32.test.
2016-04-20 01:08:12 +00:00
cf273016fe tests: extend test coverage of setgid syscall
* tests/setgid.c: New file.
* tests/setgid.test: New test.
* tests/.gitignore: Add setgid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setgid.test.
2016-04-20 01:08:12 +00:00
8f0e41afb7 tests: extend test coverage of setuid32 syscall
* tests/setuid32.c: New file.
* tests/setuid32.test: New test.
* tests/.gitignore: Add setuid32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setuid32.test.
2016-04-20 01:08:12 +00:00
aa399261ac tests: extend test coverage of setuid syscall
* tests/setugid.c: New file.
* tests/setuid.c: New file.
* tests/setuid.test: New test.
* tests/.gitignore: Add setuid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add setuid.test.
(EXTRA_DIST): Add setugid.c.
2016-04-20 01:08:12 +00:00
39a33b171b tests: add shmxt.test
* tests/shmxt.c: New file.
* tests/shmxt.test: New test.
* tests/.gitignore: Add shmxt.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add shmxt.test.
2016-04-20 01:08:12 +00:00
10c6c3f7b5 alpha: fix decoding of shmat syscall
On alpha, shmat syscall is known as osf_shmat.

* linux/alpha/syscallent.h (osf_shmat): Fix sys_flags and sys_func.
2016-04-20 01:08:12 +00:00
f22db4e753 tests: add semop.test
* tests/semop.c: New file.
* tests/semop.test: New test.
* tests/.gitignore: Add semop.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add semop.test.
2016-04-20 00:11:27 +00:00
7d23d33933 prctl-seccomp-filter-v.test: robustify against unrelated prctl invocations
* tests/prctl-seccomp-filter-v.test: Filter out PR_GET_* prctl calls.

Reported-by: Steve McIntyre <steve@einval.com>
2016-04-18 01:10:44 +00:00
bcdd2041fa tests/pselect6.c: fix potential output mismatch
* tests/pselect6.c (main): In the last case of printing pselect6
syscall, print the last argument the same way as in other cases.

Reported-by: Steve McIntyre <steve@einval.com>
2016-04-18 01:10:44 +00:00
96492b2acd tests: check decoding of fchown32 syscall
* tests/fchown32.c: New file.
* tests/fchown32.test: New test.
* tests/.gitignore: Add fchown32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add fchown32.test.
2016-04-18 01:10:44 +00:00
e6828b1102 tests: check decoding of fchown syscall
* tests/fchown.c: New file.
* tests/fchown.test: New test.
* tests/.gitignore: Add fchown.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add fchown.test.
2016-04-18 01:10:44 +00:00
11f98f21b7 tests: check decoding of lchown32 syscall
* tests/lchown32.c: New file.
* tests/lchown32.test: New test.
* tests/.gitignore: Add lchown32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add lchown32.test.
2016-04-18 01:10:44 +00:00
408420f51f tests: check decoding of lchown syscall
* tests/lchown.c: New file.
* tests/lchown.test: New test.
* tests/.gitignore: Add lchown.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add lchown.test.
2016-04-18 01:10:43 +00:00
f559a876f8 tests: check decoding of chown32 syscall
* tests/chown32.c: New file.
* tests/chown32.test: New test.
* tests/.gitignore: Add chown32.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add chown32.test.
2016-04-18 01:10:43 +00:00
4ccdbd698e tests: check decoding of chown syscall
* tests/chown.c: New file.
* tests/chown.test: New test.
* tests/xchownx.c: New file.
* tests/.gitignore: Add chown.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add chown.test.
(EXTRA_DIST): Add xchownx.c.
2016-04-18 01:10:43 +00:00
a99bcbf916 Fix decoding of 16-bit uid_t/git_t
* uid.c (printuid): Always cast value to uid_t.
2016-04-18 01:10:43 +00:00
c1f1cc1b4c tests: move kernel uid overflow check to libtests
This code used in two different places, so move it to the library.

* tests/overflowuid.c: New file.
* tests/Makefile.am (libtests_a_SOURCES): Add it.
* tests/tests.h (check_overflowuid, check_overflowgid): New prototypes.
* tests/uid.c (main): Use check_overflowuid.
* tests/uid16.c (main): Likewise.
2016-04-18 01:10:41 +00:00
9c1a72cd3f tests: skip seccomp-strict.test and prctl-seccomp-strict.test on x32
As x86_64 kernel does not support x32 syscall numbers in
SECCOMP_MODE_STRICT, skip affected tests on x32.

* tests/seccomp-strict.c (main) [__x86_64__ && __ILP32__]: Bail out
using error_msg_and_skip.
* tests/prctl-seccomp-strict.c: Likewise.
2016-04-12 04:39:25 +00:00
c2523e0d9c tests: add seccomp-filter.test
* tests/seccomp-filter.c: New file.
* tests/seccomp-filter.test: New test.
* tests/.gitignore: Add seccomp-filter.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add seccomp-filter.test.
2016-04-12 00:20:03 +00:00
6ba947f36e seccomp: fix decoding of sock_fprog and sock_filter structures
Always print struct sock_fprog.len.
Fix printing of unfetchable elements in sock_filter array.
Fix printing of large sock_filter arrays.

* seccomp.c (decode_fprog): Rewrite into decode_seccomp_fprog and
print_seccomp_fprog.
(print_seccomp_filter): Replace decode_fprog with print_seccomp_fprog.
* tests/prctl-seccomp-filter-v.c (main): Update.
* tests/seccomp-filter-v.c: New file.
* tests/seccomp-filter-v.test: New test.
* tests/.gitignore: Add seccomp-filter-v.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add seccomp-filter-v.test.
2016-04-12 00:05:43 +00:00
3ea6a59802 seccomp: print SECCOMP_* and BPF_* constants in a more compact way
* seccomp.c (decode_bpf_code, decode_bpf_stmt): Replace " | " with "|".
* tests/prctl-seccomp-filter-v.c: Update.
2016-04-11 20:25:01 +00:00
181806136e tests: rename seccomp.test to prctl-seccomp-filter-v.test
* tests/.gitignore: Replace seccomp with prctl-seccomp-filter-v.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Replace seccomp.test with prctl-seccomp-filter-v.test.
* tests/seccomp.c: Rename to tests/prctl-seccomp-filter-v.c.
* tests/seccomp.test: Rename to tests/prctl-seccomp-filter-v.test.
2016-04-11 15:16:30 +00:00
b19945bebc tests: add seccomp-strict.test
* tests/seccomp-strict.c: New file.
* tests/seccomp-strict.test: New test.
* tests/.gitignore: Add seccomp-strict.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add seccomp-strict.test.
2016-04-11 15:09:09 +00:00
c1aa737325 tests: add prctl-seccomp-strict.test
* tests/prctl-seccomp-strict.c: New file.
* tests/prctl-seccomp-strict.test: New test.
* tests/.gitignore: Add prctl-seccomp-strict.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add prctl-seccomp-strict.test.
2016-04-11 15:06:28 +00:00
d9e4ff7fb3 tests: bring lists back to the sorted order 2016-04-11 15:04:08 +00:00
7a06960ff4 tests/epoll_create1.c: extend for the case of ENOSYS
* epoll_create1.c: Make the test work in case of epoll_create1
returning ENOSYS.
2016-04-10 23:05:18 +00:00
2399a6031c tests/epoll_ctl.c: extend epoll_ctl coverage
* tests/epoll_ctl.c (main): Check EPOLL_CTL_DEL decoding.  Check
decoding of long int descriptors and NULL struct epoll_event pointer.
2016-04-10 22:38:00 +00:00
cb6f997114 tests: add mlockall.test
* tests/mlockall.c: New file.
* tests/mlockall.test: New test.
* tests/.gitignore: Add mlockall.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add mlockall.test.
2016-04-09 23:34:18 +00:00
c75e2c2e42 tests: add epoll_wait.test
* tests/epoll_wait.c: New file.
* tests/epoll_wait.test: New test.
* tests/.gitignore: Add epoll_wait.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add epoll_wait.test.
2016-04-08 07:59:16 +00:00
258a22519f tests: add epoll_ctl.test
* tests/epoll_ctl.c: New file.
* tests/epoll_ctl.test: New test.
* tests/.gitignore: Add epoll_ctl.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add epoll_ctl.test.
2016-04-08 07:59:15 +00:00
bbdd23c8ed tests: add epoll_create.test
* tests/epoll_create.c: New file.
* tests/epoll_create.test: New test.
* tests/.gitignore: Add epoll_create.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add epoll_create.test.
2016-04-08 07:59:14 +00:00
17f4b45164 tests/pread64-pwrite64.c: minor cleanup
* tests/pread64-pwrite64.c: Do not include <sys/uio.h>.
2016-04-08 02:16:28 +00:00
fcb94cded0 Fix decoding of swapon flags
* swapon.c (SYS_FUNC(swapon)): Print priority regardless
of SWAP_FLAG_PREFER flag being set.
* tests/swap.c (error_msg): Handle EINVAL.
(main): Check decoding of swapon flags.
2016-04-07 01:15:58 +00:00
f2f91c0933 tests/unlinkat.c: check AT_* decoding
* tests/unlinkat.c (main): Check decoding of AT_* constants.
2016-04-07 00:39:18 +00:00
867c1cdf19 tests/linkat.c: check AT_* decoding
* tests/linkat.c (main): Check decoding of AT_* constants.
2016-04-07 00:31:44 +00:00
612368b59e Improve decoding of Android's PR_SET_VMA prctl
Before:

  prctl(0x53564d41 /* PR_??? */, 0, 0x7f8ab53000, 4096,
        "atexit handlers") = 0

After:

  prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7fa8cbd000, 4096,
        "atexit handlers") = 0

* prctl.c (SYS_FUNC(prctl)) [__ANDROID__]: Do not define PR_SET_VMA.
* Hard-code PR_SET_VMA_ANON_NAME, the only current sub-option.
* xlat/prctl_options.in: Add PR_SET_VMA.
2016-04-06 21:41:36 +00:00
c4a30f15ef tests: add mkdirat.test
* tests/mkdirat.c: New file.
* tests/mkdirat.test: New test.
* tests/.gitignore: Add mkdirat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add mkdirat.test.
2016-04-06 06:18:51 +00:00
93faa4cc88 tests: add swap.test
* tests/swap.c: New file.
* tests/swap.test: New test.
* tests/.gitignore: Add swap.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add swap.test.
2016-04-06 06:18:50 +00:00
41cd657930 tests: add unlinkat.test
* tests/unlinkat.c: New file.
* tests/unlinkat.test: New test.
* tests/.gitignore: Add unlinkat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add unlinkat.test.
2016-04-06 06:18:49 +00:00
7a158a18f8 tests: add linkat.test
* tests/linkat.c: New file.
* tests/linkat.test: New test.
* tests/.gitignore: Add linkat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add linkat.test.
2016-04-06 06:18:48 +00:00
5b2d257839 tests: add sync_file_range.test and sync_file_range2.test
* configure.ac (AC_CHECK_FUNCS): Add sync_file_range.
* tests/sync_file_range.c: New file.
* tests/sync_file_range2.c: Likewise.
* tests/sync_file_range.test: New test.
* tests/sync_file_range2.test: Likewise.
* tests/.gitignore: Add sync_file_range and sync_file_range2.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add sync_file_range.test and sync_file_range2.test.
2016-04-06 00:02:08 +00:00
27bff90e86 Add default values for SYNC_FILE_RANGE_* constants
* xlat/sync_file_range_flags.in: Add default values.
2016-04-05 23:30:05 +00:00
6f072d5e87 Fix sync_file_range2 output
Before:

  sync_file_range2(3SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE|
    SYNC_FILE_RANGE_WAIT_AFTER|0xfffffff8, 0, 0, )

After:

  sync_file_range2(3, SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE|
    SYNC_FILE_RANGE_WAIT_AFTER|0xfffffff8, 0, 0)

* sync_file_range.c (SYS_FUNC(sync_file_range2)): Output the ", "
in the right place.
2016-04-05 19:10:16 +00:00
71fe62e6b7 Replace PF_* constants with AF_*
AF_* constants appear to be more standardized, and in practice there's
always a one to one relationship between AF_* and PF_*, so let's
use AF_* instead of PF_*.

* xlat/domains.in: Remove.
* net.c: Do not define PF_UNSPEC.  Stop including "xlat/domains.h".
Replace PF_* with AF_*.  Replace domains with addrfams.
* tests/inet-cmsg.c: Replace PF_INET with AF_INET.
* tests/net-yy-inet.c: Likewise.
* tests/netlink_inet_diag.c: Likewise.
* tests/net-accept-connect.c: Replace PF_LOCAL with AF_LOCAL.
* tests/net-y-unix.c: Likewise.
* tests/net-yy-unix.c: Likewise.
* tests/netlink_unix_diag.c: Likewise.
* tests/net.expected: Replace PF_ with AF_.
2016-04-04 01:35:28 +00:00
2aa9b32d81 tests: add read-write.test
* tests/read-write.c: New file.
* tests/read-write.test: New test.
* tests/.gitignore: Add read-write.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add read-write.test.
2016-04-03 16:37:43 +00:00
7b5d8f98fc tests/pread64-pwrite64.test: extend dumpio coverage
* tests/pread64-pwrite64.c (dump_str, print_hex, test_dump):
New functions.
(main): Use them to test dumping of various data.
* tests/pread64-pwrite64.test: Update.
2016-04-02 18:27:44 +00:00
0de582907a tests: add hexdump_memdup function to libtests
* tests/hexdump_strdup.c (hexdump_memdup): New function.
(hexdump_strdup): Use it.
* tests/tests.h (hexdump_memdup): New prototype.
2016-04-02 18:24:36 +00:00
35e97a78c7 tests: add fchownat.test
* tests/fchownat.c: New file.
* tests/fchownat.test: New test.
* tests/.gitignore: Add fchownat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add fchownat.test.
2016-04-02 14:07:02 +00:00
baeff232ce tests: add fchmodat.test
* tests/fchmodat.c: New file.
* tests/fchmodat.test: New test.
* tests/.gitignore: Add fchmodat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add fchmodat.test.
2016-04-02 13:13:16 +00:00
9f3a6af09a Fix printing of negative offsets in pread64 and pwrite64 syscalls
* io.c (SYS_FUNC(pread), SYS_FUNC(pwrite)): Print offset
using %lld format string.
* tests/pread64-pwrite64.c: New file.
* tests/pread64-pwrite64.test: New test.
* tests/.gitignore: Add pread64-pwrite64.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(pread64_pwrite64_CPPFLAGS): New variable.
(DECODER_TESTS): Add pread64-pwrite64.
2016-04-02 01:08:24 +00:00
69f1bf37fd tests/hexdump_strdup.c: add support for longer strings
* tests/hexdump_strdup.c (hexdump_strdup): Output extra space character
before hexdumping of the 9th symbol.
2016-04-02 01:05:25 +00:00
fe0d07a1bc tests/preadv-pwritev.c: fix typo in error diagnostics
* tests/preadv-pwritev.c (main): Fix typo in error message.
2016-04-02 01:04:57 +00:00
d82b0d8ceb tests: add chroot.test
* tests/chroot.c: New file.
* tests/chroot.test: New test.
* tests/.gitignore: Add chroot.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add chroot.test.
2016-04-01 23:34:33 +00:00
4c4ab0fe82 tests: add fdatasync.test
* tests/fdatasync.c: New file.
* tests/fdatasync.test: New test.
* tests/.gitignore: Add fdatasync.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add fdatasync.test.
2016-04-01 23:34:33 +00:00
16c078ea99 tests: add fsync.test
* tests/fsync.c: New file.
* tests/fsync.test: New test.
* tests/.gitignore: Add fsync.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add fsync.test.
2016-04-01 23:34:33 +00:00
a067b8d3b0 tests: add sethostname.test
* tests/sethostname.c: New file.
* tests/sethostname.test: New test.
* tests/.gitignore: Add sethostname.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add sethostname.test.
2016-04-01 23:34:33 +00:00
3ae8690d8e Consistently handle unsigned arguments of mmap* and remap_file_pages
Explicitly declare first 4 arguments of mmap* and all remap_file_pages
arguments as unsigned to avoid potential sign extension issues.

* mem.c (print_mmap, SYS_FUNC(remap_file_pages)): Assign syscall
arguments to local variables of appropriate types.
2016-04-01 15:31:23 +00:00
f40ea796ba Consistently handle 2nd and 3rd arguments of [gs]etsockopt as unsigned
The second (level) and third (optname) arguments of getsockopt and
setsockopt syscalls are enums, so treat them consistently as enums:
use "unsigned int" type to avoid potential sign extension issues.

* net.c (print_sockopt_fd_level_name, print_getsockopt,
print_setsockopt): Change type of "level" and "name" arguments
from "int" to "unsigned int".
2016-04-01 01:03:20 +00:00
b0d23cc2c0 Add sentinel attribute to printxvals
* gcc_compat.h (ATTRIBUTE_SENTINEL): New macro.
* defs.h (printxvals): Add ATTRIBUTE_SENTINEL.
2016-04-01 00:52:01 +00:00
ccdc82a57d Cleanup parser of ptrace syscall
* process.c (print_user_offset_addr): New function for printing offset
address in the tracee's USER area.
(SYS_FUNC(ptrace)): Assign syscall arguments to local variables with
appropriate types.  Print pid argument as int.  Use switch statement
in the code that handles address argument.  Use print_user_offset_addr
to print address in PTRACE_PEEKUSER and PTRACE_POKEUSER requests.
2016-04-01 00:28:33 +00:00
1f3482beda Define PRI__[uxs]64 macros to print __s64 and __u64 values
Rather than cast every __u64 or __s64 before printing,
define printing helpers for those types directly.

* defs.h (PRI__s64, PRI__u64, PRI__x64): New macros.
2016-03-31 04:34:17 +00:00
3f6ebceb50 Implement dumping of preadv and pwritev syscalls
* syscall.c (dumpio): Add SEN_preadv and SEN_pwritev.
* NEWS: Mention this.
* tests/preadv-pwritev.c: New file.
* tests/preadv-pwritev.test: New test.
* tests/.gitignore: Add preadv-pwritev.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(preadv_pwritev_CPPFLAGS): New variable.
(DECODER_TESTS): Add preadv-pwritev.
2016-03-31 00:01:58 +00:00
c98ab8805b Fix decoding of preadv syscall in case of short read
* io.c (SYS_FUNC(preadv)): Call tprint_iov_upto instead
of tprint_iov and specify syscall return value as a data size limit.
* NEWS: Mention it.
* tests/preadv.c (main): Add a test case for preadv short read.
2016-03-30 18:04:00 +00:00
d461151f23 Fix printing of negative offsets in preadv and pwritev syscalls
* io.c (print_llu_from_low_high_val): Rename to
print_lld_from_low_high_val, all callers changed.
Print value as a signed integer.
* tests/preadv.c: New file.
* tests/preadv.test: New test.
* tests/pwritev.c: New file.
* tests/pwritev.test: New test.
* tests/.gitignore: Add preadv and pwritev.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(preadv_CPPFLAGS, pwritev_CPPFLAGS): New variables.
(DECODER_TESTS): Add preadv.test and pwritev.test.
2016-03-30 03:54:21 +00:00
0a9d1947a7 Fix printing of unreadable struct iovec
* io.c (tprint_iov_upto): If the first element of iovec array is
unreadable, print its address without array markup.
* tests/readv.c (main): Check it.
2016-03-30 02:22:58 +00:00
5dde5671bd tests: factor out a part common to many simply organized test scripts
* tests/init.sh (run_strace_match_diff): New function.
* tests/acct.test: Rewrite using run_strace_match_diff.
* tests/aio.test: Likewise.
* tests/alarm.test: Likewise.
* tests/chmod.test: Likewise.
* tests/clock_nanosleep.test: Likewise.
* tests/clock_xettime.test: Likewise.
* tests/copy_file_range.test: Likewise.
* tests/creat.test: Likewise.
* tests/dup.test: Likewise.
* tests/dup2.test: Likewise.
* tests/dup3.test: Likewise.
* tests/epoll_create1.test: Likewise.
* tests/execveat-v.test: Likewise.
* tests/execveat.test: Likewise.
* tests/fchmod.test: Likewise.
* tests/fcntl.test: Likewise.
* tests/file_handle.test: Likewise.
* tests/flock.test: Likewise.
* tests/fork-f.test: Likewise.
* tests/ftruncate.test: Likewise.
* tests/ftruncate64.test: Likewise.
* tests/getcwd.test: Likewise.
* tests/getdents.test: Likewise.
* tests/getdents64.test: Likewise.
* tests/getrandom.test: Likewise.
* tests/getrusage.test: Likewise.
* tests/getxxid.test: Likewise.
* tests/inet-cmsg.test: Likewise.
* tests/init.sh: Likewise.
* tests/membarrier.test: Likewise.
* tests/mincore.test: Likewise.
* tests/mknod.test: Likewise.
* tests/mlock2.test: Likewise.
* tests/mmsg.test: Likewise.
* tests/nanosleep.test: Likewise.
* tests/open.test: Likewise.
* tests/openat.test: Likewise.
* tests/pselect6.test: Likewise.
* tests/readdir.test: Likewise.
* tests/readlink.test: Likewise.
* tests/readv.test: Likewise.
* tests/recvmsg.test: Likewise.
* tests/rename.test: Likewise.
* tests/renameat.test: Likewise.
* tests/rt_sigpending.test: Likewise.
* tests/rt_sigprocmask.test: Likewise.
* tests/rt_sigqueueinfo.test: Likewise.
* tests/rt_sigsuspend.test: Likewise.
* tests/rt_sigtimedwait.test: Likewise.
* tests/rt_tgsigqueueinfo.test: Likewise.
* tests/sched_get_priority_mxx.test: Likewise.
* tests/sched_xetaffinity.test: Likewise.
* tests/sched_xetparam.test: Likewise.
* tests/sched_xetscheduler.test: Likewise.
* tests/seccomp.test: Likewise.
* tests/select.test: Likewise.
* tests/sendfile.test: Likewise.
* tests/sendfile64.test: Likewise.
* tests/splice.test: Likewise.
* tests/statx.sh: Likewise.
* tests/sysinfo.test: Likewise.
* tests/syslog.test: Likewise.
* tests/tee.test: Likewise.
* tests/time.test: Likewise.
* tests/timer_create.test: Likewise.
* tests/timer_xettime.test: Likewise.
* tests/timerfd_xettime.test: Likewise.
* tests/times-fail.test: Likewise.
* tests/times.test: Likewise.
* tests/truncate.test: Likewise.
* tests/truncate64.test: Likewise.
* tests/umask.test: Likewise.
* tests/umount.test: Likewise.
* tests/umount2.test: Likewise.
* tests/userfaultfd.test: Likewise.
* tests/vmsplice.test: Likewise.
* tests/xet_robust_list.test: Likewise.
* tests/xetitimer.test: Likewise.
* tests/xetpgid.test: Likewise.
* tests/xetpriority.test: Likewise.
* tests/xettimeofday.test: Likewise.
2016-03-30 00:16:24 +00:00
579a4aae8a tests: introduce $NAME
* tests/init.sh (NAME): New variable, defined to ${ME_%.test}.
(run_prog, match_awk, match_diff, match_grep): Replace ${ME_%.test}
with $NAME.
* tests/fcntl.test: Likewise.
* tests/fstat.test: Likewise.
* tests/mmap.test: Likewise.
* tests/net-y-unix.test: Likewise.
* tests/net-yy-inet.test: Likewise.
* tests/net-yy-unix.test: Likewise.
* tests/open.test: Likewise.
* tests/openat.test: Likewise.
* tests/poll.test: Likewise.
* tests/ppoll.test: Likewise.
* tests/readlink.test: Likewise.
* tests/select.test: Likewise.
* tests/statx.sh: Likewise.
* tests/uname.test: Likewise.
2016-03-30 00:13:56 +00:00
2e8a7871ab tests: move definitions of $OUT and $ERR to init.sh
As virtually every test defines either one or both of OUT and ERR
variables and these definitions are exactly the same, move definitions
of these variables from individual tests to init.sh.

* tests/init.sh (OUT, ERR): New variables.
* tests/ipc.sh: Remove initialization of OUT variable.
* tests/statx.sh: Likewise.
* tests/*.test: Remove initialization of OUT and ERR variables.
2016-03-30 00:13:37 +00:00
a990e8c671 tests: simplify sendfile.test and sendfile64.test
Use the executable itself for input by default.

* tests/sendfile.c (main): Use av[0] instead of av[1] for input.
* tests/sendfile64.c (main): Likewise.
* tests/sendfile.test: Invoke run_prog without arguments.
* tests/sendfile64.test: Likewise.
2016-03-29 17:01:02 +00:00
1e7dfc38fd open.test, openat.test: lift /proc requirement
While -P option needs /proc to match descriptors, it does not use
/proc to match pathnames.  As these tests do not need descriptor
match, the /proc requirement can be safely lifted.

* tests/open.test: Lift /proc/self/fd/ requirement.
* tests/openat.test: Likewise.
2016-03-29 03:33:00 +00:00
cca2e53c4a quotactl: add decoding of Q_GETNEXTQUOTA and Q_XGETNEXTQUOTA
* quota.c (if_nextdqblk): New structure.
(decode_cmd_data): Handle Q_GETNEXTQUOTA and Q_XGETNEXTQUOTA.
2016-03-29 01:15:24 +00:00
4ce6b5e0e8 Update Q_* constants
* xlat/quotacmds.in: Add Q_GETNEXTQUOTA and Q_XGETNEXTQUOTA introduced
by linux kernel commits v4.6-rc1~65^2~9^2~5 and v4.6-rc1~65^2~9^2~6.
2016-03-29 00:51:28 +00:00
c4d67d4141 Update CLONE_* constants
* xlat/clone_flags.in: Rename CLONE_STOPPED to CLONE_NEWCGROUP.
The former was removed by linux kernel commit v2.6.38-rc1~217.
The latter was introduced by linux kernel commit v4.6-rc1~67^2~8.
2016-03-29 00:51:28 +00:00
54cc3e1d21 Update BPF_MAP_TYPE_* constants
* xlat/bpf_map_types.in: Add BPF_MAP_TYPE_PERCPU_HASH,
BPF_MAP_TYPE_PERCPU_ARRAY, and BPF_MAP_TYPE_STACK_TRACE introduced by
linux kernel commits v4.6-rc1~91^2~326^2~5, v4.6-rc1~91^2~326^2~4, and
v4.6-rc1~91^2~212^2~1, respectively.
2016-03-29 00:28:11 +00:00
ce515ddda4 Update SO_* constants
* xlat/sockoptions.in: Add SO_CNX_ADVICE introduced by linux kernel
commit v4.6-rc1~91^2~176.
2016-03-29 00:20:37 +00:00
ebd1124bce Update SEGV_* constants
* xlat/sigsegv_codes.in: Add SEGV_PKUERR introduced by linux kernel
commit v4.6-rc1~68^2~23.
2016-03-29 00:17:19 +00:00
dbc68b7034 avr32: wire up copy_file_range syscall
* linux/avr32/syscallent.h [325]: Add copy_file_range entry.
2016-03-29 00:01:07 +00:00
d2029cc4a1 tests/uname.test: check abbreviated output, use print_quoted_string
* tests/uname.c (main): Use print_quoted_string to print
utsname members.  Add abbrev check.
* tests/uname.test: Add abbrev check.
2016-03-28 23:25:30 +00:00
90406df134 faccessat.test: robustify against libcs invoking faccessat syscall on their own
* tests/faccessat.c (TMP_FILE): Rename to sample, change its value
to "faccessat.sample".
* tests/faccessat.test: Rewrite using openat.test.
2016-03-28 00:16:17 +00:00
347a5d45ec openat.test: robustify against libcs invoking openat syscall on their own
* tests/openat.c (main): Rename fname to sample, change its value
to "openat.sample".
* tests/openat.test: Use -P option to filter out openat syscalls
made by libc and dynamic linker.
2016-03-28 00:16:02 +00:00
f09a474877 tests: add open.test
* tests/open.c: New file.
* tests/open.test: New test.
* tests/.gitignore: Add open.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add open.test.
2016-03-28 00:15:15 +00:00
e17f28dce0 Update generic ioctl entries from linux 4.5
* linux/64/ioctls_inc.h: Update from linux v4.5 using ioctls_gen.sh.
* linux/32/ioctls_inc_align32.h: Likewise.
* linux/32/ioctls_inc_align64.h: Likewise.
* NEWS: Mention this.
2016-03-27 00:03:27 +00:00
e7794ae36c maint: update for linux 4.5
* maint/ioctls_sym.sh: Update workarounds for drm/*_drm.h files.
Add workarounds for xen/gntdev.h and net/nfc/nci_core.h files.
Update path of saa6588.h and exynos-fimc.h files.
2016-03-26 23:37:18 +00:00
9d91928320 Fix decoding of device numbers in mknod and mknodat syscalls
* mknod.c (decode_mknod): Treat device number argument as unsigned int.
* tests/mknod.c: Include <sys/sysmacros.h> or <sys/mkdev.h>
for definition of makedev macro.
(main): Add a check for a character special file.
2016-03-25 23:48:48 +00:00
b0e507f39d sparc64: fix decoding of mknod and mknodat syscalls for sparc personality
Remove remnants of solaris personality support in mknod parser
that resulted to sparc personality being decoded as old solaris
personality.  This complements commit v4.10-45-gdf4dd8b and fixes
commit v4.10-46-g588a90f.

* mknod.c (decode_mknod) [SPARC || SPARC64]: Remove.
2016-03-25 23:48:48 +00:00
6598026d6a tests: add openat.test
* tests/openat.c: New file.
* tests/openat.test: New test.
* tests/.gitignore: Add openat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add openat.test.
2016-03-25 19:40:12 +00:00
896479de76 tests: add renameat.test
* tests/renameat.c: New file.
* tests/renameat.test: New test.
* tests/.gitignore: Add renameat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add renameat.test.
2016-03-25 09:47:16 +00:00
e2975b61b3 tests: add faccessat.test
* tests/faccessat.c: New file.
* tests/faccessat.test: New test.
* tests/.gitignore: Add faccessat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add faccessat.test.
2016-03-25 09:47:15 +00:00
8346e63e43 tests: add creat.test
* tests/creat.c: New file.
* tests/creat.test: New test.
* tests/.gitignore: Add creat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add creat.test.
2016-03-25 09:47:14 +00:00
0ebe67b780 tests: add mknod.test
* tests/mknod.c: New file.
* tests/mknod.test: New test.
* tests/.gitignore: Add mknod.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add mknod.test.
2016-03-25 09:47:13 +00:00
9a88371122 tests: add syslog.test
* tests/syslog.c: New file.
* tests/syslog.test: New test.
* tests/.gitignore: Add syslog.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add syslog.test.
2016-03-25 09:46:19 +00:00
c4e36dc14e tests/scm_rights-fd.test: fix pathname regex
Pathname containing >, }, or non-printable characters was resulting
in failing of the test.

* tests/scm_rights-fd.test: Fix pathname regex and simplify things.
2016-03-23 19:13:13 +00:00
e10ab4cdbc tests: add strace-r.test
* tests/strace-r.expected: New file.
* tests/strace-r.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
(EXTRA_DIST): Add strace-r.expected.
2016-03-24 01:27:03 +00:00
534a39292a tests: add strace-ttt.test
* tests/strace-ttt.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
2016-03-24 01:10:02 +00:00
e4d110df88 tests: add strace-tt.test
* tests/strace-tt.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
2016-03-24 01:03:31 +00:00
ac2c43e8e9 tests: add strace-t.test
* tests/strace-t.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
2016-03-24 00:59:32 +00:00
a08d03f08d tests: add strace-T.test
* tests/strace-T.expected: New file.
* tests/strace-T.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
(EXTRA_DIST): Add strace-T.expected.
2016-03-24 00:31:23 +00:00
f7f7e601c3 tests: split out tests of specific decoders
Split TESTS into three groups: tests of specific decoders, libunwind
tests, and all other tests.

* tests/Makefile.am (TESTS): Move attach-f-p.test, attach-p-cmd.test,
bexecve.test, count-f.test, count.test, detach-running.test,
detach-sleeping.test, detach-stopped.test, dumpio.test,
filter-unavailable.test, fork-f.test, ksysent.test, opipe.test,
pc.test, qual_syscall.test, redirect.test, restart_syscall.test,
strace-f.test, and vfork-f.test to MISC_TESTS.
Move remaining tests except $(LIBUNWIND_TESTS) to DECODER_TESTS.
Add $(DECODER_TESTS) and $(MISC_TESTS).
2016-03-23 23:07:02 +00:00
39ab120626 tests: add getcwd.test
* tests/getcwd.c: New file.
* tests/getcwd.test: New test.
* tests/.gitignore: Add getcwd.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add getcwd.test.
2016-03-23 13:38:35 +00:00
17654da621 tests: add print_quoted_string function to libtests
* tests/tests.h (print_quoted_string): New prototype.
* tests/print_quoted_string.c: New file.
* tests/Makefile.am (libtests_a_SOURCES): Add it.
2016-03-23 13:34:15 +00:00
032a9a4358 tests: add xetpriority.test
* resource.c (SYS_FUNC(getpriority), SYS_FUNC(setpriority)): Print
the second syscall argument using %d format.
* tests/xetpriority.c: New file.
* tests/xetpriority.test: New test.
* tests/.gitignore: Add xetpriority.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add xetpriority.test.
2016-03-17 09:30:45 +00:00
b824f9872b tests: add flock.test
* tests/flock.c: New file.
* tests/flock.test: New test.
* tests/.gitignore: Add flock.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add flock.test.
2016-03-15 08:38:34 +00:00
c3fb92c0ae tests: add sched_xetscheduler.test
* tests/sched_xetscheduler.c: New file.
* tests/sched_xetscheduler.test: New test.
* tests/.gitignore: Add sched_xetscheduler.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add sched_xetscheduler.test.
2016-03-15 08:38:17 +00:00
ab26390287 alpha: fix SOCK_DIAG_BY_FAMILY tests
This complements commit v4.9-368-g301c65c.

* tests/netlink_inet_diag.c (check_responses): Align "buf"
on sizeof(long) boundary.
* tests/netlink_unix_diag.c (check_responses): Likewise.
2016-03-15 02:54:38 +00:00
aa7b60de3e Update EPOLL* constants
* xlat/epollevents.in: Add EPOLLWAKEUP and EPOLLEXCLUSIVE.
2016-03-14 21:53:19 +00:00
b389028e08 tests: add count-f.test
* tests/count-f.c: New file.
* tests/count-f.expected: Likewise.
* tests/count-f.test: New test.
* tests/.gitignore: Add count-f.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(count_f_LDADD): New variable.
(EXTRA_DIST): Add count-f.expected.
(TESTS): Add count-f.test.
2016-03-12 23:52:52 +00:00
5d6292c167 hppa: wire up copy_file_range syscall
* linux/hppa/syscallent.h [346]: Add copy_file_range entry.
2016-02-21 01:53:31 +00:00
fb2230665c tests: filter strace output in uname test
* tests/uname.test: Use uniq to filter strace output.
2016-03-11 02:43:02 +00:00
ea5c7b5515 tests: add sched_xetparam.test
* tests/sched_xetparam.c: New file.
* tests/sched_xetparam.test: New test.
* tests/.gitignore: Add sched_xetparam.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add sched_xetparam.test.
2016-03-10 09:12:24 +00:00
1eed594f30 tests: add sched_get_priority_mxx.test
* tests/sched_get_priority_mxx.c: New file.
* tests/sched_get_priority_mxx.test: New test.
* tests/.gitignore: Add sched_get_priority_mxx.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add sched_get_priority_mxx.test.
2016-03-10 09:12:23 +00:00
ab917ae5af tests: add dup.test, dup2.test, and dup3.test
* tests/dup.c: New file.
* tests/dup.test: New test.
* tests/dup2.c: New file.
* tests/dup2.test: New test.
* tests/dup3.c: New file.
* tests/dup3.test: New test.
* tests/.gitignore: Add dup, dup2, and dup3.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add dup.test, dup2.test, and dup3.test.
2016-03-10 02:41:31 +00:00
61ac8ee9b2 tests: add fchmod.test
* tests/fchmod.c: New file.
* tests/fchmod.test: New test.
* tests/.gitignore: Add fchmod.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add fchmod.test.
2016-03-10 10:29:32 +00:00
275d135ec2 tests: add acct.test
* tests/acct.c: New file.
* tests/acct.test: New test.
* tests/.gitignore: Add acct.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add acct.test.
2016-03-09 06:07:06 +00:00
1b5d1cbf63 tests: add chmod.test
* tests/chmod.c: New file.
* tests/chmod.test: New test.
* tests/.gitignore: Add chmod.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add chmod.test.
2016-03-07 23:13:28 +00:00
c811fa6115 Reduce memory usage while managing tcbs allocation.
* strace.c (init):  Remove initial memory allocation for tcbtab.
(expand_tcbtab): Do initial memory allocation when tcbtabsize == 0.

Signed-off-by: Nahim El Atmani <nahim+dev@naam.me>
Reviewed-By: Gabriel Laskar <gabriel@lse.epita.fr>
Reported-by: haris iqbal <haris.phnx@gmail.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
2016-03-05 17:02:05 +00:00
eee3476844 tests: add umask.test
* tests/umask.c: New file.
* tests/umask.test: New test.
* tests/.gitignore: Add umask.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add umask.test.
2016-03-01 08:55:37 +00:00
a4128a75f5 tests: add rename.test
* tests/rename.c: New file.
* tests/rename.test: New test.
* tests/.gitignore: Add rename.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add rename.test.
2016-03-01 08:55:36 +00:00
68a58a301f tests: add uname.test
* tests/uname.c: New file.
* tests/uname.test: New test.
* tests/.gitignore: Add uname.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add uname.test.
2016-03-01 08:55:35 +00:00
0cb245a76c mips: wire up copy_file_range syscall
* linux/mips/syscallent-n32.h [6324]: Add copy_file_range entry.
* linux/mips/syscallent-n64.h [5320]: Likewise.
* linux/mips/syscallent-o32.h [4360]: Likewise.
2016-02-20 00:37:01 +00:00
9649ac1c8b tests: add rt_sigsuspend.test
* tests/rt_sigsuspend.c: New file.
* tests/rt_sigsuspend.test: New test.
* tests/.gitignore: Add rt_sigsuspend.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add rt_sigsuspend.test.
2016-02-19 16:10:25 +00:00
11d623f10a Print pid_t arguments of rt_sigqueueinfo and rt_tgsigqueueinfo as int
* signal.c (SYS_FUNC(rt_sigqueueinfo)): Print first syscall argument
using %d format.
(SYS_FUNC(rt_tgsigqueueinfo)): Print first and second syscall arguments
using %d format.
* tests/rt_tgsigqueueinfo.c: New file.
* tests/rt_tgsigqueueinfo.test: New test.
* tests/.gitignore: Add rt_tgsigqueueinfo.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add rt_tgsigqueueinfo.test.
2016-02-19 05:48:48 +00:00
2743efccce getrusage.test: fix build on x32
* tests/getrusage.c: Include <stdint.h>
(main): Print members of struct timeval using %ju format.
2016-02-19 03:39:59 +00:00
274fd468e1 getrusage.test: check that getrusage parser does not access extra memory
Place struct rusage at the end of an allocated memory page followed by
an inaccessible page.

* tests/getrusage.c (main): Use tail_alloc.
2016-02-19 03:39:59 +00:00
5204dbdbb1 tests: add getrusage.test
* tests/getrusage.c: New file.
* tests/getrusage.test: New test.
* tests/.gitignore: Add getrusage.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add getrusage.test.
2016-02-19 03:39:59 +00:00
49faae958a Print rt_sigtimedwait return value as a signal name
* signal.c (SYS_FUNC(rt_sigtimedwait)): Decode return value.
* tests/rt_sigtimedwait.c: New file.
* tests/rt_sigtimedwait.test: New test.
* tests/.gitignore: Add rt_sigtimedwait.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add rt_sigtimedwait.test.
2016-02-19 03:39:59 +00:00
f09b7c4984 tests: add rt_sigprocmask.test
* tests/rt_sigprocmask.c: New file.
* tests/rt_sigprocmask.test: New test.
* tests/.gitignore: Add rt_sigprocmask.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add rt_sigprocmask.test.
2016-02-19 01:44:33 +00:00
11656206ff Fix corner cases of rt_sigpending syscall decoder
* signal (print_sigset_addr_len_limit): New function, cloned from
print_sigset_addr_len with added minimal length argument.
Treat length less than minimal length or greater than NSIG/8 as invalid.
Do not align length to 4-byte boundary.  Align destination buffer
to 4-byte boundary and initialize it with zeroes so that subsequent
call to sprintsigmask_n will not access uninitialized data.
(print_sigset_addr_len): Turn into a wrapper around
print_sigset_addr_len_limit with current_wordsize
as a minimal length argument.
(SYS_FUNC(rt_sigpending)): Call print_sigset_addr_len_limit
instead of print_sigset_addr_len with 1 as a minimal length argument.
* tests/rt_sigpending.c: New file.
* tests/rt_sigpending.test: New test.
* tests/.gitignore: Add rt_sigpending.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add rt_sigpending.test.
2016-02-19 01:44:33 +00:00
10c61e3b22 Change unix_diag requests back to use full dump instead of exact match
Unfortunately, 64-bit linux kernel has a bug in matching inode numbers
greater than INT_MAX, so unix_diag exact match is not reliable.

This partially reverts commit 69bfc89770.

* socketutils.c (unix_send_query): Add NLM_F_DUMP to nlmsg_flags,
remove initialization of udiag_cookie.
* tests/netlink_unix_diag.c (send_query): Remove "inode" argument,
add NLM_F_DUMP to nlmsg_flags, remove initialization of udiag_ino
and udiag_cookie.
(check_responses): Remove "inode" argument and its use.
(main): Remove invocation of inode_of_sockfd and passing of listening
socket inode to send_query and check_responses.
2016-02-19 01:44:33 +00:00
f20304b6ae tests: avoid using cpp -dD
-dD is less portable across some peculiar preprocessors.

tests/Makefile.am (ksysent.h): Use cpp -dM instead of cpp -dD.
2016-02-19 01:44:33 +00:00
446e5b1780 tests: add poll.test
* tests/poll.c: New file.
* tests/poll.test: New test.
* tests/.gitignore: Add poll.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add poll.test.
2016-02-16 01:35:36 +00:00
9f612ffc49 Fix abbreviated output of poll and ppoll decoders
* poll.c (decode_poll_entering, decode_poll_exiting): Fix corner cases
of abbreviated output.
* tests/ppoll-v.expected: Update.
* tests/ppoll.expected: Update.
* tests/ppoll.test: Update.
2016-02-16 01:35:36 +00:00
8ef9809b63 Print unfetchable address in poll and ppoll decoders
* poll.c (decode_poll_entering): Replace umove call with
umove_or_printaddr.
(decode_poll_exiting): Print unfetchable address when umove call fails.
2016-02-16 01:35:36 +00:00
ddbede5d9c Print offsets in lseek and _llseek syscalls as signed integers
* lseek.c (SYS_FUNC(lseek)): Print offset using %lld format.
(SYS_FUNC(llseek)): Likewise.  Treat high and low components of offset
as unsigned long integers.
* tests/llseek.c (main): Check that negative offset is printed properly.
* tests/lseek.c (main): Likewise.
2016-02-16 01:35:36 +00:00
669f8cfb42 tests: add xetpgid.test
* tests/xetpgid.c: New file.
* tests/xetpgid.test: New test.
* tests/.gitignore: Add xetpgid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add xetpgid.test.
2016-02-14 22:30:27 +00:00
7c05954cd8 tests: add alarm.test
* tests/alarm.c: New file.
* tests/alarm.test: New test.
* tests/.gitignore: Add alarm.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add alarm.test.
2016-02-14 22:30:27 +00:00
1ab6e25585 Replace printargs_lu and printargs_ld with printargs_u and printargs_d
* defs.h (printargs_lu): Rename to printargs_u.
(printargs_ld): Rename to printargs_d.
* syscall.c (printargs_lu): Rename to printargs_u.  Replace %lu with %u.
(printargs_ld): Rename to printargs_d.  Replace %ld with %d.
* linux/dummy.h (sys_getpgrp): Change to printargs.
(sys_alarm): Change to printargs_u.
(sys_getpgid, sys_getsid, sys_nice, sys_setpgid, sys_setpgrp,
sys_timer_delete, sys_timer_getoverrun): Change to printargs_d.
2016-02-14 22:30:27 +00:00
835127d469 Change printargs_lu and printargs_ld to return RVAL_DECODED
* syscall.c (printargs_lu, printargs_ld): Return RVAL_DECODED.
2016-02-14 22:30:27 +00:00
cff071a5ca redirect.test: fix the way how strace output is discarded
* tests/redirect.test: Disable tracing of syscalls, signals,
and exit status instead of redirecting strace output to /dev/null.
2016-02-14 00:59:42 +00:00
4774f8239b tests: extend coverage of struct iovec arrays
* tests/readv.c (main): Check decoding of empty, inaccessible,
and partially inaccessible iovec arrays.
* tests/readv.test: Update.
2016-02-14 00:36:38 +00:00
13870c5482 Implement dumping of vmsplice syscall
* syscall.c (dumpio): Add SEN_vmsplice.
* NEWS: Mention this.
* tests/vmsplice.c: New file.
* tests/vmsplice.test: New test.
* tests/.gitignore: Add vmsplice.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add vmsplice.test.
2016-02-14 00:36:38 +00:00
6c93254614 tests: add tee.test
* tests/tee.c: New file.
* tests/tee.test: New test.
* tests/.gitignore: Add tee.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add tee.test.
2016-02-14 00:36:38 +00:00
16a52b4b87 Fix printing of negative offsets in splice syscall
* io.c (SYS_FUNC(splice)): Use PRId64 instead of PRIu64 for printing
offsets.
* tests/splice.c: New file.
* tests/splice.test: New test.
* tests/.gitignore: Add splice.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add splice.test.
2016-02-14 00:36:38 +00:00
c1f99f569a Implement copy_file_range syscall decoding
* copy_file_range.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* linux/32/syscallent.h (copy_file_range): New entry.
* linux/64/syscallent.h: Likewise.
* linux/arm/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/ia64/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* pathtrace.c (pathtrace_match): Add SEN_copy_file_range.
* NEWS: Mention new syscall parser.
* tests/copy_file_range.c: New file.
* tests/copy_file_range.test: New test.
* tests/.gitignore: Add copy_file_range.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add copy_file_range.test.
2016-02-14 00:36:38 +00:00
38437688ec Update fs *_MAGIC constants
* xlat/fsmagic.in: Add CGROUP2_SUPER_MAGIC and OVERLAYFS_SUPER_MAGIC.
2016-02-14 00:36:38 +00:00
b9c8e66f46 Update IPV6_* constants
* xlat/sockipv6options.in: Add IPV6_HDRINCL.
2016-02-14 00:36:38 +00:00
c257fbe24d Update SO_* constants
* xlat/sockoptions.in: Add SO_ATTACH_REUSEPORT_CBPF
and SO_ATTACH_REUSEPORT_EBPF.
2016-02-14 00:36:38 +00:00
12d5e7c8c3 Update MADV_* constants
* xlat/madvise_cmds.in: Add MAD_FREE.
2016-02-14 00:36:38 +00:00
84be84db7b tests: robustify execve and execveat tests
* tests/execve.c (main): Use one page gap between two mapped regions
for an address that is more likely to be not yet mapped.
* tests/execveat.c (main): Likewise.
2016-02-13 01:32:48 +00:00
b5faea4c73 tests: simplify execve test
* tests/execve.c (main): Simplify the test assuming that execve syscall
never returns ENOSYS.
2016-02-13 01:32:48 +00:00
4ab20405bc Fix numbers of syscall arguments in syscall tables
This semi-automatic change brings syscall tables in sync with kernel's
include/linux/syscalls.h file.

* linux/aarch64/syscallent.h (recv): Fix nargs.
* linux/alpha/syscallent.h (sigaltstack, init_module,
sched_getscheduler, settimeofday): Likewise.
* linux/arm/syscallent.h (signal, pciconfig_iobase, msgrcv, msgctl,
shmat, shmdt, shmctl, semtimedop, get_mempolicy, set_mempolicy,
timerfd_create): Likewise.
* linux/bfin/syscallent.h (signal, delete_module): Likewise.
* linux/hppa/syscallent.h (init_module, munlockall, sched_getscheduler,
io_cancel, set_tid_address, listxattr, llistxattr, flistxattr,
removexattr, lremovexattr, fremovexattr): Likewise.
* linux/i386/syscallent.h (signal, mmap): Likewise.
* linux/ia64/syscallent.h (init_module, readv, writev,
sched_getscheduler): Likewise.
* linux/m68k/syscallent.h (signal, request_key): Likewise.
* linux/microblaze/syscallent.h (signal, clone, fstatfs64, vmsplice):
Likewise.
* linux/mips/syscallent-n32.h (getpgid, statfs, fstatfs, init_module,
delete_module): Likewise.
* linux/mips/syscallent-n64.h (getpgid, statfs, fstatfs, init_module,
delete_module): Likewise.
* linux/mips/syscallent-o32.h (signal, statfs, fstatfs, ioperm,
fstatfs64): Likewise.
* linux/powerpc/syscallent.h (signal, spu_run, spu_create): Likewise.
* linux/powerpc64/syscallent.h (signal, pread64, pwrite64, readahead,
fadvise64, lookup_dcookie, spu_run, spu_create, sync_file_range2,
fallocate, preadv, pwritev, fanotify_mark): Likewise.
* linux/s390/syscallent.h (signal, mmap, lookup_dcookie, ipc): Likewise.
* linux/s390x/syscallent.h (signal, ipc): Likewise.
* linux/sh/syscallent.h (signal, ipc, munlockall, fstatfs64, vmsplice):
Likewise.
* linux/sh64/syscallent.h (signal, ipc, msgrcv, msgctl, shmat, shmdt,
shmctl, fstatfs64, vmsplice): Likewise.
* linux/sparc/syscallent.h (ptrace, dup, signal, ipc): Likewise.
* linux/sparc64/syscallent.h (ptrace, dup, signal, pread64, pwrite64,
readahead, lookup_dcookie, fadvise64, fadvise64_64, ipc,
sync_file_range, fallocate, preadv, pwritev, fanotify_mark): Likewise.
* linux/x32/syscallent.h (64:recvmsg): Likewise.
* linux/xtensa/syscallent.h (mremap, futex, reboot, init_module,
delete_module, request_key, getcpu, ioprio_set, ioprio_get, utimensat,
futimesat, fchmodat, faccessat): Likewise.
* NEWS: Mention this fix.
2016-02-13 00:57:00 +00:00
f3948fe494 s390: decode fadvise64 and fadvise64_64
* linux/s390/syscallent.h (fadvise64): Set sys_func.
(fadvise64_64): Set nargs and sys_func.
2016-02-13 00:57:00 +00:00
61066ea8e7 mips n64: use the most optimal parser for fadvise64 syscall
* linux/mips/syscallent-n64.h (fadvise64): Replace SEN(fadvise64_64)
with SEN(fadvise64).
2016-02-13 00:57:00 +00:00
1a1661813d ia64: decode fstatfs64 and statfs64
* linux/ia64/syscallent.h (fstatfs64, statfs64): Set nargs and sys_func.
2016-02-13 00:57:00 +00:00
a1e822870e alpha, ia64, mips, sh, sh64: fix the number of pipe syscall arguments
On alpha, ia64, mips, sh, sh64, sparc, and sparc64 architectures
pipe syscall does not take arguments.

* linux/alpha/syscallent.h (pipe): Change nargs to 0.
* linux/ia64/syscallent.h (pipe): Likewise.
* linux/mips/syscallent-n32.h (pipe): Likewise.
* linux/mips/syscallent-n64.h (pipe): Likewise.
* linux/mips/syscallent-o32.h (pipe): Likewise.
* linux/sh/syscallent.h (pipe): Likewise.
* linux/sh64/syscallent.h (pipe): Likewise.
2016-02-13 00:57:00 +00:00
9b38885803 alpha, ia64, mips, sh*, sparc*: fix error path decoding of pipe syscall
* net.c (do_pipe) [HAVE_GETRVAL2]: Remove.
Always call decode_pair_fd on exiting.
(SYS_FUNC(pipe)) [HAVE_GETRVAL2]: Call printpair_fd instead of do_pipe.
2016-02-13 00:57:00 +00:00
f9f04f74fc Fix pathtrace match for pipe2 syscall
* pathtrace.c (pathtrace_match): As pipe2 syscall has no descriptors
or paths to test, move SEN_pipe2 to the appropriate category.
2016-02-13 00:57:00 +00:00
3a630751eb avr32: wire up missing syscalls
* linux/avr32/syscallent.h [322..324]: Add userfaultfd, membarrier,
and mlock2 entries.
2016-02-13 00:57:00 +00:00
0aae167293 tests: check decoding of madvise, mlockall, mremap, and msync syscalls
* tests/mmap.c (main): Change output format from regexp to verbatim.
Add tests for madvise, mlockall, mremap, and msync syscalls.
* tests/mmap.test: Convert from match_grep to match_diff.
Add madvise, mlockall, mremap, and msync syscalls to syscall filter.
2016-02-12 02:35:54 +00:00
af618fa943 Simplify decoding of waitpid and wait4 syscalls
* wait.c (printwaitn): Replace "n" and "bitness" integer arguments
with a single print_rusage function pointer.  All callers updated.
2016-02-11 03:06:17 +00:00
591906cccb waitid: print pid argument as int
* wait.c (SYS_FUNC(waitid)): As the type of second syscall argument
in the kernel is pid_t, print it as int.
2016-02-11 03:06:17 +00:00
d3f17c642d waitid: always print 5th argument
* wait.c (SYS_FUNC(waitid)): Do not check for tcp->s_ent->nargs
as waitid syscall has 5 arguments.
2016-02-11 03:06:17 +00:00
ea21823d27 socketutils: add const qualifier to variables
* socketutils.c (cache_and_print_inode_details): Make "details"
parameter const.
(print_sockaddr_by_inode_cached): Make "e" variable const.
(inet_send_query): Make struct nlmsghdr and struct inet_diag_req_v2
members const.  Make "msg" variable const.
(inet_parse_response): Make "data" parameter and diag_msg variable const.
(receive_responses): Make "h" and "rc" variables const.
(unix_send_query): Make struct nlmsghdr and struct unix_diag_req
members const.  Make "msg" variable const.
(unix_print): Make all parameters const.
(print_sockaddr_by_inode): Make proto_name parameter const.
2016-02-11 03:06:17 +00:00
bcf5975a3e print_sockaddr_by_inode: cleanup protocol lookup
* socketutils.c (tcp_v4_print, udp_v4_print, tcp_v6_print,
udp_v6_print): New functions.
(print_sockaddr_by_inode): Make "protocols" array static, replace
"family" and "protocol" members with "print" in its underlying
structure.  Iterate through protocols array when the protocol name
is specified.
2016-02-11 03:06:17 +00:00
6204654329 tests: check that -f -p attaches to threads properly
Check that -f -p attaches and follows all threads of the given pid.

* tests/attach-f-p.c: New file.
* tests/attach-f-p.test: New test.
* tests/.gitignore: Add attach-f-p.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(attach_f_p_LDADD): New variable.
(TESTS): Add attach-f-p.test.
2016-02-09 05:08:00 +00:00
6ca4c92c1b Introduce libstrace.a for potentially conditional compilation units
Some files are used conditionally depending on architecture and
configuration.  Create a library for the purpose of keeping such
compilation units.

* Makefile.am (strace_LDADD, noinst_LIBRARIES): Add libstrace.a.
(libstrace_a_CPPFLAGS): New variable, set to $(strace_CPPFLAGS).
(libstrace_a_CFLAGS): New variable, set to $(strace_CFLAGS).
(libstrace_a_SOURCES): New variable, set to upeek.c.
* util.c (upeek): Move ...
* upeek.c: ... here.
2016-02-09 05:08:00 +00:00
0acd8d0ec3 travis-ci: pass more gcov arguments to codecov 2016-02-08 18:35:16 +00:00
b1b692eb23 tests: extend coverage of struct itimerspec
* tests/timer_xettime.c (main): Check decoding of NULL struct itimerspec
pointer.
2016-02-08 18:28:36 +00:00
9ee77b9e65 tests: extend coverage of utimensat syscall
* tests/utimensat.c (main): Check decoding of NULL struct timespec
pointer.
2016-02-08 18:27:59 +00:00
c736b456ad tests: extend coverage of time syscall
* tests/time.c (main): Check decoding of NULL time_t pointer.
2016-02-08 18:27:17 +00:00
595fc10f11 tests: extend coverage of struct sigevent
* tests/timer_create.c (main): Check decoding of NULL struct sigevent
pointer.  Check decoding of invalid sigev_notify value.
2016-02-08 18:26:46 +00:00
23168c1e54 tests: extend coverage of execve and execveat syscalls
Check decoding of inaccessible or partially inaccessible arrays.

* tests/execve-v.c: New file.
* tests/execveat-v.c: Likewise.
* tests/execve-v.test: New test.
* tests/execveat-v.test: Likewise.
* tests/execve.c: Rewrite.
* tests/execveat.c: Likewise.
* tests/execve.test: Likewise.
* tests/execveat.test: Likewise.
* tests/execve.expected: Remove.
* tests/execve-v.expected: Likewise.
* tests/execveat.expected: Likewise.
* tests/execveat-v.expected: Likewise.
* tests/.gitignore: Add execve-v and execveat-v.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add execve-v.test and execveat-v.test.
(EXTRA_DIST): Remove execve.expected, execve-v.expected,
execveat.expected, and execveat-v.expected.
2016-02-08 18:25:33 +00:00
3c00e63b03 Fix decoding of execve and execveat syscalls with invalid input
* execve.c (printargv): Fix decoding of inaccessible or partially
inaccessible array.
(printargc): Diagnose inaccessible or partially inaccessible array.
(decode_execve, SYS_FUNC(execv)): Update printargv and printargc callers.
2016-02-08 18:21:31 +00:00
a59fcec4c9 tests: extend coverage of capget syscall
* tests/caps.c (main): Check decoding of inaccessible cap_user_header_t
and/or cap_user_data_t.
* tests/caps.awk: Update match patterns.
* tests/caps.test: Update.
2016-02-08 18:21:10 +00:00
48d97b6a83 tests: extend coverage of sched_getaffinity syscall
* tests/sched_xetaffinity.c (main): Check decoding of pointer
to inaccessible cpu_set_t.
2016-02-08 18:18:51 +00:00
f2e6f3d3c4 tests: extend coverage of utime syscall
* tests/utime.c (main): Check decoding of NULL struct utimbuf pointer.
Check decoding of struct utimbuf located at the end of page boundary.
* tests/utime.test: Update.
2016-02-08 18:18:05 +00:00
b5a7011d71 tests: extend coverage of sysinfo syscall
* tests/sysinfo.c (main): Check decoding of NULL struct sysinfo pointer.
Check decoding of struct sysinfo located at the end of page boundary.
* tests/sysinfo.test: Update.
2016-02-08 18:17:28 +00:00
7fce7c0332 tests: extend coverage of adjtimex syscall
* tests/adjtimex.c (main): Check decoding of NULL struct timex pointer.
Check decoding of struct timex located at the end of page boundary.
* tests/adjtimex.test: Update.
2016-02-08 18:16:27 +00:00
a88c72ef66 tests: check that strace does not retain stdin and stdout descriptors
* tests/redirect.test: New test.
* tests/Makefile.am (TESTS): Add it.
2016-02-08 17:51:18 +00:00
6aedd42206 Create a dummy pipe descriptor instead of opening /dev/null
* strace.c (open_dev_null): Rename to open_dummy_desc.  All callers
changed.  Create a pipe and return its first descriptor instead of
opening /dev/null.
2016-02-08 17:51:18 +00:00
0736d4e1a3 If stdin/stdout aren't open on startup, open them to /dev/null
Otherwise, -oLOGFILE may end up using one of them. This conflicts
with the previous change, which closes stdin/out in strace.

* strace.c (init): If fcntl(F_GETFD) fails on stdin or stdout,
sanitize them: open /dev/null and dup it until fds 0,1,2
are all used up.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2016-02-08 18:17:38 +01:00
c9f85b3876 Close stdin/out after child is forked
Testcase:

{ sleep 1; yes | head -n99999; } | strace -o/dev/null sh -c 'exec <&-; sleep 9'

The writer (head) will be able to perform writes to write end of the pipe.
With strace call removed, head will immediately get SIGPIPE.

This change fixes this: now writer immediately gets SIGPIPE with strace too.

* strace.c (startup_child): Close stdin/out and reopen them to /dev/null.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2016-02-08 18:17:38 +01:00
7469e252fa tests: add opipe.test
Check that -o |pipe_command works.  In particular, check that
strace waits for completion of piped command.

* tests/opipe.test: New test.
* tests/Makefile.am (TESTS): Add it.
2016-02-05 14:58:41 +00:00
320fb41682 strace-graph: print the pid in the graph
* strace-graph: Prefix each command with its pid.
2016-02-05 00:41:23 +00:00
7e0ba4bdcc strace-graph: cope with clone immediately followed by exit
* strace-graph: A clone() followed by exit() with no intervening fork
or execve resulted in the new pid having no seq key.  That breaks when
trying to use seq as an array reference.  Ensure that clone populates
the new pid with an empty seq entry.
2016-02-05 00:41:23 +00:00
ef445b5daf strace-graph: handle recent strace output
* strace-graph: Fix regex for --SIG.  Ignore '+++ exited with <n> +++'
lines.  Handle exit_group syscall as well as _exit.
2016-02-05 00:41:23 +00:00
dbc1ffb2a4 strace-graph: handle strace -T
* strace-graph: Ignore extra ' <time.spent>' field added by strace -T.
2016-02-05 00:41:23 +00:00
a0bc25f085 strace-graph: use "strict" and "warnings" pragmas
* strace-graph: Set "use strict" and "use warnings" options.  Fix errors
detected by strict/warnings.  $result is really a string, it can be "-1"
followed by an error text.
2016-02-05 00:41:23 +00:00
26ed70b252 Add README.md file with links to build status and test coverage 2016-02-04 18:20:14 +00:00
5be488c3a5 travis-ci: prepare and submit test coverage report 2016-02-04 17:04:13 +00:00
d8a81dfa40 tests: extend readlink and readlinkat coverage
* tests/readlink.c (PREFIX, TARGET, LINKPATH): New macros.
(main): Allocate memory for string and buffer passed to the syscall
being tested using tail_alloc mechanism.  Create and cleanup test
symlink.  Test syscall error path output.  Print hexquoted strings
using hexquote_strndup.
* tests/readlinkat.c: Likewise.
* tests/readlink.test: Remove creation and cleanup of test symlinks.
2016-02-04 03:36:25 +00:00
7637b1d9e8 tests: add hexquote_strndup function to libtests
* tests/tests.h (hexquote_strndup): New prototype.
* tests/hexquote_strndup.c: New file.
* tests/Makefile.am (libtests_a_SOURCES): Add it.
2016-02-04 03:36:25 +00:00
f2eb27c73e readlinkat.test: use readlink.test
* tests/readlink.test (syscall): Initialize from $0.
* tests/readlinkat.test: Source readlink.test.
2016-02-04 03:36:25 +00:00
cba67108a0 Add configure --enable-code-coverage option
* m4/ax_code_coverage.m4: New file.
* configure.ac: Use AX_CODE_COVERAGE.
* Makefile.am: Add @CODE_COVERAGE_RULES@.
(CODE_COVERAGE_LCOV_OPTIONS, CODE_COVERAGE_GENHTML_OPTIONS,
CODE_COVERAGE_IGNORE_PATTERN): New variables.
(strace_CPPFLAGS): Add $(CODE_COVERAGE_CPPFLAGS).
(strace_CFLAGS): Add $(CODE_COVERAGE_CFLAGS).
(strace_LDADD): Add $(CODE_COVERAGE_LDFLAGS).
* .gitignore: Add *.gcda and *.gcno.

Signed-off-by: Gabriel Laskar <gabriel@lse.epita.fr>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
2016-02-04 03:36:11 +00:00
71d3aa0cea Makefile.am: introduce strace_CFLAGS and derivatives
* Makefile.am (strace_CFLAGS): New variable, set to $(AM_CFLAGS).
(libmpers_CFLAGS): New variable, set to $(strace_CFLAGS).
(libmpers_m32_a_CFLAGS, libmpers_mx32_a_CFLAGS): New variables,
set to $(libmpers_CFLAGS).
2016-02-03 19:24:23 +00:00
fafa7dc2f3 Makefile.am: use strace_CPPFLAGS consistently
* Makefile.am (libmpers_CPPFLAGS): Replace $(AM_CPPFLAGS)
with $(strace_CPPFLAGS).
2016-02-03 19:18:28 +00:00
751fcb8f8a tests: replace net-fd.test with net-y-unix.test
Unlike the former test that was based on match_grep,
the new one uses match_diff and does more rigorous testing.

* tests/net-y-unix.c: New file.
* tests/net-y-unix.test: New test.
* tests/net-fd.test: Remove.
* tests/net-fd.expected: Remove.
* tests/.gitignore: Add net-y-unix.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Replace net-fd.test with net-y-unix.test.
(net-fd.log): Remove.
(EXTRA_DIST): Remove net-fd.expected.
2016-02-03 16:09:34 +00:00
3c17d1b5e1 Implement caching of print_sockaddr_by_inode
As -yy parser, compared to -y, needs to do at least 5 extra syscalls
(getxattr, socket, sendmsg, recvmsg, close) to print socket details,
caching results of netlink conversations between strace and kernel
noticeably reduces amount of system time spent by strace.

The caching is safe since sockets do not change their addresses after
successful bind or connect syscall.

* defs.h (string_quote, print_sockaddr_by_inode_cached): New prototypes.
* socketutils.c (cache_entry): New type.
(CACHE_SIZE, CACHE_MASK): New macros.
(cache): New static array.
(cache_and_print_inode_details): New static function.
(print_sockaddr_by_inode_cached): New function.
(inet_parse_response, unix_parse_response): Use
cache_and_print_inode_details.
* util.c (printfd): Use string_quote and print_sockaddr_by_inode_cached.
(string_quote): Remove static qualifier.
* NEWS: Mention this improvement.
* tests/unix-yy.c (main): Update.
2016-02-03 12:43:22 +00:00
69bfc89770 Change unix_diag requests to use exact match instead of full dump
* socketutils.c (unix_send_query): Remove NLM_F_DUMP from nlmsg_flags,
initialize udiag_cookie.
* tests/netlink_unix_diag.c (send_query): Remove "family" and "proto"
arguments, add "inode" argument, remove NLM_F_DUMP from nlmsg_flags,
initialize udiag_ino and udiag_cookie.
(check_responses): Add "inode" argument, check inode match.
(main): Pass listening socket inode to send_query and check_responses.
2016-02-03 12:43:22 +00:00
3c86e0ea5d Robustify netlink response parsers
* socketutils.c (inet_parse_response, unix_parse_response): Change
return type from bool to int, return -1 on all parse errors except
inode mismatch.
(receive_responses): Stop on the first nlmsg_type that is not
SOCK_DIAG_BY_FAMILY, also stop when the parser returns -1.
* tests/netlink_inet_diag.c (check_responses): Stop on short messages,
on first nlmsg_type that is not SOCK_DIAG_BY_FAMILY, print more verbose
diagnostics for NLMSG_ERROR.
* tests/netlink_unix_diag.c (check_responses): Likewise.
2016-02-03 12:43:17 +00:00
cc09ba1a84 inet_parse_response: add a safety check
* socketutils.c (inet_parse_response): Check that netlink message
is large enough to contain a inet_diag_msg structure.
2016-02-03 12:42:20 +00:00
2215c3e352 receive_responses: avoid potential hangup
* socketutils.c (receive_responses): Pass MSG_DONTWAIT to recvmsg after
the first recvmsg call to avoid potential hangup.
2016-02-03 12:42:20 +00:00
9d15ec7b57 tests: replace net-yy.test with net-yy-inet.test
Unlike the former test that was based on match_awk,
the new one uses match_diff and does more rigorous testing.

* tests/net-yy-inet.c: New file.
* tests/net-yy-inet.test: New test.
* tests/net-yy.test: Remove.
* tests/net-yy-accept.awk: Remove.
* tests/net-yy-connect.awk: Remove.
* tests/inet-accept-connect-send-recv.c: Remove.
* tests/.gitignore: Replace inet-accept-connect-send-recv
with net-yy-inet.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Replace net-yy.test with net-yy-inet.test.
(EXTRA_DIST): Remove net-yy-accept.awk and net-yy-connect.awk.
2016-02-03 12:42:01 +00:00
6124cd9932 tests: replace unix-yy.test with net-yy-unix.test
Unlike the former test that was based on match_awk,
the new one uses match_diff and does more rigorous testing.

* tests/net-yy-unix.c: New file.
* tests/net-yy-unix.test: New test.
* tests/unix-yy.test: Remove.
* tests/unix-yy-accept.awk: Remove.
* tests/unix-yy-connect.awk: Remove.
* tests/.gitignore: Add net-yy-unix.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Replace unix-yy.test with net-yy-unix.test.
(EXTRA_DIST): Remove unix-yy-accept.awk and unix-yy-connect.awk.
2016-02-03 12:39:06 +00:00
e364920b67 tests: add inode_of_sockfd function to libtests
* tests/tests.h (inode_of_sockfd): New prototype.
* tests/inode_of_sockfd.c: New file.
* tests/Makefile.am (libtests_a_SOURCES): Add it.
2016-02-02 00:24:48 +00:00
3d0f55e419 unix_parse_response: add a safety check
* socketutils.c (unix_parse_response): Check that netlink message
is large enough to contain a unix_diag_msg structure.
2016-02-02 00:24:46 +00:00
dfea1da0e6 Fixed decoding of mincore syscall's last argument
* mem.c (SYS_FUNC(mincore)): Print only those bytes of the vector
that were written by the kernel.
* NEWS: Mention this fix.
* tests/mincore.c: New file.
* tests/mincore.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add mincore.
(TESTS): Add mincore.test.
* tests/.gitignore: Add mincore.
2016-01-29 02:39:40 +00:00
ea8b8e3152 Move fallback -yy socket print from printfd to print_sockaddr_by_inode
* util.c (printfd): In -yy mode, move fallback print of proto:[inode] ...
* socketutils.c (to print_sockaddr_by_inode): ... here.
2016-01-23 16:35:02 +00:00
fa8c286d50 Implement simultaneous use of -p option and tracing of a command
* strace.c (init): Allow -p option along with a command.
(startup_child): In -D mode, record the parent of the tracer process
as strace_child.
(startup_attach): Save trace_tracer_pid before -D mode fork.
When tracing a command in -f mode, do not check for the command's
threads as it has no threads at this moment.
Never attach to the tracer process.
In -D mode, never attach to the parent of the tracer process,
terminate that process only once at the end of startup_attach,
and reset strace_child.
* strace.1: Document that -p option can be used along with tracing
of a command.
* NEWS: Mention it.
* tests/attach-p-cmd-cmd.c: New file.
* tests/attach-p-cmd-p.c: Likewise.
* tests/attach-p-cmd.test: New test.
* tests/.gitignore: Add attach-p-cmd-cmd and attach-p-cmd-p.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add attach-p-cmd.test.

This fixes Debian bug #549942.
2016-01-22 19:37:11 +00:00
38721432de strace.1: fix format of -P description
* strace.1 (-P): Write trailing using regular font.
2016-01-22 14:55:56 +00:00
a8eb52f952 tests: use local nanosleep based sleep utility replacement
* tests/sleep.c: New file.
* tests/.gitignore: Add sleep.
* tests/Makefile.am (check_PROGRAMS): Likewise.
* tests/count.test: Use it instead of system sleep utility.
2016-01-21 23:52:39 +00:00
3d54c92691 tests: add error_msg_and_fail function to libtests
* tests/tests.h (error_msg_and_fail): New prototype.
* tests/error_msg.c (error_msg_and_fail): New function.
2016-01-21 23:46:43 +00:00
d44707d889 Fix dumping of recvmmsg syscall in case of short read
* net.c (dumpiov_in_mmsghdr): Call dumpiov_upto instead of dumpiov,
pass data size limit to dumpiov_upto.
* NEWS: Mention this fix.
* tests/mmsg.c (main): Update.
2016-01-20 17:36:41 +00:00
93c9d1cdbd Fix dumping of recvmsg syscall in case of short read
* defs.h (dumpiov_in_msghdr): Add unsigned long argument.
* net.c (dumpiov_in_msghdr): Add data_size argument.  Call dumpiov_upto
instead of dumpiov, pass data_size to dumpiov_upto.
* syscall.c (dumpio): Pass data size limit to dumpiov_in_msghdr.
* NEWS: Mention this fix.
* tests/recvmsg.c: New file.
* tests/recvmsg.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add recvmsg.
(TESTS): Add recvmsg.test.
* tests/.gitignore: Add recvmsg.
2016-01-20 17:35:27 +00:00
05a0af6d60 Fix decoding and dumping of readv syscall in case of short read
* defs.h (dumpiov_upto): New prototype.
(dumpiov): Change to a wrapper around dumpiov_upto.
* util.c (dumpiov): Rename to dumpiov_upto, add and check data_size
argument.
* io.c (SYS_FUNC(readv)): Call tprint_iov_upto instead
of tprint_iov and specify syscall return value as a data size limit.
* syscall.c (dumpio): In case of SEN_readv, call dumpiov_upto instead
of dumpiov and specify syscall return value as a data size limit.
* NEWS: Mention this fix.
* tests/readv.c: New file.
* tests/readv.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add readv.
(TESTS): Add readv.test.
* tests/.gitignore: Add readv.
2016-01-20 15:31:26 +00:00
a5417308e4 tests/tests.h: add ARRAY_SIZE and LENGTH_OF macros
* tests/tests.h (ARRAY_SIZE, LENGTH_OF): New macros.
* tests/aio.c (ARRAY_SIZE): Remove.
* tests/mmsg.c (LENGTH_OF): Remove.
2016-01-20 15:24:45 +00:00
590b240444 tests: add hexdump_strdup function to libtests
* tests/tests.h (hexdump_strdup): New prototype.
* tests/hexdump_strdup.c: New file.
* tests/Makefile.am (libtests_a_SOURCES): Add it.
2016-01-20 15:24:41 +00:00
536a0353dd tests: add tprintf function to libtests
* tests/tests.h (tprintf): New prototype.
* tests/tprintf.c: New file.
* tests/Makefile.am (libtests_a_SOURCES): Add it.
* tests/mmsg.c: Use tprintf.
2016-01-20 15:17:28 +00:00
ed227111a4 quotactl: add Q_XGETQSTATV command decoding
* quota.c (fs_qfilestatv, fs_quota_statv): New structures.
(decode_cmd_data): Handle Q_XGETQSTATV case.
2016-01-19 23:48:36 +00:00
60d4892866 quotactl: add decoding of if_dqinfo.dqi_flags constants
* xlat/if_dqinfo_flags.in: New file.
* quota.c: Include "xlat/if_dqinfo_flags.h".
(decode_cmd_data): Print struct if_dqinfo.dqi_flags using printflags.
2016-01-19 02:10:23 +00:00
c02fd6109a quotactl: consistenly decode all write and unknown commands on entering
* quota.c (decode_cmd_data): Change return type to int.
Return 0 on entering Q_GETQUOTA, Q_V1_GETQUOTA, Q_V2_GETQUOTA,
Q_XGETQUOTA, Q_GETFMT, Q_GETINFO, Q_V2_GETINFO, Q_V1_GETSTATS,
Q_V2_GETSTATS, and Q_XGETQSTAT commands, return RVAL_DECODED
for any other command.
(SYS_FUNC(quotactl)): On entering, print third argument of any command.
For any command except Q_QUOTAON and Q_V1_QUOTAON, call decode_cmd_data
and forward its return value.
2016-01-19 02:00:20 +00:00
b176920bb7 quotactl: fix Q_QUOTAON command decoding
* quota.c (SYS_FUNC(quotactl)): Print Q_QUOTAON 4th argument as a path.
2016-01-19 01:43:24 +00:00
7258d27e9c quotactl: print third argument as unsigned int
* quota.c (SYS_FUNC(quotactl)): Consistently print the third
argument using "%u" format.
2016-01-19 01:43:24 +00:00
7ea48d6ff8 quotactl: fix Q_XQUOTAOFF command decoding
* quota.c (decode_cmd_data): Print xfs quota flags argument.
2016-01-19 01:43:17 +00:00
6a9ac9636a quotactl: fix Q_GETFMT and Q_XQUOTAON commands decoding
* quota.c (decode_cmd_data): As quota format value and xfs quota flags
are in-memory constants, print it like an array of one element instead
of a structure.
2016-01-19 01:42:08 +00:00
2d544968fe Update quotactl constants
* xlat/quota_formats.in: Add QFMT_OCFS2 and QFMT_VFS_V1.
* xlat/quotacmds.in: Add Q_XGETQSTATV.
* xlat/quotatypes.in: Add PRJQUOTA.
* xlat/xfs_quota_flags.in: Add FS_QUOTA_PDQ_ACCT and FS_QUOTA_PDQ_ENFD.
2016-01-17 22:30:54 +00:00
0894194648 Replace u_int{8,16,32,64} with uint{8,16,32,64}
* util.c: Replace u_int{32,64} with uint{32,64}.
* quota.c: Replace u_int{8,16,32,64} with uint{8,16,32,64}.
2016-01-19 00:28:38 +00:00
2105a9737c Move definitions of quotactl constants to xlat files
* quota.c (Q_*): Move to xlat/quotacmds.in.
(USRQUOTA, GRPQUOTA): Move to xlat/quotatypes.in.
(QFMT_VFS_OLD, QFMT_VFS_V0): Move to xlat/quota_formats.in.
(XFS_QUOTA_*): Move to xlat/xfs_quota_flags.in.
(XFS_*_QUOTA): Move to xlat/xfs_dqblk_flags.in.
(QIF_*): Move to xlat/if_dqblk_valid.in.
(IIF_*): Move to xlat/if_dqinfo_valid.in.
2016-01-19 00:06:09 +00:00
972018f2ea llseek.test: robustify against libcs invoking _llseek syscall on their own
* tests/llseek.test: Filter out _llseek calls made with non-negative
descriptor arguments.
2016-01-15 00:10:00 +00:00
8e37cffaa8 lseek.test: robustify against libcs invoking lseek syscall on their own
* tests/lseek.test: Filter out lseek calls made with non-negative
descriptor arguments.
2016-01-15 00:09:48 +00:00
19d10f8965 mmsg.test: fix regression introduced by commit v4.11-138-g6e815ce
This fixes the test on platforms where both __NR_sendmmsg and
HAVE_SENDMMSG are defined but the former is not implemented by the
kernel and the second is implemented as an indirect syscall.

* tests/mmsg.c (LENGTH_OF): New macro.
(send_mmsg, recv_mmsg): Print expected output in case of ENOSYS.
(main): Redirect stdout to a new descriptor.  Use LENGTH_OF.
Print expected output.
* tests/mmsg.test: Update.
* tests/mmsg.expected: Remove.
* tests/Makefile.am (EXTRA_DIST): Remove mmsg.expected.
2016-01-14 00:06:20 +00:00
68f7a66dc9 aio.test: check memory access by aio decoders
* tests/aio.c (main): Place all objects passed to io_* syscalls
at the end of memory pages followed by inaccessible pages.
2016-01-13 22:06:18 +00:00
1763fa5f62 s390, s390x: fix printing of syscalls unknown to the kernel
On s390/s390x, syscalls with NR up to 255 can be implemented
directly using "svc NR", for NR >= 256 "svc 0" with %r1=NR is used.
The latter method is allowed for NR < 256, too.

When the syscall number specified directly or indirectly is recognized
by the kernel, i.e. it is less than its NR_syscalls value, it is stored
in %r2 and is available to arch_get_scno via s390_regset.gprs[2].
For syscall numbers >= NR_syscalls this register is set to 0,
but %r1 remains unchanged and could be used by arch_get_scno
via s390_regset.gprs[1] to decide what the syscall number is.

* linux/s390/get_scno.c (arch_get_scno): If s390_regset.gprs[2] is zero,
take syscall number from s390_regset.gprs[1].
* NEWS: Mention this fix.

This fixes Debian bug #485979 and Fedora bug #1298294.
2016-01-13 21:27:48 +00:00
e2136d4b89 s390, s390x: print all syscall arguments for syscall number 0
* linux/s390/syscallent.h [0]: Set nargs to MA.
* linux/s390x/syscallent.h: Likewise.
2016-01-13 21:26:26 +00:00
606fcd0878 mips o32: alias sys_syscall to printargs
* linux/dummy.h (sys_syscall): Alias to printargs.
* syscall.c [LINUX_MIPSO32] (SYS_FUNC(syscall)): Remove.
2016-01-13 21:26:26 +00:00
b227293f1c travis-ci: update build matrix
Add clang-3.6/x86_64, clang-3.6/x86, and musl-gcc/x86_64 to the matrix.

* .travis.yml (compiler): Add gcc, clang-3.6, and musl-gcc.
(env): Add matrix, remove global ENABLE_GCC_WERROR.
(matrix): Add exclude, remove include.
* travis-ci.sh: Add support for clang and musl-gcc.
Use --enable-gcc-Werror for gcc build unconditionally.
2016-01-13 12:12:33 +00:00
cc902e3272 mpers.awk: add support for DWARF files generated by clang
* mpers.awk: Define default_pointer_size.  Initialize byte_size
for DW_TAG_pointer_type to default_pointer_size.  Set parent
for DW_TAG_member only.  Handle DW_AT_count as an alternative
to DW_AT_upper_bound.
2016-01-13 02:38:59 +00:00
1ef7aa65ab configure.ac: reorder some statements for better readability
* configure.ac: Sort and group together AC_PROG_*, AC_C_*, AC_TYPE_*,
AC_HEADER_*, AC_CHECK_FUNCS, AC_CHECK_TYPES, AC_CHECK_MEMBERS,
and AC_CHECK_HEADERS.
2016-01-12 21:48:04 +00:00
3fdcdd47c6 scm_rights-fd.test: rewrite without fork
* tests/scm_rights.c (main): Rewrite without fork.
Place all objects passed to sendmsg and recvmsg at the end
of memory pages followed by inaccessible pages.
* tests/scm_rights-fd.test: Update.
2016-01-12 16:06:58 +00:00
55f3c8901d tests: fix clang "duplicate 'const' declaration specifier" warnings
* tests/ksysent.c (pstr_t): Remove second const specifier.
* tests/mmsg.c (main): Remove second const specifier from one[], two[],
and three[].
2016-01-12 05:06:10 +00:00
b6edea5ce7 tests/times.c: fix clang compilation warning
* tests/times.c (main): Initialize dummy variable.
2016-01-12 05:06:10 +00:00
eb4649a0dc tests/mmsg.c: fix build on rhel6/ppc
There are weird platforms that define __NR_sendmmsg but at the same time
do not define __NR_recvmmsg.  Add a workaround for them.

* configure.ac (AC_CHECK_FUNCS): Add recvmmsg.
* tests/mmsg.c: Check for __NR_recvmmsg || HAVE_RECVMMSG.
2016-01-12 05:06:10 +00:00
8493dcf6f7 s390: fix sigreturn decoding on recent kernels
Linux kernel commit v4.3-rc1-50-g8d4bd0e corrected uc_sigmask
of the compat signal frame, so remove the old workaround.

* linux/s390/arch_sigreturn.c (arch_sigreturn) [S390]: Remove.
2016-01-12 03:07:39 +00:00
65f8d39278 Update PTRACE_* constants
* ptrace.h (PTRACE_SECCOMP_GET_FILTER): Define.
* xlat/ptrace_cmds.in: Add PTRACE_SECCOMP_GET_FILTER.
2016-01-12 03:07:39 +00:00
e714b87064 Fix struct sigevent decoding for musl
Do not rely on "struct sigevent.__pad" being located at the same address
as "struct sigevent.sigev_notify_thread_id", it's not the case with musl
libc.  Do not rely on struct sigevent definition at all to access
sigev_notify_thread_id.

* configure.ac (AC_CHECK_MEMBERS): Remove struct sigevent._sigev_un._pad
and struct sigevent.__pad.
* sigevent.h: New file.
* Makefile.am (strace_SOURCES): Add it.
* print_sigevent.c: Include it.
* print_sigevent.c (struct_sigevent): Remove.
(print_sigevent): Update all struct_sigevent users.
* tests/timer_create.c: Include "sigevent.h".
(main): Use struct_sigevent instead of struct sigevent,
all struct sigevent clients changed.
2016-01-12 03:07:39 +00:00
2a6ac9473c syscall.c: include <signal.h>
All users of NSIG macro must include <signal.h>.
This complements commit v4.10-184-g0e946ab.

* syscall.c: Include <signal.h>.
2016-01-12 03:07:39 +00:00
07572c68dd signal.c: fix musl libc compilation warning
musl libc defines SIGRTMAX to a function that returns signed int,
which obviously makes gcc -Wsign-compare unhappy.

* signal.c (signame): Cast ASM_SIGRTMAX to unsigned int.
2016-01-12 03:07:39 +00:00
7bbf8b54cd tests: fix TEST_SYSCALL_{NR,STR} and STRUCT_STAT_STR macros for musl
The contents of TEST_SYSCALL_NAME and STRUCT_STAT macros was subject
to macro expansion when used in definitions of TEST_SYSCALL_NR,
TEST_SYSCALL_STR, and STRUCT_STAT_STR macros.

As some libcs, e.g. musl libc, define lfs64 names as macros
(stat64 as stat, lstat64 as lstat, etc.), this might result to incorrect
expansion of TEST_SYSCALL_NR, TEST_SYSCALL_STR, and STRUCT_STAT_STR
macros.  To avoid this problem, define these macros directly and remove
TEST_SYSCALL_NAME macro.

* tests/_newselect.c (TEST_SYSCALL_NAME): Remove.
(TEST_SYSCALL_NR, TEST_SYSCALL_STR): New macros.
* tests/fcntl.c: Likewise.
* tests/fcntl64.c: Likewise.
* tests/fstat.c: Likewise.
* tests/fstatat64.c: Likewise.
* tests/lstat.c: Likewise.
* tests/newfstatat.c: Likewise.
* tests/select.c: Likewise.
* tests/stat.c: Likewise.
* tests/fstat64.c (TEST_SYSCALL_NAME): Remove.
(TEST_SYSCALL_NR, TEST_SYSCALL_STR, STRUCT_STAT_STR): New macros.
* tests/lstat64.c: Likewise.
* tests/stat64.c: Likewise.
* tests/fstatx.c (TEST_SYSCALL_NR, nrify, nrify_): Remove.
* tests/lstatx.c: Likewise.
* tests/struct_flock.c (TEST_SYSCALL_NR, TEST_SYSCALL_STR, nrify,
nrify_, stringify, stringify_): Remove.
* tests/xselect.c: Likewise.
* tests/xstatx.c: Check TEST_SYSCALL_STR instead of TEST_SYSCALL_NAME.
(STRUCT_STAT_STR, TEST_SYSCALL_STR, stringify, stringify_): Remove.
[!STRUCT_STAT] (STRUCT_STAT_STR): New macro.
2016-01-12 03:07:39 +00:00
2165a359fd tests/struct_flock.c: fix musl libc compilation warnings
The size of off_t is not something one can rely upon.  For example,
musl libc unconditionally defines it as an int64_t type on x86.
A cast to the target type helps to avoid these libc differences.

* configure.ac: Call AC_C_TYPEOF.
* tests/struct_flock.c (TYPEOF_FLOCK_OFF_T): New macro.
(test_flock_einval): Use it instead of off_t.
2016-01-12 03:07:38 +00:00
4776e3366f tests/inet-cmsg.c: fix musl libc compilation warnings
The types that are used to define msg_namelen member of struct msghdr
and cmsg_len member of struct cmsghdr differ between libcs.
For example, glibc defines them as size_t, while musl libc - as type
socklen_t.  Print these fields using %lu format to avoid issues caused
by libc differences.

* tests/inet-cmsg.c (main): Cast mh.msg_controllen and c->cmsg_len
to unsigned long and print them using %lu format.
2016-01-12 00:00:47 +00:00
c36270a28e aio.test: include <fcntl.h> instead of <sys/fcntl.h>
* tests/aio.c: Include <fcntl.h> instead of <sys/fcntl.h>.
2016-01-11 02:20:04 +00:00
35eb03fdf7 mmsg.test: check memory access by sendmmsg and recvmmsg decoders
* tests/tests.h (tail_memdup): New prototype.
* tests/tail_alloc.c (tail_memdup): New function.
* tests/mmsg.c (main): Place all objects passed to sendmmsg and recvmmsg
at the end of memory pages followed by inaccessible pages.
2016-01-11 01:05:34 +00:00
3a184fe9cc mmsg.test: check decoding of flags passed to sendmmsg and recvmmsg
* tests/mmsg.c (main): Pass MSG_DONTROUTE|MSG_NOSIGNAL to sendmmsg.
Pass MSG_DONTWAIT to recvmmsg.
* tests/mmsg.expected: Update.
2016-01-11 01:05:34 +00:00
6e815ce640 mmsg.test: prefer direct sendmmsg/recvmmsg syscalls to libc wrappers
* tests/mmsg.c: Include <sys/syscall.h>.
Check for __NR_sendmmsg as an alternative to HAVE_SENDMMSG.
[!HAVE_STRUCT_MMSGHDR] (struct mmsghdr): Define.
(send_mmsg, recv_mmsg): New functions.
(main): Use them instead of sendmmsg and recvmmsg.

Reported-by: Szabolcs Nagy <nsz@port70.net>
2016-01-11 01:03:19 +00:00
8df07e1039 sigreturn.test: use RT_5 signal number instead of RT_2
Make the test compatible with musl libc that uses RT_2 internally.

* tests/sigreturn.c (main): Replace RT_2 with RT_5.
* tests/sigreturn.test: Likewise.

Reported-by: Szabolcs Nagy <nsz@port70.net>
2016-01-10 22:48:51 +00:00
5b87572952 avr32: wire up accept4 syscall
* linux/avr32/syscallent.h [321]: Add accept4 entry.
2016-01-10 21:38:03 +00:00
7de53317ab sparc64: fix names of {s,g}etres{u,g}id syscalls
* linux/sparc64/syscallent.h [108 ... 111]: Use sparc64 syscall names.
2016-01-09 22:54:53 +00:00
b663fd990b sparc64: remove sparc32 syscall entries
* linux/sparc64/syscallent.h [31, 32, 35, 44, 53, 56, 69, 70, 72, 77,
82, 84, 87, 89, 91, 94, 112, 115, 155, 231]: Unassign.
2016-01-09 22:53:33 +00:00
f77c4e6d25 sparc: remove sparc64 syscall entries
* linux/sparc/syscallent.h [52, 163]: Unassign.
2016-01-09 22:47:25 +00:00
f5fb0a7249 sparc64: clone syscallent.h from sparc
* linux/sparc64/syscallent.h: Clone from linux/sparc/syscallent.h.
2016-01-09 22:44:00 +00:00
b1110543d9 sparc: fix mlock2 sysentry, wire up bind, listen, and setsockopt syscalls
* linux/sparc/syscallent.h [353]: Move mlock2 entry to 356.
[353, 354, 355]: Add bind, listen, and setsockopt entries.
* NEWS: Mention this.
2016-01-09 21:58:44 +00:00
8249eeb5d4 tests: do not use settimeofday wrapper provided by libc
Workaround limitations of settimeofday wrapper provided by musl libc.

* tests/xettimeofday.c (main): Call settimeofday using syscall().

Reported-by: Szabolcs Nagy <nsz@port70.net>
2016-01-09 13:06:31 +00:00
19ff2b2ee7 ioctl.test: robustify against libcs invoking ioctl syscall on their own
* tests/ioctl.test: Filter out from the log ioctl calls with standard
descriptor arguments.

Reported-by: Szabolcs Nagy <nsz@port70.net>
2016-01-09 01:44:19 +00:00
2720a61832 alpha: enhance decoding of getxpid, getxuid, and getxgid syscalls
Print the second return value of getxpid, getxuid, and getxgid syscalls
that return a pair of values using the same mechanism as pipe syscall.

* alpha.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* linux/alpha/syscallent.h [20]: Change SEN(getpid) to SEN(getxpid).
[24]: Change SEN(getuid) to SEN(getxuid).
[47]: Change SEN(getgid) to SEN(getxgid).
* NEWS: Mention this enhancement.
* tests/uid.awk: Update for getxgid output change.
* tests/uid.test: Cleanup.
* tests/getxxid.c: New file.
* tests/getxxid.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add getxxid.
(TESTS): Add getxxid.test.
* tests/.gitignore: Add getxxid.
2016-01-09 00:09:04 +00:00
b61b2d820f Cleanup parser of getpagesize syscall
* mem.c (SYS_FUNC(getpagesize)): Decode on entering syscall.
2016-01-08 19:20:05 +00:00
fbec510297 alpha: alias getdtablesize to printargs
* linux/dummy.h [ALPHA] (sys_getdtablesize): Alias to printargs.
* desc.c [ALPHA] (SYS_FUNC(getdtablesize)): Remove.
2016-01-08 18:53:27 +00:00
6833d61090 tests: change text marker in fork-f and vfork-f tests
Use chdir syscalls instead of pwrite64 syscalls as a method of inserting
text markers into strace output because the former are more portable.

* tests/fork-f.c (logit): Rename to logit_. Use chdir instead of pwrite.
(logit): New macro wrapper around logit_.
(main): Update expected output.
* tests/vfork-f.c: Likewise.
* tests/fork-f.test: Update.
2016-01-08 02:45:05 +00:00
be1cb92c72 Fix printing of 32-bit times syscall return value on 64-bit architectures
This change complements commit v4.9-359-gd93d9f8 by fixing
RVAL_UDECIMAL case.
The only syscall that appears to be affected is the times syscall.

* syscall.c (trace_syscall_exiting): In case of RVAL_UDECIMAL,
when current personality is 32-bit, print 32-bit return code.
* NEWS: Mention this fix.

Reported-by: Steve McIntyre <steve@einval.com>
2016-01-07 19:47:23 +00:00
1eabdb3c99 tests/vfork-f.c: support platforms without vfork
On some platforms, e.g. hppa glibc, vfork() is implemented using fork
syscall, so the test cannot rely on the parent process remaining blocked
until the child process either terminates or calls execve.

* tests/vfork-f.c (main): Explicitly block the parent until the child
either terminates or calls execve.
2016-01-07 02:11:58 +00:00
6bf08e3e4a Fix and enhance decoding of sched_[gs]etaffinity syscalls
Print cpu_set_t as a set of integers, similar to the way
fd_set is printed as a set of descriptors.

* affinity.c: Include <sched.h>.
(get_cpuset_size): New function.
(print_affinitylist): Rewrite using get_cpuset_size and next_set_bit.
(sched_getaffinity, sched_setaffinity): Print first two args as ints.
* NEWS: Mention this enhancement.
* tests/sched_xetaffinity.c: New file.
* tests/sched_xetaffinity.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add sched_xetaffinity.
(TESTS): Add sched_xetaffinity.test.
* tests/.gitignore: Add sched_xetaffinity.

Reported-by: Joe Korty <joe.korty@ccur.com>
2016-01-07 02:11:55 +00:00
6267e4b0e3 tests: convert epoll_create1.test from match_grep to match_diff
* tests/epoll_create1.c (main): Print expected output.
* tests/epoll_create1.test: Use match_diff instead of match_grep.
* tests/epoll_create1.expected: Remove.
* tests/Makefile.am (EXTRA_DIST): Remove epoll_create1.expected.
2016-01-06 16:08:07 +00:00
6e65922a32 tests/struct_flock.c: use libtests
* tests/struct_flock.c (create_sample): Return void,
all callers changed.  Use perror_msg_and_fail.
* tests/fcntl.c: Use SKIP_MAIN_UNDEFINED.
* tests/fcntl64.c: Likewise.
2016-01-06 16:06:35 +00:00
c83746acf7 tests/file_handle.c: use libtests
* tests/file_handle.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert and perror_msg_and_skip.
2016-01-06 16:01:46 +00:00
6feccf199e tests/uid32.c: use libtests
* tests/uid32.c: Use SKIP_MAIN_UNDEFINED.
2016-01-06 15:58:14 +00:00
67c998b7d4 tests/uid16.c: use libtests
* tests/uid16.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 15:57:45 +00:00
eb81ecf033 tests/uid.c: use libtests
* tests/uid.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 15:57:17 +00:00
ea56b5ba3f tests/netlink_unix_diag.c: use libtests
* tests/netlink_unix_diag.c (send_query, check_responses, main):
Use perror_msg_and_skip.
2016-01-06 15:55:12 +00:00
285c3f453a tests/netlink_inet_diag.c: use libtests
* tests/netlink_inet_diag.c (send_query, check_responses, main):
Use perror_msg_and_skip.
2016-01-06 15:53:45 +00:00
82d1fd14f1 tests/readdir.c: use libtests
* tests/readdir.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 12:03:57 +00:00
2e00fe9155 tests/getdents64.c: use libtests
* tests/getdents64.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 12:03:37 +00:00
74769e99cd tests/getdents.c: use libtests
* tests/getdents.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 12:02:55 +00:00
29e5bde776 tests/ipc_shm.c: use libtests
* tests/ipc_shm.c (cleanup): New function.
(main): Use it and perror_msg_and_skip.
2016-01-06 11:59:58 +00:00
efb134041e tests/ipc_sem.c: use libtests
* tests/ipc_sem.c (cleanup): New function.
(main): Use it and perror_msg_and_skip.
2016-01-06 11:59:29 +00:00
3ba7feca53 tests/ipc_msg.c: use libtests
* tests/ipc_msg.c (cleanup): New function.
(main): Use it and perror_msg_and_skip.
2016-01-06 11:59:06 +00:00
4e4958e0f9 tests/ipc_msgbuf.c: use libtests
* tests/ipc_msgbuf.c (cleanup): New function.
(main): Use it and perror_msg_and_skip.
2016-01-06 11:55:13 +00:00
bbbb97fb30 tests/mq.c: use libtests
* tests/mq.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 11:52:43 +00:00
00777042c4 tests/utimensat.c: use libtests
* tests/utimensat.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert and perror_msg_and_skip.
2016-01-06 11:49:27 +00:00
647e7953ce tests/ppoll.c: use libtests
* tests/ppoll.c (main): Use assert, perror_msg_and_skip,
and perror_msg_and_fail.
2016-01-06 11:44:32 +00:00
4e66672923 tests/mmsg.c: use libtests
* tests/mmsg.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 11:43:08 +00:00
2c59f1e482 tests/ip_mreq.c: use libtests
* tests/ip_mreq.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 11:42:10 +00:00
cf40111be1 tests/ioctl.c: use libtests
* tests/ioctl.c: Use SKIP_MAIN_UNDEFINED.
(main): Use %m printf format specifier.
2016-01-06 11:40:00 +00:00
b736a05c56 tests/pipe.c: use libtests
* tests/pipe.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_fail and perror_msg_and_skip.
2016-01-06 11:38:05 +00:00
a380ba0f9b tests/getrandom.c: use libtests
* tests/getrandom.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 11:36:54 +00:00
0b75320910 tests/signalfd.c: use libtests
* tests/signalfd.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 11:35:23 +00:00
7fce908de0 tests/pc.c: use libtests
* tests/pc.c (main): Use assert, get_page_size, perror_msg_and_fail,
and perror_msg_and_skip.
2016-01-06 11:33:13 +00:00
73aa88a619 tests/uio.c: use libtests
* tests/uio.c: Use SKIP_MAIN_UNDEFINED.
2016-01-06 11:31:48 +00:00
b2ae749ab1 tests/bpf.c: use libtests
* tests/bpf.c: Use SKIP_MAIN_UNDEFINED.
(main) Use perror_msg_and_skip.
2016-01-06 11:29:16 +00:00
9ad4409a64 tests/aio.c: use libtests
* tests/aio.c: Use SKIP_MAIN_UNDEFINED.
(main) Use perror_msg_and_skip.
2016-01-06 11:27:15 +00:00
05a27ea2f6 tests/sched_xetattr.c: use libtests
* tests/sched_xetattr.c: Use SKIP_MAIN_UNDEFINED.
(main) Use perror_msg_and_skip.
2016-01-06 11:25:47 +00:00
2d161f5bad tests/wait.c: use libtests
* tests/wait.c (main): Use perror_msg_and_fail.
2016-01-06 11:25:00 +00:00
f90f69fa32 tests/vfork-f.c: use libtests
* tests/vfork-f.c (main): Use assert and perror_msg_and_fail.
2016-01-06 11:24:44 +00:00
237fbcd966 tests/fork-f.c: use libtests
* tests/fork-f.c (main): Use assert and perror_msg_and_fail.
2016-01-06 11:24:29 +00:00
a68d7aca2a tests/userfaultfd.c: use libtests
* tests/userfaultfd.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert.
2016-01-06 10:01:20 +00:00
f03712ef1a tests/mlock2.c: use libtests
* tests/mlock2.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert.
2016-01-06 10:00:44 +00:00
d3bd308162 tests/membarrier.c: use libtests
* tests/membarrier.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert.
2016-01-06 09:59:46 +00:00
02b71669df tests/nanosleep.c: use libtests
* tests/nanosleep.c (main): Use assert, perror_msg_and_fail,
and perror_msg_and_skip.
2016-01-06 09:56:09 +00:00
3a7c659e76 tests/timerfd_xettime.c: use libtests
* tests/timerfd_xettime.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 09:51:37 +00:00
0566d548f9 tests/timer_xettime.c: use libtests
* tests/timer_xettime.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 09:50:44 +00:00
21bbc14575 tests/timer_create.c: use libtests
* tests/timer_create.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 09:49:32 +00:00
9d499b5128 tests/clock_xettime.c: use libtests
* tests/clock_xettime.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-06 09:48:05 +00:00
4bd7cad240 tests/clock_nanosleep.c: use libtests
* tests/clock_nanosleep.c (main): Use assert and perror_msg_and_skip.
2016-01-06 09:46:29 +00:00
5bf0eb0859 tests/truncate64.c: use libtests
* tests/truncate64.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert and perror_msg_and_skip.
2016-01-06 09:39:07 +00:00
89eb888ebf tests/truncate.c: use libtests
* tests/truncate.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert and perror_msg_and_skip.
2016-01-06 09:37:55 +00:00
8efd324255 tests/ftruncate64.c: use libtests
* tests/ftruncate64.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert and perror_msg_and_skip.
2016-01-06 09:37:42 +00:00
e4c6592c15 tests/ftruncate.c: use libtests
* tests/ftruncate.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert and perror_msg_and_skip.
2016-01-06 09:37:10 +00:00
a79617a637 tests/llseek.c: use libtests
* tests/llseek.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert and perror_msg_and_skip.
2016-01-05 23:28:15 +00:00
b699cb7230 tests/lseek.c: use libtests
* tests/lseek.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert and perror_msg_and_skip.
2016-01-05 23:27:42 +00:00
3f6a552e1e tests/readlinkat.c: use libtests
* tests/readlinkat.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-05 23:27:05 +00:00
4b86fdbd5f tests/readlink.c: use libtests
* tests/readlink.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-05 23:26:13 +00:00
c2c840d40e tests/xattr.c: use libtests
* tests/xattr.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-05 23:18:25 +00:00
c497c96179 tests/seccomp.c: use libtests
* tests/seccomp.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_fail and perror_msg_and_skip.
2016-01-05 23:17:29 +00:00
fa63468f55 tests/restart_syscall.c: use libtests
* tests/restart_syscall.c (main): Use assert, perror_msg_and_fail,
and perror_msg_and_skip.
2016-01-05 23:14:25 +00:00
91a6ef6648 tests/inet-cmsg.c: use libtests
* tests/inet-cmsg.c (main): Use perror_msg_and_skip.
2016-01-05 23:13:41 +00:00
8cad05c5ef tests/eventfd.c: use libtests
* tests/eventfd.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip.
2016-01-05 23:12:51 +00:00
69fe020a23 tests/epoll_create1.c: use libtests
* tests/epoll_create1.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert and perror_msg_and_skip.
2016-01-05 23:11:48 +00:00
bde121b849 tests/mmap.c: use libtests
* tests/mmap.c (main): Use get_page_size and perror_msg_and_fail.
2016-01-05 23:07:59 +00:00
18eeb96799 tests/fanotify_mark.c: use libtests
* tests/fanotify_mark.c: Use SKIP_MAIN_UNDEFINED.
2016-01-05 23:06:14 +00:00
af364e1ec4 tests/inet-accept-connect-send-recv.c: use libtests
* tests/inet-accept-connect-send-recv.c (main): Use perror_msg_and_skip
and perror_msg_and_fail.
2016-01-05 23:04:30 +00:00
2f5786c0fc tests/net-accept-connect.c: use libtests
* tests/net-accept-connect.c (main): Use perror_msg_and_skip
and perror_msg_and_fail.
2016-01-05 23:03:26 +00:00
9b3c77c965 tests/unix-pair-send-recv.c: use libtests
* tests/unix-pair-send-recv.c (main): Use perror_msg_and_skip
and perror_msg_and_fail.
2016-01-05 23:02:21 +00:00
423dd59330 tests/xselect.c: use libtests
* tests/xselect.c (main): Use assert, perror_msg_and_fail,
and perror_msg_and_skip.
2016-01-06 00:57:14 +00:00
8d2674ea81 tests/pselect6.c: use libtests
* tests/pselect6.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert, perror_msg_and_fail, and perror_msg_and_skip.
2016-01-06 00:57:08 +00:00
fc3e11bcdc tests/oldselect.c: use libtests
* tests/oldselect.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_fail and perror_msg_and_skip.
2016-01-05 22:53:28 +00:00
1bda9d71b2 tests/select.c: use libtests
* tests/select.c: Use SKIP_MAIN_UNDEFINED.
2016-01-05 22:52:39 +00:00
0827838905 tests/_newselect.c: use libtests
* tests/_newselect.c: Use SKIP_MAIN_UNDEFINED.
2016-01-05 22:51:44 +00:00
8655cb55ec tests/fstatat.c: use libtests
* tests/fstatat.c: Use SKIP_MAIN_UNDEFINED.
2016-01-05 22:41:28 +00:00
cebe881059 tests/newfstatat.c: use libtests
* tests/newfstatat.c: Use SKIP_MAIN_UNDEFINED.
2016-01-05 22:40:51 +00:00
2acad73184 tests/fstatat64.c: use libtests
* tests/fstatat64.c: Use SKIP_MAIN_UNDEFINED.
2016-01-05 22:40:17 +00:00
6c52f2b0fa tests/xstatx.c: use libtests
* tests/xstatx.c: Use SKIP_MAIN_UNDEFINED.
2016-01-05 22:37:42 +00:00
18757252c5 tests/stat64.c: use libtests
* tests/stat64.c: Use SKIP_MAIN_UNDEFINED.
2016-01-05 22:35:52 +00:00
9e51ce1751 tests/stat.c: use libtests
* tests/stat.c: Use SKIP_MAIN_UNDEFINED.
2016-01-05 22:35:11 +00:00
929bc6fba1 tests/lstat64.c: use libtests
* tests/lstat64.c: Use SKIP_MAIN_UNDEFINED.
2016-01-05 22:34:30 +00:00
096a436b91 tests/lstat.c: use libtests
* tests/lstat.c: Use SKIP_MAIN_UNDEFINED.
2016-01-05 22:33:26 +00:00
fc2c61498c tests/fstat64.c: use libtests
* tests/fstat64.c: Use SKIP_MAIN_UNDEFINED.
2016-01-05 22:32:37 +00:00
2902146c1c tests/fstat.c: use libtests
* tests/fstat.c: Use SKIP_MAIN_UNDEFINED.
2016-01-05 22:31:46 +00:00
ec6b85e59c tests/statfs.c: use libtests
* tests/statfs.c (main): Use perror_msg_and_fail.
2016-01-05 22:28:51 +00:00
d88c2d8cc3 tests/xettimeofday.c: use libtests
* tests/xettimeofday.c (main): Use assert and perror_msg_and_skip.
2016-01-06 00:14:36 +00:00
7994f14ae5 tests/utime.c: use libtests
* tests/utime.c (main): Use assert and perror_msg_and_skip.
2016-01-06 00:14:36 +00:00
55095d06e9 tests/filter-unavailable.c: use libtests
* tests/filter-unavailable.c (main): Use perror_msg_and_fail.
2016-01-06 00:14:36 +00:00
339a15b619 tests/scm_rights.c: use libtests
* tests/scm_rights.c (main): Use perror_msg_and_fail and perror_msg_and_skip.
2016-01-06 00:14:36 +00:00
e301e98342 tests/caps.c: use libtests
* tests/caps.c (main): Use perror_msg_and_skip.
2016-01-06 00:14:36 +00:00
3174812d8d tests/rt_sigqueueinfo.c: use libtests
* tests/rt_sigqueueinfo.c (main): Use assert and perror_msg_and_skip.
2016-01-06 00:14:36 +00:00
55deec66a9 tests/umount.c: use libtests
* tests/umount.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_fail.
2016-01-06 00:14:36 +00:00
fa8d4491e3 tests/umount2.c: use libtests
* tests/umount2.c (main): Use perror_msg_and_fail.
2016-01-06 00:05:41 +00:00
6a641fce5d tests/times.c: use libtests
* tests/times.c (main): Use perror_msg_and_fail and perror_msg_and_skip.
2016-01-05 23:44:59 +00:00
f2e29da95f tests/times-fail.c: use assert
* tests/times-fail.c (main): Use assert.
2016-01-04 23:43:09 +00:00
82924318f0 tests/memfd_create.c: use libtests
* tests/memfd_create.c: Use SKIP_MAIN_UNDEFINED.
2016-01-04 23:41:27 +00:00
71ac6ff9e8 tests/execveat.c: use libtests
* tests/execveat.c: Use SKIP_MAIN_UNDEFINED.
2016-01-04 23:40:24 +00:00
c47adebc67 tests/xetitimer.c: use libtests
* tests/xetitimer.c (main): Use perror_msg_and_skip.
2016-01-04 23:38:19 +00:00
10a69f8108 tests/sysinfo.c: use libtests
* tests/sysinfo.c (main): Use perror_msg_and_skip.
2016-01-05 23:37:14 +00:00
9c8654e3e0 tests/sigaltstack.c: use libtests
* tests/sigaltstack.c (main): Use perror_msg_and_skip.
2016-01-05 23:37:01 +00:00
463bb88de1 tests/adjtimex.c: use libtests
* tests/adjtimex.c (main): Use perror_msg_and_skip.
2016-01-05 23:36:59 +00:00
cadf3543f7 tests/xet_robust_list.c: use libtests
* tests/xet_robust_list.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip and tail_alloc.
2016-01-05 23:25:00 +00:00
4cd38c0d77 tests/umovestr2.c: use libtests
* tests/umovestr2.c (main): Use get_page_size and tail_alloc.
2016-01-05 23:24:50 +00:00
4eb5d79c45 tests/umovestr.c: use libtests
* tests/umovestr.c (main): Use perror_msg_and_skip and tail_alloc.
2016-01-05 23:24:36 +00:00
6a733fd461 tests/time.c: use libtests
* tests/time.c: Use SKIP_MAIN_UNDEFINED.
(main): Use perror_msg_and_skip and tail_alloc.
2016-01-05 23:17:11 +00:00
164e577824 tests/sendfile64.c: use libtests
* tests/sendfile64.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert, perror_msg_and_fail, perror_msg_and_skip,
and tail_alloc.
2016-01-05 23:17:11 +00:00
54ba3b5c32 tests/sendfile.c: use libtests
* tests/sendfile.c: Use SKIP_MAIN_UNDEFINED.
(main): Use assert, perror_msg_and_fail, perror_msg_and_skip,
and tail_alloc.
2016-01-05 23:17:11 +00:00
0c8853c3c3 tests: include tests.h instead of config.h
Automatically edit tests/*.c files using the following perl one-liner:

perl -0777 -pi -e \
's/#ifdef HAVE_CONFIG_H\n# include "config\.h"\n#endif\n*/#include "tests.h"\n/' \
tests/*.c
2016-01-05 23:17:11 +00:00
87e6b230ff tests: introduce libtests
Introduce tests/libtests.a with common functions for use in tests.

* tests/tests.h: New file.
* tests/error_msg.c: Likewise.
* tests/tail_alloc.c: Likewise.
* tests/get_page_size.c: Likewise.
* tests/Makefile.am (libtests_a_SOURCES, libtests_a_CPPFLAGS,
check_LIBRARIES, LDADD): New variables.
(clock_xettime_LDADD, filter_unavailable_LDADD, mq_LDADD,
pc_LDADD, times_LDADD): Add $(LDADD).
* tests/.gitignore: Add libtests.a.
2016-01-05 23:17:07 +00:00
10eab9db85 tests: enable strace-k.test only for --with-libunwind configurations
Also, since -k option does not support multiple personalities,
add strace-k.test to XFAIL_TESTS when running mpers tests.

* tests/Makefile.am (MPERS_NAME, LIBUNWIND_TESTS, XFAIL_TESTS_,
XFAIL_TESTS_m32, XFAIL_TESTS_mx32, XFAIL_TESTS): New variables.
[USE_LIBUNWIND] (LIBUNWIND_TESTS): Add strace-k.test.
(TESTS): Replace strace-k.test with $(LIBUNWIND_TESTS).
* bootstrap: Substitute MPERS_NAME variable in tests-*/Makefile.am.
* tests/strace-k.test: Do not check for -k option availability.
2016-01-01 23:09:02 +00:00
f32126ba79 Move gcc compat macros to gcc_compat.h
* defs.h: Include "gcc_compat.h".
(GNUC_PREREQ, ATTRIBUTE_NORETURN, ATTRIBUTE_FORMAT,
ATTRIBUTE_ALIGNED, ATTRIBUTE_PACKED, ATTRIBUTE_MALLOC,
ATTRIBUTE_NOINLINE, ATTRIBUTE_ALLOC_SIZE): Move ...
* gcc_compat.h: ... here.
* Makefile.am (strace_SOURCES): Add gcc_compat.h.
2016-01-02 14:29:33 +00:00
72dc1b48b8 Move defs.h from noinst_HEADERS to strace_SOURCES
* Makefile.am (noinst_HEADERS): Move defs.h ...
(strace_SOURCES): ... here.
2015-12-31 14:15:59 +00:00
0171752084 test: remove fork.c and vfork.c
These manual tests are obsoleted by fork-f.test and vfork-f.test.

* test/fork.c: Remove.
* test/vfork.c: Remove.
* test/Makefile (PROGS): Remove fork and vfork.
* test/.gitignore: Remove fork and vfork.
2015-12-30 23:28:35 +00:00
78db0f2dcf tests: add fork-f.test and vfork-f.test
Check how strace -f follows fork and vfork syscalls.

* tests/fork-f.c: New file.
* tests/fork-f.test: New test.
* tests/vfork-f.c: New file.
* tests/vfork-f.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add fork-f and vfork-f.
(TESTS): Add fork-f.test and vfork-f.test.
* tests/.gitignore: Add fork-f and vfork-f.
2015-12-30 23:08:32 +00:00
aef5e14ba2 Set SYSCALL_NEVER_FAILS flag for getpid, getppid and gettid syscall
* linux/*/syscallent*.h (getpid, getppid, gettid): Set NF flag.
2015-12-29 01:15:20 +00:00
dd039b74ef Set SYSCALL_NEVER_FAILS flag for umask syscall
Linux kernel always ANDs umask argument with 0700 and therefore
this syscall never fails.

* linux/*/syscallent*.h (umask): Set NF flag.
2015-12-29 01:15:06 +00:00
552f2f62fd alpha, ia64, mips, nios2, powerpc, sparc: always check for syscall error
On architectures that use dedicated registers to report syscall errors,
check for syscall error condition regardless of SYSCALL_NEVER_FAILS flag
in the syscall entry.  On architectures that use negated errno
semantics, there is no way to distinguish a syscall error from a valid
return code that looks like a syscall error, and the check for
SYSCALL_NEVER_FAILS flag remains the only way to tell one case
from another.

* linux/alpha/get_error.c (get_error): Ignore check_errno.
* linux/ia64/get_error.c: Likewise.
* linux/mips/get_error.c: Likewise.
* linux/nios2/get_error.c: Likewise.
* linux/powerpc/get_error.c: Likewise.
* linux/sparc/get_error.c: Likewise.
* linux/sparc64/get_error.c: Likewise.
2015-12-27 01:02:53 +00:00
0297e0c067 Handle unlikely errors from personality syscall
Despite being marked as SYSCALL_NEVER_FAILS, personality syscall still
might report a failure on some architectures due to obscure kernel
bugs.  Check for this unlikely case and let users know that their
kernel has gone bananas.

* personality.c (SYS_FUNC(personality)): Do not parse syscall return
value in case of syserror.
2015-12-27 00:18:35 +00:00
abfa939f57 Do not truncate return value of get{,e}[ug]id and setfs[ug]id syscalls
This should not be a user visible change unless the kernel does
something completely unexpected.  In the latter case, let user see
what is going on.

* uid.c (SYS_FUNC(getuid), SYS_FUNC(setfsuid)): Do not truncate
tcp->u_rval to uid_t on exiting syscall, return RVAL_DECODED.
2015-12-27 00:18:03 +00:00
727508b077 Enhance personality syscall decoding
* xlat/personality_options.in: Split into ...
* xlat/personality_types.in: ... personality types and ...
* xlat/personality_flags.in: ... personality flags.
* personality.c: Include "xlat/personality_types.h"
and "xlat/personality_flags.h" instead of "xlat/personality_options.h".
(SYS_FUNC(personality)): Print PER_MASK part of personality as
a symbolic value, and the rest of personality as a set of flags.
* tests/personality.c (main): Add more test cases.
* tests/personality.test: Update.
2015-12-26 02:10:46 +00:00
a147bf8500 sh, sh64: fix syscall flags in several syscall entries
* linux/sh/syscallent.h (geteuid32, getegid32, setfsuid32, setfsgid32):
Set SYSCALL_NEVER_FAILS flag.
(fchown32): Set TRACE_DESC flag.
* linux/sh64/syscallent.h: Likewise.
2015-12-25 21:15:59 +00:00
1e155f76e7 Print personality value 0xffffffff properly
Value 0xffffffff of personality syscall first argument has a special
meaning, it is not a set of personality flags.

* personality.c (SYS_FUNC(personality)): If personality equals
to 0xffffffff, print it verbatim.
* tests/personality.c (main): Test it.
2015-12-25 21:14:57 +00:00
f7423af0df tests: add personality.test
* tests/personality.c: New file.
* tests/personality.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add personality.
(TESTS): Add personality.test.
* tests/.gitignore: Add personality.
2015-12-25 02:27:06 +00:00
97cbf69756 Enhance personality syscall decoding
* personality.c (SYS_FUNC(personality)): On entering syscall,
print first argument not as a hex value but as a set of flags.
On exiting syscall, print return code as a set of flags.
* NEWS: Mention this enhancement.
2015-12-25 00:46:07 +00:00
ffb6c55d7d Set SYSCALL_NEVER_FAILS flag for personality syscall
Starting with commit
v2.6.29-6609-g11d06b2a1e5658f448a308aa3beb97bacd64a940, personality
syscall never fails to set the personality, but before commit
v2.6.35-rc1-372-g485d527 it still could return an error.
Starting with that commit, personality syscall never returns an error.

* linux/*/syscallent.h: Set SYSCALL_NEVER_FAILS flag in personality
syscall entries.
2015-12-25 00:45:43 +00:00
3eba72b9ab Add personality emulation flags
* xlat/personality_options.in: Add UNAME26, ADDR_NO_RANDOMIZE,
FDPIC_FUNCPTRS, MMAP_PAGE_ZERO, ADDR_COMPAT_LAYOUT, READ_IMPLIES_EXEC,
ADDR_LIMIT_32BIT, SHORT_INODE, WHOLE_SECONDS, STICKY_TIMEOUTS,
and ADDR_LIMIT_3GB.
2015-12-24 17:37:35 +00:00
dd1a80c8d2 arc, metag, nios2, or1k, tile: fix build
Fix build regression introduced by commit
34683e3926.

* linux/32/syscallent.h: Add sys_ prefix to ARCH_mmap and mmap.
* linux/arc/syscallent.h: Add sys_ prefix to ARCH_mmap and mmap_pgoff.
* linux/nios2/syscallent.h: Likewise.
* linux/or1k/syscallent.h: Likewise.
* linux/tile/syscallent1.h: Add sys_ prefix to ARCH_mmap and sys_mmap_4koff.
* pathtrace.c (pathtrace_match): Handle SEN_ARCH_mmap.
* NEWS: Mention this build fix.

Reported-by: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
2015-12-24 17:36:58 +00:00
24fb8efa27 packages: remove acl development library from build dependencies
Starting with commit v4.9-46-g681452b that removed all references
to acl.h, we no longer use acl development library.

* .travis.yml (addons.apt.packages): Remove libacl1-dev.
* strace.spec (BuildRequires): Remove libacl-devel.
2015-12-24 00:02:36 +00:00
796fbe085f packages/x86_64: enable experimental -k option
* debian/control (Build-Depends) [amd64]: Add libunwind-dev.
* strace.spec (BuildRequires) [x86_64]: Add libunwind-devel.
2015-12-23 04:36:10 +00:00
cbde4e2671 maint: post-release administrivia
* NEWS: Add header line for the next release.
2015-12-23 04:35:59 +00:00
807 changed files with 30420 additions and 7236 deletions

3
.gitignore vendored
View File

@ -4,6 +4,8 @@
.libs
.version
.*.swp
*.gcda
*.gcno
*.gdb
core
.gdbinit
@ -65,3 +67,4 @@ Makefile.in
/native_printer_decls.h
/native_printer_defs.h
/printers.h
/*.mpers.i

View File

@ -6,20 +6,34 @@ script: ./travis-ci.sh
sudo: required
compiler:
- gcc
- clang-3.6
- musl-gcc
addons:
apt:
packages:
- gcc-multilib
- libacl1-dev
- lcov
install:
- pip install --user codecov
env:
global:
- ENABLE_GCC_WERROR="--enable-gcc-Werror"
- SLEEP_A_BIT="sleep 0.1"
- SLEEP_A_BIT="sleep 0.2"
- VERBOSE="1"
matrix:
- TARGET=x86_64
- TARGET=x32
- TARGET=x86
matrix:
include:
- env: TARGET=x86_64
- env: TARGET=x32
- env: TARGET=x86
exclude:
- compiler: clang-3.6
env: TARGET=x32
- compiler: musl-gcc
env: TARGET=x32
- compiler: musl-gcc
env: TARGET=x86

View File

@ -1,7 +1,7 @@
# Automake input for strace.
#
# Copyright (c) 2002-2009 Roland McGrath <roland@redhat.com>
# Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
# Copyright (c) 2006-2016 Dmitry V. Levin <ldv@altlinux.org>
# Copyright (c) 2008-2015 Mike Frysinger <vapier@gentoo.org>
# Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
# All rights reserved.
@ -56,17 +56,32 @@ AM_CPPFLAGS = -I$(builddir)/$(OS)/$(ARCH) \
include xlat/Makemodule.am
strace_CPPFLAGS = $(AM_CPPFLAGS)
strace_CFLAGS = $(AM_CFLAGS)
strace_LDFLAGS =
strace_LDADD =
noinst_LIBRARIES =
strace_LDADD = libstrace.a
noinst_LIBRARIES = libstrace.a
libstrace_a_CPPFLAGS = $(strace_CPPFLAGS)
libstrace_a_CFLAGS = $(strace_CFLAGS)
libstrace_a_SOURCES = \
fstatfs.c \
fstatfs64.c \
statfs.c \
statfs64.c \
sync_file_range.c \
sync_file_range2.c \
upeek.c \
# end of libstrace_a_SOURCES
strace_SOURCES = \
access.c \
affinity.c \
aio.c \
alpha.c \
bjm.c \
block.c \
bpf.c \
btrfs.c \
cacheflush.c \
capability.c \
caps0.h \
@ -74,7 +89,9 @@ strace_SOURCES = \
chdir.c \
chmod.c \
clone.c \
copy_file_range.c \
count.c \
defs.h \
desc.c \
dirent.c \
dirent64.c \
@ -91,15 +108,20 @@ strace_SOURCES = \
fcntl.c \
fetch_seccomp_fprog.c \
fetch_struct_flock.c \
fetch_struct_statfs.c \
file.c \
file_handle.c \
file_ioctl.c \
fs_x_ioctl.c \
flock.c \
flock.h \
futex.c \
gcc_compat.h \
get_robust_list.c \
getcpu.c \
getcwd.c \
getrandom.c \
hdio.c \
hostname.c \
inotify.c \
io.c \
@ -134,6 +156,7 @@ strace_SOURCES = \
mtd.c \
native_defs.h \
net.c \
numa.c \
open.c \
or1k_atomic.c \
pathtrace.c \
@ -144,6 +167,7 @@ strace_SOURCES = \
print_mq_attr.c \
print_msgbuf.c \
print_sigevent.c \
print_statfs.c \
print_time.c \
print_timex.c \
printmode.c \
@ -169,6 +193,7 @@ strace_SOURCES = \
seccomp_fprog.h \
sendfile.c \
sigaltstack.c \
sigevent.h \
signal.c \
signalfd.c \
sigreturn.c \
@ -176,9 +201,9 @@ strace_SOURCES = \
socketutils.c \
sram_alloc.c \
statfs.c \
statfs.h \
strace.c \
swapon.c \
sync_file_range.c \
syscall.c \
sysctl.c \
sysinfo.c \
@ -188,6 +213,7 @@ strace_SOURCES = \
time.c \
times.c \
truncate.c \
ubi.c \
uid.c \
uid16.c \
umask.c \
@ -201,6 +227,7 @@ strace_SOURCES = \
vsprintf.c \
wait.c \
xattr.c \
xlat.h \
xmalloc.c \
# end of strace_SOURCES
@ -211,9 +238,17 @@ strace_LDFLAGS += $(libunwind_LDFLAGS)
strace_LDADD += $(libunwind_LIBS)
endif
noinst_HEADERS = defs.h
@CODE_COVERAGE_RULES@
CODE_COVERAGE_BRANCH_COVERAGE = 1
CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \
--prefix $(shell realpath -Ls $(abs_top_srcdir)/..)
CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*'
strace_CPPFLAGS += $(CODE_COVERAGE_CPPFLAGS)
strace_CFLAGS += $(CODE_COVERAGE_CFLAGS)
strace_LDADD += $(CODE_COVERAGE_LDFLAGS)
# Enable this to get link map generated
#strace_CFLAGS = $(AM_CFLAGS) -Wl,-Map=strace.mapfile
#strace_LDFLAGS += -Wl,-Map=strace.mapfile
EXTRA_DIST = \
$(man_MANS) \
@ -406,6 +441,7 @@ EXTRA_DIST = \
linux/mips/syscallent.h \
linux/mips/userent.h \
linux/mtd-abi.h \
linux/netlink_diag.h \
linux/nios2/arch_regs.c \
linux/nios2/get_error.c \
linux/nios2/get_scno.c \
@ -621,7 +657,8 @@ srpm: dist-xz
$(srcdir)/.version:
$(AM_V_GEN)echo $(VERSION) > $@-t && mv $@-t $@
strace_SOURCES_c = $(filter %.c,$(strace_SOURCES))
strace_SOURCES_c = \
$(filter %.c,$(strace_SOURCES)) $(filter %.c,$(libstrace_a_SOURCES))
sys_func.h: $(patsubst %,$(srcdir)/%,$(strace_SOURCES_c))
for f in $^; do \
@ -662,6 +699,15 @@ ioctlsort_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_FOR_BUILD)
ioctls_inc_h = $(wildcard $(srcdir)/$(OS)/$(ARCH)/ioctls_inc*.h)
ioctlent_h = $(patsubst $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%,ioctlent%,$(ioctls_inc_h))
ioctl_redefs_h = $(filter-out ioctl_redefs0.h,$(subst ioctlent,ioctl_redefs,$(ioctlent_h)))
ioctl_redefs%.h: ioctlent%.h ioctlent0.h
sort $< > $<-t
sort ioctlent0.h | comm -23 $<-t - | \
sed -n 's/^{ "\([^"]\+\)", \(0x[[:xdigit:]]\+\) },$$/#ifdef \1\n# undef \1\n# define \1 \2\n#endif/p' \
> $@-t
rm -f $<-t
mv $@-t $@
ioctlent%.h: ioctlsort%
./$< > $@
@ -675,13 +721,16 @@ ioctlsort%.o: ioctls_all%.h $(srcdir)/ioctlsort.c
ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h
cat $^ > $@
BUILT_SOURCES = $(ioctlent_h) native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h .version
CLEANFILES = $(ioctlent_h) native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h
BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) \
native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h .version
CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \
native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h
DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h
# defines mpers_source_files
include mpers.am
srcdir_mpers_source_files = $(patsubst %,$(srcdir)/%,$(mpers_source_files))
mpers_preproc_files = $(mpers_source_files:.c=.c.mpers.i)
mpers_NAME =
mpers_PREFIX = $(mpers_NAME)_
@ -689,7 +738,8 @@ mpers_DEFS = $(DEFS)
mpers_INCLUDES = $(DEFAULT_INCLUDES) $(INCLUDES)
mpers_CPPFLAGS = $(strace_CPPFLAGS) $(CPPFLAGS)
mpers_sh_opts = $(mpers_DEFS) $(mpers_INCLUDES) $(mpers_CPPFLAGS)
libmpers_CPPFLAGS = $(AM_CPPFLAGS) -DIN_MPERS
libmpers_CPPFLAGS = $(strace_CPPFLAGS) -DIN_MPERS
libmpers_CFLAGS = $(strace_CFLAGS)
# mpers targets
@ -708,6 +758,7 @@ m%_type_defs.h: $(srcdir_mpers_source_files)
echo '#undef MPERS_PRINTER_NAME' >> $@-t
echo '#define MPERS_PRINTER_NAME(printer_name) printer_name' >> $@-t
echo '#include "$(mpers_PREFIX)printer_decls.h"' >> $@-t
echo '#include MPERS_$(mpers_PREFIX)IOCTL_MACROS' >> $@-t
mv $@-t $@
m%_funcs.h: $(srcdir_mpers_source_files)
@ -719,28 +770,36 @@ m%_funcs.h: $(srcdir_mpers_source_files)
# printers
printers.h: $(srcdir_mpers_source_files)
%.c.mpers.i: $(srcdir)/%.c
$(CPP) -P $(mpers_sh_opts) -DIN_MPERS_BOOTSTRAP $< -o $@
mpers_printer_decl_pattern = ^MPERS_PRINTER_DECL(\([^,)]\+\),[[:space:]]*\([^,)]\+\),[[:space:]]*\([^)]\+\))$$
printers.h: $(mpers_preproc_files)
echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
echo 'typedef struct {' >> $@-t
for f in $^; do \
sed -n 's/^MPERS_PRINTER_DECL(\([^,]\+\),[[:space:]]*\([^)]\+\))\(.*\)/ \1 (*\2) \3;\n#define \2 MPERS_PRINTER_NAME(\2)\n/p' $$f || exit; \
sed -n 's/$(mpers_printer_decl_pattern)/ \1 (*\2)(\3);\n#define \2 MPERS_PRINTER_NAME(\2)\n/p' $$f \
|| exit; \
done >> $@-t
echo '} struct_printers;' >> $@-t
echo 'extern const struct_printers *printers;' >> $@-t
echo '#define MPERS_PRINTER_NAME(printer_name) printers->printer_name' >> $@-t
mv $@-t $@
%_printer_decls.h: $(srcdir_mpers_source_files)
%_printer_decls.h: $(mpers_preproc_files)
echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
for f in $^; do \
sed -n 's/^MPERS_PRINTER_DECL(\([^,]\+\),[[:space:]]*\([^)]\+\))\(.*\)/extern \1 $(mpers_PREFIX)\2\3;/p' $$f || exit; \
sed -n 's/$(mpers_printer_decl_pattern)/extern \1 $(mpers_PREFIX)\2(\3);/p' $$f \
|| exit; \
done >> $@-t
mv $@-t $@
%_printer_defs.h: $(srcdir_mpers_source_files)
%_printer_defs.h: $(mpers_preproc_files)
echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
for f in $^; do \
sed -n 's/^MPERS_PRINTER_DECL(\([^,]\+\),[[:space:]]*\([^)]\+\))\(.*\)/\.\2 = $(mpers_PREFIX)\2,/p' $$f || exit; \
sed -n 's/$(mpers_printer_decl_pattern)/\.\2 = $(mpers_PREFIX)\2,/p' $$f \
|| exit; \
done >> $@-t
mv $@-t $@
@ -752,6 +811,7 @@ strace_LDADD += libmpers-m32.a
noinst_LIBRARIES += libmpers-m32.a
libmpers_m32_a_SOURCES = $(mpers_source_files)
libmpers_m32_a_CPPFLAGS = $(libmpers_CPPFLAGS) -DMPERS_IS_m32 -I$(builddir)/mpers-m32
libmpers_m32_a_CFLAGS = $(libmpers_CFLAGS)
mpers_m32_targets = mpers-m32.stamp m32_type_defs.h m32_funcs.h m32_printer_decls.h m32_printer_defs.h
BUILT_SOURCES += $(mpers_m32_targets)
@ -767,6 +827,7 @@ strace_LDADD += libmpers-mx32.a
noinst_LIBRARIES += libmpers-mx32.a
libmpers_mx32_a_SOURCES = $(mpers_source_files)
libmpers_mx32_a_CPPFLAGS = $(libmpers_CPPFLAGS) -DMPERS_IS_mx32 -I$(builddir)/mpers-mx32
libmpers_mx32_a_CFLAGS = $(libmpers_CFLAGS)
mpers_mx32_targets = mpers-mx32.stamp mx32_type_defs.h mx32_funcs.h mx32_printer_decls.h mx32_printer_defs.h
BUILT_SOURCES += $(mpers_mx32_targets)

45
NEWS
View File

@ -1,3 +1,48 @@
Noteworthy changes in release 4.12 (2016-05-31)
===============================================
* Improvements
* Implemented simultaneous use of -p option and tracing of a command.
(addresses Debian bug #549942).
* Implemented caching of netlink conversations to reduce amount of time
spent in decoding socket details in -yy mode.
* Implemented -yy mode decoding of protocol:portid pairs associated with
netlink socket descriptors.
* Implemented decoding of copy_file_range, preadv2, and pwritev2 syscalls.
* Implemented dumping of preadv, preadv2, pwritev, pwritev2, and vmsplice
syscalls.
* Implemented decoding of BTRFS_* and UFFDIO_* ioctl commands.
* Enhanced decoding of BLK*, EVIOC*, RTC_*, and VIDIOC_* ioctl commands.
* Enhanced decoding of fstatfs, fstatfs64, get_mempolicy, getdents,
getdents64, getgroups, getpriority, kill, mbind, migrate_pages, mknod,
mknodat, personality, poll, ppoll, quotactl, rt_sigpending,
rt_sigqueueinfo, rt_sigtimedwait, rt_tgsigqueueinfo, sched_getaffinity,
sched_setaffinity, seccomp, set_mempolicy, setgroups, setpriority, statfs,
statfs64, tgkill, waitid, and xattr family syscalls.
* Enhanced decoding of getxpid, getxuid, and getxgid syscalls on alpha.
* Enhanced decoding of pipe syscall on alpha, ia64, mips, sh, and sparc.
* Added decoding of bind, listen, and setsockopt direct syscalls on sparc.
* Added decoding of osf_statfs64 and osf_fstatfs64 syscalls on alpha.
* Added decoding of fadvise64 and fadvise64_64 on s390.
* Updated lists of AF_*, BPF_MAP_TYPE_*, CLONE_*, EPOLL*, IPV6_*, MADV_*,
MSG_*, PTRACE_*, SEGV_*, SO_*, SOL_*, *_MAGIC, and quotactl constants.
* Updated lists of ioctl commands from Linux 4.6.
* Bug fixes
* Fixed build on arc, metag, nios2, or1k, and tile architectures.
* Fixed decoding of 32-bit times syscall return value on 64-bit architectures.
* Fixed decoding of mlock2 syscall on sparc.
* Fixed decoding of osf_shmat syscall on alpha.
* Fixed decoding of syscalls unknown to the kernel on s390/s390x.
(addresses Debian bug #485979 and Fedora bug #1298294).
* Fixed decoding of preadv syscall in case of short read.
* Fixed decoding and dumping of readv syscall in case of short read.
* Fixed dumping of recvmsg and recvmmsg syscalls in case of short read.
* Fixed decoding of mincore syscall's last argument.
* Fixed remaining errors in mapping between syscall numbers and numbers
of syscall arguments.
* Applied various fixes to strace-graph script.
Noteworthy changes in release 4.11 (2015-12-21)
===============================================

View File

@ -8,7 +8,7 @@ be included conditionally;
(containing definitions of these types or other behaviour-affecting
defines);
* printers should be defined
as MPERS_PRINTER_DECL(return_type, function_name)(args),
as MPERS_PRINTER_DECL(return_type, function_name, args),
inside files that include MPERS_DEFS these printers should be called
as MPERS_FUNC_NAME(function_name)(args), in other files
they should be called just as function_name(args).

9
README.md Normal file
View File

@ -0,0 +1,9 @@
This is [strace](http://strace.io) -- a diagnostic, debugging and instructional userspace utility for Linux. It is used to monitor interactions between processes and the Linux kernel, which include system calls, signal deliveries, and changes of process state. The operation of strace is made possible by the kernel feature known as [ptrace](http://man7.org/linux/man-pages/man2/ptrace.2.html).
strace is released under a Berkeley-style license at the request of Paul Kranenburg; see the file [COPYING](https://raw.githubusercontent.com/strace/strace/master/COPYING) for details.
See the file [NEWS](https://raw.githubusercontent.com/strace/strace/master/NEWS) for information on what has changed in recent versions.
Please send bug reports and enhancements to [the strace mailing list](https://lists.sourceforge.net/lists/listinfo/strace-devel).
[![Build Status](https://travis-ci.org/strace/strace.svg?branch=master)](https://travis-ci.org/strace/strace) [![Code Coverage](https://codecov.io/github/strace/strace/coverage.svg?branch=master)](https://codecov.io/github/strace/strace?branch=master)

View File

@ -1,6 +1,6 @@
/*
* Copyright (c) 2002-2004 Roland McGrath <roland@redhat.com>
* Copyright (c) 2009-2015 Dmitry V. Levin <ldv@altlinux.org>
* Copyright (c) 2009-2016 Dmitry V. Levin <ldv@altlinux.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -27,56 +27,82 @@
*/
#include "defs.h"
#include <sched.h>
static unsigned int
get_cpuset_size(void)
{
static unsigned int cpuset_size;
if (!cpuset_size) {
pid_t pid = getpid();
cpuset_size = 128;
while (cpuset_size &&
sched_getaffinity(pid, cpuset_size, NULL) == -1 &&
EINVAL == errno) {
cpuset_size <<= 1;
}
if (!cpuset_size)
cpuset_size = 128;
}
return cpuset_size;
}
static void
print_affinitylist(struct tcb *tcp, const unsigned long addr, const unsigned int len)
{
unsigned long w;
const unsigned int size = len * sizeof(w);
const unsigned long end = addr + size;
unsigned long cur, abbrev_end;
const unsigned int max_size = get_cpuset_size();
const unsigned int umove_size = len < max_size ? len : max_size;
const unsigned int size =
(umove_size + current_wordsize - 1) & -current_wordsize;
const unsigned int ncpu = size * 8;
void *cpu;
if (!verbose(tcp) || (exiting(tcp) && syserror(tcp)) ||
!addr || !len || size / sizeof(w) != len || end < addr) {
!addr || !len || !(cpu = calloc(size, 1))) {
printaddr(addr);
return;
}
if (abbrev(tcp)) {
abbrev_end = addr + max_strlen * sizeof(w);
if (abbrev_end < addr)
abbrev_end = end;
} else {
abbrev_end = end;
if (!umoven_or_printaddr(tcp, addr, umove_size, cpu)) {
int i = 0;
const char *sep = "";
tprints("[");
for (;; i++) {
i = next_set_bit(cpu, i, ncpu);
if (i < 0)
break;
tprintf("%s%d", sep, i);
sep = " ";
}
if (size < len)
tprintf("%s...", sep);
tprints("]");
}
tprints("[");
for (cur = addr; cur < end; cur += sizeof(w)) {
if (cur > addr)
tprints(", ");
if (cur >= abbrev_end) {
tprints("...");
break;
}
if (umove_or_printaddr(tcp, cur, &w))
break;
tprintf("%lx", w);
}
tprints("]");
free(cpu);
}
SYS_FUNC(sched_setaffinity)
{
tprintf("%ld, %lu, ", tcp->u_arg[0], tcp->u_arg[1]);
print_affinitylist(tcp, tcp->u_arg[2], tcp->u_arg[1]);
const int pid = tcp->u_arg[0];
const unsigned int len = tcp->u_arg[1];
tprintf("%d, %u, ", pid, len);
print_affinitylist(tcp, tcp->u_arg[2], len);
return RVAL_DECODED;
}
SYS_FUNC(sched_getaffinity)
{
const int pid = tcp->u_arg[0];
const unsigned int len = tcp->u_arg[1];
if (entering(tcp)) {
tprintf("%ld, %lu, ", tcp->u_arg[0], tcp->u_arg[1]);
tprintf("%d, %u, ", pid, len);
} else {
print_affinitylist(tcp, tcp->u_arg[2], tcp->u_rval);
}

101
aio.c
View File

@ -154,52 +154,54 @@ print_iocb(struct tcb *tcp, const struct iocb *cb)
}
}
static bool
print_iocbp(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
{
unsigned long addr;
struct iocb cb;
if (elem_size < sizeof(long)) {
addr = * (unsigned int *) elem_buf;
} else {
addr = * (unsigned long *) elem_buf;
}
tprints("{");
if (!umove_or_printaddr(tcp, addr, &cb))
print_iocb(tcp, &cb);
tprints("}");
return true;
}
SYS_FUNC(io_submit)
{
long nr = tcp->u_arg[1];
/* if nr <= 0, we end up printing just "[]" */
tprintf("%lu, %ld, [", tcp->u_arg[0], nr);
{
long i;
long iocbs = tcp->u_arg[2];
const long nr = widen_to_long(tcp->u_arg[1]);
const unsigned long addr = tcp->u_arg[2];
unsigned long iocbp;
for (i = 0; i < nr; ++i, iocbs += current_wordsize) {
unsigned long iocbp;
struct iocb cb;
tprintf("%lu, %ld, ", tcp->u_arg[0], nr);
if (i)
tprints(", ");
if (nr < 0)
printaddr(addr);
else
print_array(tcp, addr, nr, &iocbp, current_wordsize,
umoven_or_printaddr, print_iocbp, 0);
if (umove_ulong_or_printaddr(tcp, iocbs, &iocbp)) {
/*
* No point in trying to read the whole array
* because nr can be ridiculously large.
*/
break;
}
tprints("{");
if (!umove_or_printaddr(tcp, iocbp, &cb))
print_iocb(tcp, &cb);
tprints("}");
}
}
tprints("]");
return RVAL_DECODED;
}
static int
print_io_event(struct tcb *tcp, const long addr)
static bool
print_io_event(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
{
struct io_event event;
struct io_event *event = elem_buf;
if (umove_or_printaddr(tcp, addr, &event))
return -1;
tprintf("{data=%#" PRIx64 ", obj=%#" PRIx64
", res=%" PRId64 ", res2=%" PRId64 "}",
(uint64_t) event.data, (uint64_t) event.obj,
(int64_t) event.res, (int64_t) event.res2);
return 0;
(uint64_t) event->data, (uint64_t) event->obj,
(int64_t) event->res, (int64_t) event->res2);
return true;
}
SYS_FUNC(io_cancel)
@ -215,7 +217,10 @@ SYS_FUNC(io_cancel)
}
tprints(", ");
} else {
print_io_event(tcp, tcp->u_arg[2]);
struct io_event event;
if (!umove_or_printaddr(tcp, tcp->u_arg[2], &event))
print_io_event(tcp, &event, sizeof(event), 0);
}
return 0;
}
@ -224,26 +229,14 @@ SYS_FUNC(io_getevents)
{
if (entering(tcp)) {
tprintf("%lu, %ld, %ld, ",
tcp->u_arg[0], tcp->u_arg[1], tcp->u_arg[2]);
tcp->u_arg[0],
widen_to_long(tcp->u_arg[1]),
widen_to_long(tcp->u_arg[2]));
} else {
if (tcp->u_rval == 0) {
tprints("[]");
} else {
struct io_event *events = (void *)tcp->u_arg[3];
long i, nr = tcp->u_rval;
for (i = 0; i < nr; i++, events++) {
if (i == 0)
tprints("[");
else
tprints(", ");
if (print_io_event(tcp, (long)events))
break;
}
tprints("], ");
}
struct io_event buf;
print_array(tcp, tcp->u_arg[3], tcp->u_rval, &buf, sizeof(buf),
umoven_or_printaddr, print_io_event, 0);
tprints(", ");
/*
* Since the timeout parameter is read by the kernel
* on entering syscall, it has to be decoded the same way

83
alpha.c Normal file
View File

@ -0,0 +1,83 @@
/*
* Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.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.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 "defs.h"
#ifdef ALPHA
static int
decode_getxxid(struct tcb *tcp, const char *what)
{
if (entering(tcp))
return 0;
long rval = getrval2(tcp);
if (rval == -1)
return 0;
static const char const fmt[] = "%s %ld";
static char outstr[sizeof(fmt) + 3 * sizeof(rval)];
snprintf(outstr, sizeof(outstr), fmt, what, rval);
tcp->auxstr = outstr;
return RVAL_STR;
}
SYS_FUNC(getxpid)
{
return decode_getxxid(tcp, "ppid");
}
SYS_FUNC(getxuid)
{
return decode_getxxid(tcp, "euid");
}
SYS_FUNC(getxgid)
{
return decode_getxxid(tcp, "egid");
}
SYS_FUNC(osf_statfs)
{
printpath(tcp, tcp->u_arg[0]);
tprints(", ");
printaddr(tcp->u_arg[1]);
tprints(", ");
tprintf("%lu", tcp->u_arg[2]);
return RVAL_DECODED;
}
SYS_FUNC(osf_fstatfs)
{
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
printaddr(tcp->u_arg[1]);
tprints(", ");
tprintf("%lu", tcp->u_arg[2]);
return RVAL_DECODED;
}
#endif /* ALPHA */

114
block.c
View File

@ -1,5 +1,6 @@
/*
* Copyright (c) 2009, 2010 Jeff Mahoney <jeffm@suse.com>
* Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -26,16 +27,16 @@
*/
#include "defs.h"
#include DEF_MPERS_TYPE(struct_blk_user_trace_setup)
#include DEF_MPERS_TYPE(struct_blkpg_ioctl_arg)
#include DEF_MPERS_TYPE(struct_blkpg_partition)
#include <linux/blkpg.h>
#include <linux/fs.h>
#include <linux/hdreg.h>
/* ioctls <= 114 are present in Linux 2.4. The following ones have been
* added since then and headers containing them may not be available on
* every system. */
#define BLKTRACE_BDEV_SIZE 32
struct blk_user_trace_setup {
typedef struct blk_user_trace_setup {
char name[BLKTRACE_BDEV_SIZE]; /* output */
uint16_t act_mask; /* input */
uint32_t buf_size; /* input */
@ -43,10 +44,21 @@ struct blk_user_trace_setup {
uint64_t start_lba;
uint64_t end_lba;
uint32_t pid;
};
} struct_blk_user_trace_setup;
typedef struct blkpg_ioctl_arg struct_blkpg_ioctl_arg;
typedef struct blkpg_partition struct_blkpg_partition;
#include MPERS_DEFS
/*
* ioctl numbers <= 114 are present in Linux 2.4. The following ones have been
* added since then and headers containing them may not be available on every
* system.
*/
#ifndef BLKTRACESETUP
# define BLKTRACESETUP _IOWR(0x12,115,struct blk_user_trace_setup)
# define BLKTRACESETUP _IOWR(0x12, 115, struct_blk_user_trace_setup)
#endif
#ifndef BLKTRACESTART
# define BLKTRACESTART _IO(0x12,116)
@ -84,13 +96,16 @@ struct blk_user_trace_setup {
#ifndef BLKZEROOUT
# define BLKZEROOUT _IO(0x12,127)
#endif
#ifndef BLKDAXGET
# define BLKDAXGET _IO(0x12,129)
#endif
#include "xlat/blkpg_ops.h"
static void
print_blkpg_req(struct tcb *tcp, const struct blkpg_ioctl_arg *blkpg)
print_blkpg_req(struct tcb *tcp, const struct_blkpg_ioctl_arg *blkpg)
{
struct blkpg_partition p;
struct_blkpg_partition p;
tprints("{");
printxval(blkpg_ops, blkpg->op, "BLKPG_???");
@ -100,7 +115,7 @@ print_blkpg_req(struct tcb *tcp, const struct blkpg_ioctl_arg *blkpg)
if (!umove_or_printaddr(tcp, (long) blkpg->data, &p)) {
tprintf("{start=%lld, length=%lld, pno=%d, devname=",
p.start, p.length, p.pno);
(long long) p.start, (long long) p.length, p.pno);
print_quoted_string(p.devname, sizeof(p.devname),
QUOTE_0_TERMINATED);
tprints(", volname=");
@ -111,8 +126,8 @@ print_blkpg_req(struct tcb *tcp, const struct blkpg_ioctl_arg *blkpg)
tprints("}");
}
int
block_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
MPERS_PRINTER_DECL(int, block_ioctl, struct tcb *tcp,
const unsigned int code, const long arg)
{
switch (code) {
/* take arg as a value, not as a pointer */
@ -121,13 +136,6 @@ block_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
tprintf(", %lu", arg);
break;
/* take a signed int */
case BLKROSET:
case BLKBSZSET:
tprints(", ");
printnum_int(tcp, arg, "%d");
break;
/* return an unsigned short */
case BLKSECTGET:
case BLKROTATIONAL:
@ -142,8 +150,13 @@ block_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
case BLKBSZGET:
case BLKSSZGET:
case BLKALIGNOFF:
case BLKDAXGET:
if (entering(tcp))
return 0;
/* fall through */
/* take a signed int */
case BLKROSET:
case BLKBSZSET:
tprints(", ");
printnum_int(tcp, arg, "%d");
break;
@ -191,29 +204,12 @@ block_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
case BLKSECDISCARD:
case BLKZEROOUT:
tprints(", ");
printpair_int64(tcp, arg, "%" PRIx64);
printpair_int64(tcp, arg, "%" PRIu64);
break;
/* More complex types */
case HDIO_GETGEO:
if (entering(tcp))
return 0;
else {
struct hd_geometry geo;
tprints(", ");
if (!umove_or_printaddr(tcp, arg, &geo))
tprintf("{heads=%u, sectors=%u, "
"cylinders=%u, start=%lu}",
(unsigned)geo.heads,
(unsigned)geo.sectors,
(unsigned)geo.cylinders,
geo.start);
}
break;
case BLKPG: {
struct blkpg_ioctl_arg blkpg;
struct_blkpg_ioctl_arg blkpg;
tprints(", ");
if (!umove_or_printaddr(tcp, arg, &blkpg))
@ -223,7 +219,7 @@ block_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
case BLKTRACESETUP:
if (entering(tcp)) {
struct blk_user_trace_setup buts;
struct_blk_user_trace_setup buts;
tprints(", ");
if (umove_or_printaddr(tcp, arg, &buts))
@ -236,51 +232,23 @@ block_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
buts.end_lba, buts.pid);
return 1;
} else {
struct blk_user_trace_setup buts;
struct_blk_user_trace_setup buts;
if (syserror(tcp)) {
tprints("}");
break;
if (!syserror(tcp) && !umove(tcp, arg, &buts)) {
tprints(", name=");
print_quoted_string(buts.name, sizeof(buts.name),
QUOTE_0_TERMINATED);
}
tprints(", ");
if (umove(tcp, arg, &buts) < 0) {
tprints("???}");
break;
}
tprints(", name=");
print_quoted_string(buts.name, sizeof(buts.name),
QUOTE_0_TERMINATED);
tprints("}");
break;
}
#ifdef FITRIM
/* First seen in linux-2.6.37 */
case FITRIM: {
struct fstrim_range fstrim;
tprints(", ");
if (!umove_or_printaddr(tcp, arg, &fstrim))
tprintf("{start=%#" PRIx64 ", "
"len=%#" PRIx64 ", "
"minlen=%#" PRIx64 "}",
(uint64_t) fstrim.start,
(uint64_t) fstrim.len,
(uint64_t) fstrim.minlen);
break;
}
#endif
/* No arguments */
case BLKRRPART:
case BLKFLSBUF:
case BLKTRACESTART:
case BLKTRACESTOP:
case BLKTRACETEARDOWN:
#ifdef FIFREEZE
case FIFREEZE:
case FITHAW:
#endif
break;
default:
return RVAL_DECODED;

View File

@ -4,7 +4,8 @@ for m in m32 mx32; do
tests=tests-$m
rm -rf $tests
mkdir $tests
sed "s/@arch@/@arch_$m@/;s/^ARCH_MFLAGS[[:space:]]*=.*/& -$m/" \
s='[[:space:]]*'
sed "s/@arch@/@arch_$m@/;s/^MPERS_NAME$s=.*/& $m/;s/^ARCH_MFLAGS$s=.*/& -$m/" \
tests/Makefile.am > $tests/Makefile.am
for f in tests/*; do
case "${f##*/}" in

2
bpf.c
View File

@ -83,7 +83,7 @@ bpf_map_update_elem(struct tcb *tcp, const long addr, unsigned int size)
printfd(tcp, attr.map_fd);
tprintf(", key=%#" PRIx64 ", value=%#" PRIx64 ", flags=",
attr.key, attr.value);
printxval(bpf_map_update_elem_flags, attr.flags, "BPF_???");
printxval64(bpf_map_update_elem_flags, attr.flags, "BPF_???");
tprints("}");
}

1354
btrfs.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -81,9 +81,9 @@ SYS_FUNC(cacheflush)
/* start addr */
printaddr(tcp->u_arg[0]);
/* length */
tprintf(", %ld, ", tcp->u_arg[1]);
tprintf(", %lu, ", tcp->u_arg[1]);
/* flags */
printxval(cacheflush_flags, tcp->u_arg[1], "?CACHE");
printxval(cacheflush_flags, tcp->u_arg[2], "?CACHE");
return RVAL_DECODED;
}

View File

@ -142,7 +142,7 @@ SYS_FUNC(setns)
SYS_FUNC(unshare)
{
printflags(clone_flags, tcp->u_arg[0], "CLONE_???");
printflags_long(clone_flags, tcp->u_arg[0], "CLONE_???");
return RVAL_DECODED;
}

View File

@ -2,7 +2,7 @@
#
# Copyright (c) 1999-2001 Wichert Akkerman <wichert@deephackmode.org>
# Copyright (c) 2002-2009 Roland McGrath <roland@redhat.com>
# Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
# Copyright (c) 2006-2016 Dmitry V. Levin <ldv@altlinux.org>
# Copyright (c) 2008-2015 Mike Frysinger <vapier@gentoo.org>
# Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
# All rights reserved.
@ -41,10 +41,14 @@ AM_MAINTAINER_MODE
AC_CANONICAL_HOST
AC_PROG_CC
AC_PROG_CPP
AX_PROG_CC_FOR_BUILD
AC_USE_SYSTEM_EXTENSIONS
AC_PROG_INSTALL
AC_PROG_RANLIB
AC_USE_SYSTEM_EXTENSIONS
AX_CODE_COVERAGE
AC_MSG_CHECKING([for supported architecture])
arch_m32=
arch_mx32=
@ -247,36 +251,20 @@ AC_ARG_ENABLE([gcc-Werror],
)
AC_SUBST([WARN_CFLAGS])
AC_PROG_CPP
AC_PROG_INSTALL
AC_C_CONST
AC_C_BIGENDIAN
AC_HEADER_STDC
AC_HEADER_STDBOOL
AC_HEADER_DIRENT
AC_HEADER_STAT
AC_CHECK_MEMBERS(m4_normalize([
struct stat.st_atim.tv_nsec,
struct stat.st_blksize,
struct stat.st_blocks,
struct stat.st_ctim.tv_nsec,
struct stat.st_flags,
struct stat.st_fstype,
struct stat.st_gen,
struct stat.st_mtim.tv_nsec,
struct stat.st_rdev
]))
AC_C_CONST
AC_C_TYPEOF
AC_TYPE_GETGROUPS
AC_TYPE_MODE_T
AC_TYPE_SIGNAL
AC_TYPE_UID_T
AC_TYPE_MODE_T
AC_TYPE_GETGROUPS
AC_HEADER_DIRENT
AC_HEADER_MAJOR
AC_CHECK_TYPES([sig_atomic_t],,, [#include <signal.h>])
AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,,
[#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>])
AC_HEADER_STAT
AC_HEADER_STDBOOL
AC_HEADER_STDC
AC_CHECK_FUNCS(m4_normalize([
fanotify_mark
@ -294,23 +282,88 @@ AC_CHECK_FUNCS(m4_normalize([
preadv
process_vm_readv
pwritev
recvmmsg
sendmmsg
sigaction
signalfd
stpcpy
strerror
strsignal
sync_file_range
utimensat
]))
AC_CHECK_TYPES([sig_atomic_t, struct sigcontext],,, [#include <signal.h>])
AC_CHECK_TYPES([struct mmsghdr],,, [#include <sys/socket.h>])
AC_CHECK_TYPES([__kernel_long_t, __kernel_ulong_t],,,
[#include <asm/posix_types.h>])
AC_CHECK_TYPES([struct stat64, struct __old_kernel_stat],,,
[#include <sys/types.h>
#include <asm/stat.h>])
AC_CHECK_TYPES(m4_normalize([
struct pt_all_user_regs,
struct ia64_fpreg,
struct ptrace_peeksiginfo_args
]),,, [#include <sys/ptrace.h>])
AC_CHECK_TYPES(m4_normalize([
struct flock,
struct flock64,
struct __kernel_flock,
struct __kernel_flock64
]),,,
[#include <sys/types.h>
#include <linux/fcntl.h>])
AC_CHECK_MEMBERS(m4_normalize([
struct stat.st_atim.tv_nsec,
struct stat.st_blksize,
struct stat.st_blocks,
struct stat.st_ctim.tv_nsec,
struct stat.st_flags,
struct stat.st_fstype,
struct stat.st_gen,
struct stat.st_mtim.tv_nsec,
struct stat.st_rdev
]))
AC_CHECK_MEMBERS([struct msghdr.msg_control],,, [#include <sys/socket.h>])
AC_CHECK_MEMBERS([struct timex.tai],,, [#include <sys/timex.h>])
AC_CHECK_MEMBERS([struct utsname.domainname],,, [#include <sys/utsname.h>])
AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,,
[#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>])
AC_CHECK_MEMBERS(m4_normalize([
struct stat.st_atime_nsec,
struct stat.st_ctime_nsec,
struct stat.st_mtime_nsec
]),,, [#include <sys/types.h>
#include <asm/stat.h>])
AC_CHECK_MEMBERS(m4_normalize([
siginfo_t.si_syscall,
siginfo_t.si_timerid,
siginfo_t.si_overrun
]),,, [#include <signal.h>])
AC_CHECK_HEADERS(m4_normalize([
asm/cachectl.h
asm/sysmips.h
bluetooth/bluetooth.h
elf.h
inttypes.h
ioctls.h
linux/bsg.h
linux/falloc.h
linux/fiemap.h
linux/filter.h
linux/hiddev.h
linux/ip_vs.h
@ -322,77 +375,43 @@ AC_CHECK_HEADERS(m4_normalize([
linux/securebits.h
linux/sem.h
linux/shm.h
linux/userfaultfd.h
linux/utsname.h
mqueue.h
netinet/sctp.h
scsi/sg.h
stropts.h
sys/conf.h
sys/epoll.h
sys/eventfd.h
sys/fanotify.h
sys/ioctl.h
sys/ipc.h
sys/msg.h
sys/reg.h
sys/sem.h
sys/shm.h
sys/signalfd.h
sys/vfs.h
sys/xattr.h
]))
AC_CHECK_HEADERS([asm/sigcontext.h],,, [#include <signal.h>])
AC_CHECK_HEADERS([netinet/tcp.h netinet/udp.h],,, [#include <netinet/in.h>])
AC_CHECK_HEADERS([linux/mqueue.h],,, [#include <linux/types.h>])
AC_CHECK_HEADERS([linux/icmp.h linux/in6.h linux/netlink.h linux/if_packet.h],
[], [], [#include <stddef.h>
AC_CHECK_HEADERS([linux/icmp.h linux/in6.h linux/netlink.h linux/if_packet.h],,,
[#include <stddef.h>
#include <sys/socket.h>
#include <asm/types.h>])
AC_CHECK_HEADERS([asm/sigcontext.h], [], [], [#include <signal.h>])
AC_CHECK_TYPES([struct sigcontext],,, [#include <signal.h>])
AC_CHECK_HEADERS([netinet/tcp.h netinet/udp.h],,, [#include <netinet/in.h>])
AC_CHECK_HEADERS(m4_normalize([
linux/netfilter_arp/arp_tables.h
linux/netfilter_bridge/ebtables.h
linux/netfilter_ipv4/ip_tables.h
linux/netfilter_ipv6/ip6_tables.h
]), [], [], [#include <netinet/in.h>
]),,, [#include <netinet/in.h>
#include <net/if.h>])
AC_CHECK_TYPES([struct mmsghdr],,, [#include <sys/socket.h>])
AC_CHECK_MEMBERS([struct msghdr.msg_control],,, [#include <sys/socket.h>])
AC_CHECK_MEMBERS(m4_normalize([
struct stat.st_atime_nsec,
struct stat.st_ctime_nsec,
struct stat.st_mtime_nsec
]),,, [#include <sys/types.h>
#include <asm/stat.h>])
AC_CHECK_TYPES([struct stat64],,, [#include <sys/types.h>
#include <asm/stat.h>])
AC_CHECK_TYPES([struct __old_kernel_stat],,, [#include <asm/stat.h>])
AC_CHECK_TYPES([struct statfs64],,, [#include <sys/vfs.h>])
AC_CHECK_TYPES([struct pt_all_user_regs, struct ia64_fpreg, struct ptrace_peeksiginfo_args],,,
[#include <sys/ptrace.h>])
AC_CHECK_MEMBERS([struct utsname.domainname],,, [#include <sys/utsname.h>])
AC_CHECK_MEMBERS([struct sigevent._sigev_un._pad,
struct sigevent.__pad,
siginfo_t.si_syscall,
siginfo_t.si_timerid,
siginfo_t.si_overrun],,, [#include <signal.h>])
AC_CHECK_TYPES([struct flock,
struct flock64,
struct __kernel_flock,
struct __kernel_flock64],,, [#include <sys/types.h>
#include <linux/fcntl.h>])
AC_CHECK_TYPES([__kernel_long_t, __kernel_ulong_t],,, [#include <asm/posix_types.h>])
AC_CHECK_MEMBERS([struct timex.tai],,, [#include <sys/timex.h>])
AC_CHECK_HEADERS([linux/input.h], [
AC_CHECK_MEMBERS([struct input_absinfo.resolution],,, [#include <linux/input.h>])
])
@ -411,6 +430,44 @@ AC_CHECK_HEADERS([linux/bpf.h], [
fi
])
AC_CHECK_TYPES([struct statfs], [
AC_CHECK_MEMBERS([struct statfs.f_frsize],,, [#include <linux/types.h>
#include <asm/statfs.h>])
AC_CHECK_MEMBERS([struct statfs.f_flags],,, [#include <linux/types.h>
#include <asm/statfs.h>])
AC_CHECK_MEMBERS([struct statfs.f_fsid.val],,, [#include <linux/types.h>
#include <asm/statfs.h>])
AC_CHECK_MEMBERS([struct statfs.f_fsid.__val],,, [#include <linux/types.h>
#include <asm/statfs.h>])
],, [#include <linux/types.h>
#include <asm/statfs.h>])
AC_CHECK_TYPES([struct statfs64], [
AC_CHECK_MEMBERS([struct statfs64.f_frsize],,, [#include <linux/types.h>
#include <asm/statfs.h>])
AC_CHECK_MEMBERS([struct statfs64.f_flags],,, [#include <linux/types.h>
#include <asm/statfs.h>])
AC_CHECK_MEMBERS([struct statfs64.f_fsid.val],,, [#include <linux/types.h>
#include <asm/statfs.h>])
AC_CHECK_MEMBERS([struct statfs64.f_fsid.__val],,, [#include <linux/types.h>
#include <asm/statfs.h>])
],, [#include <linux/types.h>
#include <asm/statfs.h>])
AC_CHECK_TYPES([struct blk_user_trace_setup],,, [#include <linux/blktrace_api.h>])
AC_CHECK_HEADERS([linux/btrfs.h], [
AC_CHECK_MEMBERS(m4_normalize([
struct btrfs_ioctl_feature_flags.compat_flags,
struct btrfs_ioctl_fs_info_args.nodesize,
struct btrfs_ioctl_defrag_range_args.start
struct btrfs_ioctl_search_args_v2.buf_size
]),,, [ #include <stdio.h>
#include <linux/btrfs.h>])
AC_CHECK_DECLS(m4_normalize([BTRFS_COMPRESS_NONE, BTRFS_COMPRESS_ZLIB,
BTRFS_COMPRESS_LZO]),,,[ #include <stdio.h>
#include <linux/btrfs.h>])])
AC_CHECK_DECLS([sys_errlist])
AC_CHECK_DECLS(m4_normalize([
PTRACE_PEEKUSER,
@ -795,7 +852,10 @@ AC_CHECK_DECLS(m4_normalize([
V4L2_CTRL_TYPE_STRING,
V4L2_CTRL_TYPE_BITMASK,
V4L2_CTRL_TYPE_INTEGER_MENU
]),,, [#include <linux/videodev2.h>])
]),,, [#include <sys/time.h>
#include <linux/ioctl.h>
#include <linux/types.h>
#include <linux/videodev2.h>])
AC_CACHE_CHECK([for BLKGETSIZE64], [ac_cv_have_blkgetsize64],
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([

50
copy_file_range.c Normal file
View File

@ -0,0 +1,50 @@
/*
* Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.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.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 "defs.h"
SYS_FUNC(copy_file_range)
{
/* int fd_in */
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
/* loff_t *off_in */
printnum_int64(tcp, tcp->u_arg[1], "%" PRId64);
tprints(", ");
/* int fd_out */
printfd(tcp, tcp->u_arg[2]);
tprints(", ");
/* loff_t *off_out */
printnum_int64(tcp, tcp->u_arg[3], "%" PRId64);
tprints(", ");
/* size_t len */
tprintf("%lu, ", tcp->u_arg[4]);
/* unsigned int flags */
tprintf("%u", (unsigned int) tcp->u_arg[5]);
return RVAL_DECODED;
}

View File

@ -112,8 +112,9 @@ time_cmp(void *a, void *b)
static int
syscall_cmp(void *a, void *b)
{
return strcmp(sysent[*((int *) a)].sys_name,
sysent[*((int *) b)].sys_name);
const char *a_name = sysent[*((int *) a)].sys_name;
const char *b_name = sysent[*((int *) b)].sys_name;
return strcmp(a_name ? a_name : "", b_name ? b_name : "");
}
static int

18
debian/changelog vendored
View File

@ -1,10 +1,26 @@
strace (4.12-1) unstable; urgency=low
[ Dmitry V. Levin ]
* New upstream version.
+ implemented simultaneous use of -p option and tracing of a command,
closes: #549942
+ fixed decoding of syscalls unknown to the kernel on s390/s390x,
closes: #485979
-- Dmitry V. Levin <ldv@altlinux.org> Tue, 31 May 2016 11:12:13 +0000
strace (4.11-1) unstable; urgency=low
[ Dmitry V. Levin ]
* New upstream version.
+ fixed decoding of path argument of umount2 syscall, closes: #785050
-- Dmitry V. Levin <ldv@altlinux.org> Mon, 21 Dec 2015 20:21:22 +0000
[ Steve McIntyre ]
* Drop patches against old upstream - all upstream now.
* Add simple upstream patch to fix printing of 32-bit times syscall
return value on 64-bit architectures.
-- Steve McIntyre <93sam@debian.org> Fri, 08 Jan 2015 00:52:05 +0000
strace (4.10-3) unstable; urgency=medium

2
debian/control vendored
View File

@ -2,7 +2,7 @@ Source: strace
Maintainer: Steve McIntyre <93sam@debian.org>
Section: utils
Priority: optional
Build-Depends: libc6-dev (>= 2.2.2) [!alpha !ia64], libc6.1-dev (>= 2.2.2) [alpha ia64], gcc-multilib [i386 powerpc s390 sparc], debhelper (>= 7.0.0), gawk
Build-Depends: libc6-dev (>= 2.2.2) [!alpha !ia64], libc6.1-dev (>= 2.2.2) [alpha ia64], gcc-multilib [i386 powerpc s390 sparc], debhelper (>= 7.0.0), gawk, libunwind-dev [amd64]
Standards-Version: 3.9.6
Homepage: http://sourceforge.net/projects/strace/

198
defs.h
View File

@ -55,6 +55,7 @@
#include <sys/syscall.h>
#include "mpers_type.h"
#include "gcc_compat.h"
#ifndef HAVE_STRERROR
const char *strerror(int);
@ -68,48 +69,6 @@ const char *strerror(int);
extern char *stpcpy(char *dst, const char *src);
#endif
#if defined __GNUC__ && defined __GNUC_MINOR__
# define GNUC_PREREQ(maj, min) \
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
#else
# define __attribute__(x) /* empty */
# define GNUC_PREREQ(maj, min) 0
#endif
#if GNUC_PREREQ(2, 5)
# define ATTRIBUTE_NORETURN __attribute__((__noreturn__))
#else
# define ATTRIBUTE_NORETURN /* empty */
#endif
#if GNUC_PREREQ(2, 7)
# define ATTRIBUTE_FORMAT(args) __attribute__((__format__ args))
# define ATTRIBUTE_ALIGNED(arg) __attribute__((__aligned__(arg)))
# define ATTRIBUTE_PACKED __attribute__((__packed__))
#else
# define ATTRIBUTE_FORMAT(args) /* empty */
# define ATTRIBUTE_ALIGNED(arg) /* empty */
# define ATTRIBUTE_PACKED /* empty */
#endif
#if GNUC_PREREQ(3, 0)
# define ATTRIBUTE_MALLOC __attribute__((__malloc__))
#else
# define ATTRIBUTE_MALLOC /* empty */
#endif
#if GNUC_PREREQ(3, 1)
# define ATTRIBUTE_NOINLINE __attribute__((__noinline__))
#else
# define ATTRIBUTE_NOINLINE /* empty */
#endif
#if GNUC_PREREQ(4, 3)
# define ATTRIBUTE_ALLOC_SIZE(args) __attribute__((__alloc_size__ args))
#else
# define ATTRIBUTE_ALLOC_SIZE(args) /* empty */
#endif
#ifndef offsetof
# define offsetof(type, member) \
(((char *) &(((type *) NULL)->member)) - ((char *) (type *) NULL))
@ -198,6 +157,7 @@ extern char *stpcpy(char *dst, const char *src);
# define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
# define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
# define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
# define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
# endif
# endif
#endif
@ -211,11 +171,13 @@ extern char *stpcpy(char *dst, const char *src);
# define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
# define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
# define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
# define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
# endif
# ifdef HAVE_MX32_MPERS
# define PERSONALITY2_INCLUDE_FUNCS "mx32_funcs.h"
# define PERSONALITY2_INCLUDE_PRINTERS_DECLS "mx32_printer_decls.h"
# define PERSONALITY2_INCLUDE_PRINTERS_DEFS "mx32_printer_defs.h"
# define MPERS_mx32_IOCTL_MACROS "ioctl_redefs2.h"
# endif
#endif
@ -227,6 +189,7 @@ extern char *stpcpy(char *dst, const char *src);
# define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
# define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
# define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
# define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
# endif
#endif
@ -243,6 +206,7 @@ extern char *stpcpy(char *dst, const char *src);
# define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
# define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
# define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
# define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
# endif
#endif
@ -254,6 +218,7 @@ extern char *stpcpy(char *dst, const char *src);
# define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
# define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
# define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
# define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
# endif
#endif
@ -268,6 +233,7 @@ extern char *stpcpy(char *dst, const char *src);
# define PERSONALITY1_INCLUDE_FUNCS "m32_funcs.h"
# define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
# define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
# define MPERS_m32_IOCTL_MACROS "ioctl_redefs1.h"
# endif
#endif
@ -401,16 +367,12 @@ typedef uint8_t qualbits_t;
#define abbrev(tcp) ((tcp)->qual_flg & QUAL_ABBREV)
#define filtered(tcp) ((tcp)->flags & TCB_FILTERED)
struct xlat {
unsigned int val;
const char *str;
};
#define XLAT(x) { x, #x }
#define XLAT_END { 0, NULL }
#include "xlat.h"
extern const struct xlat addrfams[];
extern const struct xlat at_flags[];
extern const struct xlat dirent_types[];
extern const struct xlat evdev_abs[];
extern const struct xlat open_access_modes[];
extern const struct xlat open_mode_flags[];
extern const struct xlat resource_flags[];
@ -549,11 +511,25 @@ extern int umoven(struct tcb *, long, unsigned int, void *);
extern int umoven_or_printaddr(struct tcb *, long, unsigned int, void *);
#define umove_or_printaddr(pid, addr, objp) \
umoven_or_printaddr((pid), (addr), sizeof(*(objp)), (void *) (objp))
extern int umove_ulong_or_printaddr(struct tcb *, long, unsigned long *);
extern int umove_ulong_array_or_printaddr(struct tcb *, long, unsigned long *, size_t);
extern int umovestr(struct tcb *, long, unsigned int, char *);
extern int upeek(int pid, long, long *);
extern bool
print_array(struct tcb *tcp,
const unsigned long start_addr,
const size_t nmemb,
void *const elem_buf,
const size_t elem_size,
int (*const umoven_func)(struct tcb *,
long,
unsigned int,
void *),
bool (*const print_func)(struct tcb *,
void *elem_buf,
size_t elem_size,
void *opaque_data),
void *const opaque_data);
#if defined ALPHA || defined IA64 || defined MIPS \
|| defined SH || defined SPARC || defined SPARC64
# define HAVE_GETRVAL2
@ -567,8 +543,8 @@ extern void pathtrace_select(const char *);
extern int pathtrace_match(struct tcb *);
extern int getfdpath(struct tcb *, int, char *, unsigned);
extern const char *xlookup(const struct xlat *, const unsigned int);
extern const char *xlat_search(const struct xlat *, const size_t, const unsigned int);
extern const char *xlookup(const struct xlat *, const uint64_t);
extern const char *xlat_search(const struct xlat *, const size_t, const uint64_t);
extern unsigned long get_pagesize(void);
extern int string_to_uint(const char *str);
@ -577,6 +553,7 @@ extern int next_set_bit(const void *bit_array, unsigned cur_bit, unsigned size_b
#define QUOTE_0_TERMINATED 0x01
#define QUOTE_OMIT_LEADING_TRAILING_QUOTES 0x02
extern int string_quote(const char *, char *, unsigned int, unsigned int);
extern int print_quoted_string(const char *, unsigned int, unsigned int);
/* a refers to the lower numbered u_arg,
@ -594,19 +571,22 @@ extern int printllval(struct tcb *, const char *, int)
ATTRIBUTE_FORMAT((printf, 2, 0));
extern void printaddr(long);
extern void printxvals(const unsigned int, const char *, const struct xlat *, ...);
#define printxval(xlat, val, dflt) printxvals(val, dflt, xlat, NULL)
extern void printxvals(const uint64_t, const char *, const struct xlat *, ...)
ATTRIBUTE_SENTINEL;
extern int printargs(struct tcb *);
extern int printargs_lu(struct tcb *);
extern int printargs_ld(struct tcb *);
extern void addflags(const struct xlat *, int);
extern int printflags(const struct xlat *, int, const char *);
extern const char *sprintflags(const char *, const struct xlat *, int);
extern const char *sprintmode(int);
extern int printargs_u(struct tcb *);
extern int printargs_d(struct tcb *);
extern void addflags(const struct xlat *, uint64_t);
extern int printflags64(const struct xlat *, uint64_t, const char *);
extern const char *sprintflags(const char *, const struct xlat *, uint64_t);
extern const char *sprintmode(unsigned int);
extern const char *sprinttime(time_t);
extern void dumpiov_in_msghdr(struct tcb *, long);
extern void dumpiov_in_msghdr(struct tcb *, long, unsigned long);
extern void dumpiov_in_mmsghdr(struct tcb *, long);
extern void dumpiov(struct tcb *, int, long);
extern void dumpiov_upto(struct tcb *, int, long, unsigned long);
#define dumpiov(tcp, len, addr) \
dumpiov_upto((tcp), (len), (addr), (unsigned long) -1L)
extern void dumpstr(struct tcb *, long, int);
extern void printstr(struct tcb *, long, long);
extern bool printnum_short(struct tcb *, long, const char *)
@ -652,6 +632,7 @@ extern void printpathn(struct tcb *, long, unsigned int);
(sizeof(intmax_t)*3 * 2 + sizeof("{tv_sec=%jd, tv_nsec=%jd}"))
extern void printfd(struct tcb *, int);
extern bool print_sockaddr_by_inode(const unsigned long, const char *);
extern bool print_sockaddr_by_inode_cached(const unsigned long);
extern void print_dirfd(struct tcb *, int);
extern void printsock(struct tcb *, long, int);
extern void print_sock_optmgmt(struct tcb *, long, int);
@ -670,21 +651,24 @@ extern const char *sprintsigmask_n(const char *, const void *, unsigned int);
extern void printsignal(int);
extern void tprint_iov(struct tcb *, unsigned long, unsigned long, int decode_iov);
extern void tprint_iov_upto(struct tcb *, unsigned long, unsigned long, int decode_iov, unsigned long);
extern void tprint_open_modes(int);
extern const char *sprint_open_modes(int);
extern void print_seccomp_filter(struct tcb *tcp, unsigned long);
extern void tprint_open_modes(unsigned int);
extern const char *sprint_open_modes(unsigned int);
extern void print_seccomp_filter(struct tcb *, unsigned long);
extern void print_seccomp_fprog(struct tcb *, unsigned long, unsigned short);
extern int block_ioctl(struct tcb *, const unsigned int, long);
extern int evdev_ioctl(struct tcb *, const unsigned int, long);
struct strace_statfs;
extern void print_struct_statfs(struct tcb *tcp, long);
extern void print_struct_statfs64(struct tcb *tcp, long, unsigned long);
extern int file_ioctl(struct tcb *, const unsigned int, long);
extern int fs_x_ioctl(struct tcb *, const unsigned int, long);
extern int loop_ioctl(struct tcb *, const unsigned int, long);
extern int mtd_ioctl(struct tcb *, const unsigned int, long);
extern int ptp_ioctl(struct tcb *, const unsigned int, long);
extern int rtc_ioctl(struct tcb *, const unsigned int, long);
extern int scsi_ioctl(struct tcb *, const unsigned int, long);
extern int sock_ioctl(struct tcb *, const unsigned int, long);
extern int term_ioctl(struct tcb *, const unsigned int, long);
extern int ubi_ioctl(struct tcb *, const unsigned int, long);
extern int v4l2_ioctl(struct tcb *, const unsigned int, long);
extern int uffdio_ioctl(struct tcb *, const unsigned int, long);
extern int tv_nz(const struct timeval *);
extern int tv_cmp(const struct timeval *, const struct timeval *);
@ -703,6 +687,36 @@ extern void unwind_print_stacktrace(struct tcb* tcp);
extern void unwind_capture_stacktrace(struct tcb* tcp);
#endif
static inline int
printflags(const struct xlat *x, unsigned int flags, const char *dflt)
{
return printflags64(x, flags, dflt);
}
static inline int
printflags_long(const struct xlat *x, unsigned long flags, const char *dflt)
{
return printflags64(x, flags, dflt);
}
static inline void
printxval64(const struct xlat *x, const uint64_t val, const char *dflt)
{
printxvals(val, dflt, x, NULL);
}
static inline void
printxval(const struct xlat *x, const unsigned int val, const char *dflt)
{
printxvals(val, dflt, x, NULL);
}
static inline void
printxval_long(const struct xlat *x, const unsigned long val, const char *dflt)
{
printxvals(val, dflt, x, NULL);
}
/* Strace log generation machinery.
*
* printing_tcp: tcb which has incomplete line being printed right now.
@ -755,6 +769,14 @@ extern unsigned current_wordsize;
# define widen_to_long(v) ((long)(v))
#endif
/*
* Widen without sign-extension a signed integer type to unsigned long long.
*/
#define widen_to_ull(v) \
(sizeof(v) == sizeof(int) ? (unsigned long long) (unsigned int) (v) : \
sizeof(v) == sizeof(long) ? (unsigned long long) (unsigned long) (v) : \
(unsigned long long) (v))
extern const struct_sysent sysent0[];
extern const char *const errnoent0[];
extern const char *const signalent0[];
@ -780,11 +802,17 @@ extern unsigned nsignals;
extern unsigned nioctlents;
extern unsigned num_quals;
#if SUPPORTED_PERSONALITIES > 1
# include "printers.h"
#else
# include "native_printer_decls.h"
#endif
#ifdef IN_MPERS_BOOTSTRAP
/* Transform multi-line MPERS_PRINTER_DECL statements to one-liners. */
# define MPERS_PRINTER_DECL(type, name, ...) MPERS_PRINTER_DECL(type, name, __VA_ARGS__)
#else /* !IN_MPERS_BOOTSTRAP */
# if SUPPORTED_PERSONALITIES > 1
# include "printers.h"
# else
# include "native_printer_decls.h"
# endif
# define MPERS_PRINTER_DECL(type, name, ...) type MPERS_FUNC_NAME(name)(__VA_ARGS__)
#endif /* !IN_MPERS_BOOTSTRAP */
/*
* If you need non-NULL sysent[scno].sys_func and sysent[scno].sys_name
@ -804,4 +832,22 @@ extern unsigned num_quals;
#define SYS_FUNC(syscall_name) int SYS_FUNC_NAME(sys_ ## syscall_name)(struct tcb *tcp)
#define MPERS_PRINTER_DECL(type, name) type MPERS_FUNC_NAME(name)
/*
* The kernel used to define 64-bit types on 64-bit systems on a per-arch
* basis. Some architectures would use unsigned long and others would use
* unsigned long long. These types were exported as part of the
* kernel-userspace ABI and now must be maintained forever. This matches
* what the kernel exports for each architecture so we don't need to cast
* every printing of __u64 or __s64 to stdint types.
*/
#if SIZEOF_LONG == 4
# define PRI__64 "ll"
#elif defined ALPHA || defined IA64 || defined MIPS || defined POWERPC
# define PRI__64 "l"
#else
# define PRI__64 "ll"
#endif
#define PRI__d64 PRI__64"d"
#define PRI__u64 PRI__64"u"
#define PRI__x64 PRI__64"x"

7
desc.c
View File

@ -68,13 +68,6 @@ SYS_FUNC(dup3)
return do_dup2(tcp, 2);
}
#if defined(ALPHA)
SYS_FUNC(getdtablesize)
{
return 0;
}
#endif
static int
decode_select(struct tcb *tcp, long *args,
void (*print_tv_ts) (struct tcb *, const long),

View File

@ -48,8 +48,8 @@ print_old_dirent(struct tcb *tcp, long addr)
return;
tprintf("{d_ino=%llu, d_off=%llu, d_reclen=%u, d_name=",
(unsigned long long) d.d_ino,
(unsigned long long) d.d_off, d.d_reclen);
widen_to_ull(d.d_ino),
widen_to_ull(d.d_off), d.d_reclen);
if (d.d_reclen > D_NAME_LEN_MAX)
d.d_reclen = D_NAME_LEN_MAX;
printpathn(tcp, addr + offsetof(kernel_dirent, d_name), d.d_reclen);
@ -76,16 +76,19 @@ SYS_FUNC(readdir)
SYS_FUNC(getdents)
{
unsigned int i, len, dents = 0;
char *buf;
unsigned char *buf;
if (entering(tcp)) {
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
return 0;
}
const unsigned int count = tcp->u_arg[2];
if (syserror(tcp) || !verbose(tcp)) {
printaddr(tcp->u_arg[1]);
tprintf(", %lu", tcp->u_arg[2]);
tprintf(", %u", count);
return 0;
}
@ -101,7 +104,7 @@ SYS_FUNC(getdents)
buf = malloc(len);
if (!buf || umoven(tcp, tcp->u_arg[1], len, buf) < 0) {
printaddr(tcp->u_arg[1]);
tprintf(", %lu", tcp->u_arg[2]);
tprintf(", %u", count);
free(buf);
return 0;
}
@ -124,8 +127,8 @@ SYS_FUNC(getdents)
tprintf("%s{d_ino=%llu, d_off=%llu, d_reclen=%u"
", d_name=", i ? ", " : "",
(unsigned long long) d->d_ino,
(unsigned long long) d->d_off, d->d_reclen);
widen_to_ull(d->d_ino),
widen_to_ull(d->d_off), d->d_reclen);
if (print_quoted_string(d->d_name, d_name_len,
QUOTE_0_TERMINATED) > 0) {
@ -150,7 +153,7 @@ SYS_FUNC(getdents)
tprints("]");
else
tprintf("/* %u entries */", dents);
tprintf(", %lu", tcp->u_arg[2]);
tprintf(", %u", count);
free(buf);
return 0;
}

View File

@ -49,9 +49,12 @@ SYS_FUNC(getdents64)
tprints(", ");
return 0;
}
const unsigned int count = tcp->u_arg[2];
if (syserror(tcp) || !verbose(tcp)) {
printaddr(tcp->u_arg[1]);
tprintf(", %lu", tcp->u_arg[2]);
tprintf(", %u", count);
return 0;
}
@ -67,7 +70,7 @@ SYS_FUNC(getdents64)
buf = malloc(len);
if (!buf || umoven(tcp, tcp->u_arg[1], len, buf) < 0) {
printaddr(tcp->u_arg[1]);
tprintf(", %lu", tcp->u_arg[2]);
tprintf(", %u", count);
free(buf);
return 0;
}
@ -117,7 +120,7 @@ SYS_FUNC(getdents64)
tprints("]");
else
tprintf("/* %u entries */", dents);
tprintf(", %lu", tcp->u_arg[2]);
tprintf(", %u", count);
free(buf);
return 0;
}

65
epoll.c
View File

@ -29,9 +29,7 @@
#include "defs.h"
#include <fcntl.h>
#ifdef HAVE_SYS_EPOLL_H
# include <sys/epoll.h>
#endif
#include <sys/epoll.h>
SYS_FUNC(epoll_create)
{
@ -49,76 +47,43 @@ SYS_FUNC(epoll_create1)
return RVAL_DECODED | RVAL_FD;
}
#ifdef HAVE_SYS_EPOLL_H
# include "xlat/epollevents.h"
#include "xlat/epollevents.h"
static void
print_epoll_event(struct epoll_event *ev)
static bool
print_epoll_event(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
{
const struct epoll_event *ev = elem_buf;
tprints("{");
printflags(epollevents, ev->events, "EPOLL???");
/* We cannot know what format the program uses, so print u32 and u64
which will cover every value. */
tprintf(", {u32=%" PRIu32 ", u64=%" PRIu64 "}}",
ev->data.u32, ev->data.u64);
return true;
}
#endif
#include "xlat/epollctls.h"
SYS_FUNC(epoll_ctl)
{
struct epoll_event ev;
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
printxval(epollctls, tcp->u_arg[1], "EPOLL_CTL_???");
const unsigned int op = tcp->u_arg[1];
printxval(epollctls, op, "EPOLL_CTL_???");
tprints(", ");
printfd(tcp, tcp->u_arg[2]);
tprints(", ");
#ifdef HAVE_SYS_EPOLL_H
if (EPOLL_CTL_DEL == tcp->u_arg[1])
struct epoll_event ev;
if (EPOLL_CTL_DEL == op)
printaddr(tcp->u_arg[3]);
else if (!umove_or_printaddr(tcp, tcp->u_arg[3], &ev))
print_epoll_event(&ev);
#else
printaddr(tcp->u_arg[3]);
#endif
print_epoll_event(tcp, &ev, sizeof(ev), 0);
return RVAL_DECODED;
}
static void
print_epoll_event_array(struct tcb *tcp, const long addr, const long len)
{
#ifdef HAVE_SYS_EPOLL_H
struct epoll_event ev, *start, *cur, *end;
if (!len) {
tprints("[]");
return;
}
if (umove_or_printaddr(tcp, addr, &ev))
return;
tprints("[");
print_epoll_event(&ev);
start = (struct epoll_event *) addr;
end = start + len;
for (cur = start + 1; cur < end; ++cur) {
tprints(", ");
if (umove_or_printaddr(tcp, (long) cur, &ev))
break;
print_epoll_event(&ev);
}
tprints("]");
#else
printaddr(addr);
#endif
}
static void
epoll_wait_common(struct tcb *tcp)
{
@ -126,7 +91,9 @@ epoll_wait_common(struct tcb *tcp)
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
} else {
print_epoll_event_array(tcp, tcp->u_arg[1], tcp->u_rval);
struct epoll_event ev;
print_array(tcp, tcp->u_arg[1], tcp->u_rval, &ev, sizeof(ev),
umoven_or_printaddr, print_epoll_event, 0);
tprintf(", %d, %d", (int) tcp->u_arg[2], (int) tcp->u_arg[3]);
}
}

537
evdev.c
View File

@ -1,6 +1,6 @@
/*
* Copyright (c) 2015 Etienne Gemsa <etienne.gemsa@lse.epita.fr>
* Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
* Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -28,33 +28,47 @@
#include "defs.h"
#include <linux/ioctl.h>
#ifdef HAVE_LINUX_INPUT_H
#include DEF_MPERS_TYPE(struct_ff_effect)
# include <linux/ioctl.h>
# include <linux/input.h>
typedef struct ff_effect struct_ff_effect;
#endif /* HAVE_LINUX_BTRFS_H */
#include MPERS_DEFS
#ifdef HAVE_LINUX_INPUT_H
#include <linux/input.h>
#include "xlat/evdev_abs.h"
#include "xlat/evdev_autorepeat.h"
#include "xlat/evdev_ff_status.h"
#include "xlat/evdev_ff_types.h"
#include "xlat/evdev_keycode.h"
#include "xlat/evdev_leds.h"
#include "xlat/evdev_misc.h"
#include "xlat/evdev_mtslots.h"
#include "xlat/evdev_prop.h"
#include "xlat/evdev_relative_axes.h"
#include "xlat/evdev_snd.h"
#include "xlat/evdev_switch.h"
#include "xlat/evdev_sync.h"
#ifndef SYN_MAX
# define SYN_MAX 0xf
#endif
# include "xlat/evdev_autorepeat.h"
# include "xlat/evdev_ff_status.h"
# include "xlat/evdev_ff_types.h"
# include "xlat/evdev_keycode.h"
# include "xlat/evdev_leds.h"
# include "xlat/evdev_misc.h"
# include "xlat/evdev_mtslots.h"
# include "xlat/evdev_prop.h"
# include "xlat/evdev_relative_axes.h"
# include "xlat/evdev_snd.h"
# include "xlat/evdev_switch.h"
# include "xlat/evdev_sync.h"
# ifndef SYN_MAX
# define SYN_MAX 0xf
# endif
static void
decode_envelope(struct ff_envelope *envelope)
decode_envelope(void *const data)
{
tprintf(", envelope={attack_length=%" PRIu16 ", attack_level=%" PRIu16
", fade_length=%" PRIu16 ", fade_level=%" PRIx32 "}",
const struct ff_envelope *const envelope = data;
tprintf(", envelope={attack_length=%" PRIu16
", attack_level=%" PRIu16
", fade_length=%" PRIu16
", fade_level=%#x}",
envelope->attack_length,
envelope->attack_level,
envelope->fade_length,
@ -64,136 +78,151 @@ decode_envelope(struct ff_envelope *envelope)
static int
ff_effect_ioctl(struct tcb *tcp, long arg)
{
struct ff_effect ffe;
tprints(", ");
if (!verbose(tcp) || umove(tcp, arg, &ffe) < 0)
return 0;
struct_ff_effect ffe;
tprints(", {type=");
if (umove_or_printaddr(tcp, arg, &ffe))
return 1;
tprints("{type=");
printxval(evdev_ff_types, ffe.type, "FF_???");
tprintf(", id=%" PRIu16 ", direction=%" PRIu16,
ffe.id, ffe.direction);
tprintf(", id=%" PRIu16
", direction=%" PRIu16 ", ",
ffe.id,
ffe.direction);
if (!abbrev(tcp)) {
tprintf(", trigger={button=%" PRIu16 ", interval=%" PRIu16 "}",
ffe.trigger.button, ffe.trigger.interval);
tprintf(", replay={lenght=%" PRIu16 ", delay=%" PRIu16 "}",
ffe.replay.length, ffe.replay.delay);
switch (ffe.type) {
case FF_CONSTANT:
tprintf(", constant_ef={%" PRIi16,
ffe.u.constant.level);
decode_envelope(&ffe.u.constant.envelope);
tprints("}");
return 1;
case FF_RAMP:
tprintf(", ramp={start_level=%" PRIi16
", end_level=%" PRIi16,
ffe.u.ramp.start_level,
ffe.u.ramp.end_level);
decode_envelope(&ffe.u.ramp.envelope);
tprints("}");
return 1;
case FF_PERIODIC:
tprintf(", periodic_ef={waveform=%" PRIu16
", period=%" PRIu16
", magnitude=%" PRIi16
", offset=%" PRIi16
", phase=%" PRIu16,
ffe.u.periodic.waveform,
ffe.u.periodic.period,
ffe.u.periodic.magnitude,
ffe.u.periodic.offset,
ffe.u.periodic.phase);
decode_envelope(&ffe.u.periodic.envelope);
tprintf(", custom_len=%" PRIu32
", *custom_data=%#lx}",
ffe.u.periodic.custom_len,
(unsigned long)ffe.u.periodic.custom_data);
return 1;
case FF_RUMBLE:
tprintf(", rumble={strong_magnitude=%" PRIu16
", weak_magnitude=%" PRIu16 "}",
ffe.u.rumble.strong_magnitude,
ffe.u.rumble.weak_magnitude);
return 1;
case FF_SPRING:
case FF_FRICTION:
case FF_DAMPER:
case FF_INERTIA:
case FF_CUSTOM:
break;
default :
break;
}
if (abbrev(tcp)) {
tprints("...}");
return 1;
}
tprints(", ...}");
tprintf("trigger={button=%" PRIu16
", interval=%" PRIu16 "}"
", replay={length=%" PRIu16
", delay=%" PRIu16 "}",
ffe.trigger.button,
ffe.trigger.interval,
ffe.replay.length,
ffe.replay.delay);
switch (ffe.type) {
case FF_CONSTANT:
tprintf(", constant={level=%" PRId16,
ffe.u.constant.level);
decode_envelope(&ffe.u.constant.envelope);
tprints("}");
break;
case FF_RAMP:
tprintf(", ramp={start_level=%" PRId16
", end_level=%" PRId16,
ffe.u.ramp.start_level,
ffe.u.ramp.end_level);
decode_envelope(&ffe.u.ramp.envelope);
tprints("}");
break;
case FF_PERIODIC:
tprintf(", periodic={waveform=%" PRIu16
", period=%" PRIu16
", magnitude=%" PRId16
", offset=%" PRId16
", phase=%" PRIu16,
ffe.u.periodic.waveform,
ffe.u.periodic.period,
ffe.u.periodic.magnitude,
ffe.u.periodic.offset,
ffe.u.periodic.phase);
decode_envelope(&ffe.u.periodic.envelope);
tprintf(", custom_len=%u"
", custom_data=%#lx}",
ffe.u.periodic.custom_len,
(unsigned long) ffe.u.periodic.custom_data);
break;
case FF_RUMBLE:
tprintf(", rumble={strong_magnitude=%" PRIu16
", weak_magnitude=%" PRIu16 "}",
ffe.u.rumble.strong_magnitude,
ffe.u.rumble.weak_magnitude);
break;
default:
break;
}
tprints("}");
return 1;
}
static int
abs_ioctl(struct tcb *tcp, long arg)
{
tprints(", ");
struct input_absinfo absinfo;
if (!verbose(tcp) || umove(tcp, arg, &absinfo) < 0)
return 0;
if (!umove_or_printaddr(tcp, arg, &absinfo)) {
tprintf("{value=%u"
", minimum=%u, ",
absinfo.value,
absinfo.minimum);
if (!abbrev(tcp)) {
tprintf("maximum=%u"
", fuzz=%u"
", flat=%u",
absinfo.maximum,
absinfo.fuzz,
absinfo.flat);
# ifdef HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION
tprintf(", resolution=%u",
absinfo.resolution);
# endif
} else {
tprints("...");
}
tprintf(", {value=%" PRIu32 ", minimum=%" PRIu32,
absinfo.value, absinfo.minimum);
if (!abbrev(tcp)) {
tprintf(", maximum=%" PRIu32 ", fuzz=%" PRIu32,
absinfo.maximum, absinfo.fuzz);
tprintf(", flat=%" PRIu32, absinfo.flat);
#ifdef HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION
tprintf(", resolution=%" PRIu32, absinfo.resolution);
#endif
tprints("}");
} else {
tprints(", ...}");
}
return 1;
}
static int
keycode_ioctl(struct tcb *tcp, long arg)
{
tprints(", ");
unsigned int keycode[2];
if (!arg) {
tprints(", NULL");
return 1;
if (!umove_or_printaddr(tcp, arg, &keycode)) {
tprintf("[%u, ", keycode[0]);
printxval(evdev_keycode, keycode[1], "KEY_???");
tprints("]");
}
if (!verbose(tcp) || umove(tcp, arg, &keycode) < 0)
return 0;
tprintf(", [%u, ", keycode[0]);
printxval(evdev_keycode, keycode[1], "KEY_???");
tprints("]");
return 1;
}
#ifdef EVIOCGKEYCODE_V2
# ifdef EVIOCGKEYCODE_V2
static int
keycode_V2_ioctl(struct tcb *tcp, long arg)
{
tprints(", ");
struct input_keymap_entry ike;
if (!arg) {
tprints(", NULL");
if (umove_or_printaddr(tcp, arg, &ike))
return 1;
}
if (!verbose(tcp) || umove(tcp, arg, &ike) < 0)
return 0;
tprintf("{flags=%" PRIu8
", len=%" PRIu8 ", ",
ike.flags,
ike.len);
tprintf(", {flags=%" PRIu8 ", len=%" PRIu8, ike.flags, ike.len);
if (!abbrev(tcp)) {
unsigned int i;
tprintf(", index=%" PRIu16 ", keycode=", ike.index);
tprintf("index=%" PRIu16 ", keycode=", ike.index);
printxval(evdev_keycode, ike.keycode, "KEY_???");
tprints(", scancode=[");
for (i = 0; i < ARRAY_SIZE(ike.scancode); i++) {
@ -201,30 +230,34 @@ keycode_V2_ioctl(struct tcb *tcp, long arg)
tprints(", ");
tprintf("%" PRIx8, ike.scancode[i]);
}
tprints("]}");
tprints("]");
} else {
tprints(", ...}");
tprints("...");
}
tprints("}");
return 1;
}
#endif /* EVIOCGKEYCODE_V2 */
# endif /* EVIOCGKEYCODE_V2 */
static int
getid_ioctl(struct tcb *tcp, long arg)
{
tprints(", ");
struct input_id id;
if (!verbose(tcp) || umove(tcp, arg, &id) < 0)
return 0;
if (!umove_or_printaddr(tcp, arg, &id))
tprintf("{ID_BUS=%" PRIu16
", ID_VENDOR=%" PRIu16
", ID_PRODUCT=%" PRIu16
", ID_VERSION=%" PRIu16 "}",
id.bustype,
id.vendor,
id.product,
id.version);
tprintf(", {ID_BUS=%" PRIu16 ", ID_VENDOR=%" PRIu16,
id.bustype, id.vendor);
if (!abbrev(tcp)) {
tprintf(", ID_PRODUCT=%" PRIu16 ", ID_VERSION=%" PRIu16 "}",
id.product, id.version);
} else {
tprints(", ...}");
}
return 1;
}
@ -232,8 +265,7 @@ static int
decode_bitset(struct tcb *tcp, long arg, const struct xlat decode_nr[],
const unsigned int max_nr, const char *dflt)
{
if (!verbose(tcp))
return 0;
tprints(", ");
unsigned int size;
if ((unsigned long) tcp->u_rval > max_nr)
@ -242,10 +274,10 @@ decode_bitset(struct tcb *tcp, long arg, const struct xlat decode_nr[],
size = tcp->u_rval;
char decoded_arg[size];
if (umoven(tcp, arg, size, decoded_arg) < 0)
return 0;
if (umove_or_printaddr(tcp, arg, &decoded_arg))
return 1;
tprints(", [");
tprints("[");
int bit_displayed = 0;
int i = next_set_bit(decoded_arg, 0, size);
@ -270,34 +302,39 @@ decode_bitset(struct tcb *tcp, long arg, const struct xlat decode_nr[],
return 1;
}
#ifdef EVIOCGMTSLOTS
# ifdef EVIOCGMTSLOTS
static int
mtslots_ioctl(struct tcb *tcp, const unsigned int code, long arg)
{
const size_t size = _IOC_SIZE(code) / sizeof(int32_t);
if (!size)
return 0;
tprints(", ");
int32_t buffer[size];
const size_t size = _IOC_SIZE(code) / sizeof(int);
if (!size) {
printaddr(arg);
return 1;
}
if (!verbose(tcp) || umove(tcp, arg, &buffer) < 0)
return 0;
int buffer[size];
tprints(", {code=");
if (umove_or_printaddr(tcp, arg, &buffer))
return 1;
tprints("{code=");
printxval(evdev_mtslots, buffer[0], "ABS_MT_???");
unsigned int i;
tprints(", values=[");
unsigned int i;
for (i = 1; i < ARRAY_SIZE(buffer); i++)
tprintf("%s%d", i > 1 ? ", " : "", buffer[i]);
tprints("]}");
return 1;
}
#endif /* EVIOCGMTSLOTS */
# endif /* EVIOCGMTSLOTS */
#if defined EVIOCGREP || defined EVIOCSREP
# if defined EVIOCGREP || defined EVIOCSREP
static int
repeat_ioctl(struct tcb *tcp, long arg)
{
@ -305,173 +342,185 @@ repeat_ioctl(struct tcb *tcp, long arg)
printpair_int(tcp, arg, "%u");
return 1;
}
#endif /* EVIOCGREP || EVIOCSREP */
# endif /* EVIOCGREP || EVIOCSREP */
static int
evdev_read_ioctl(struct tcb *tcp, const unsigned int code, long arg)
bit_ioctl(struct tcb *tcp, const unsigned int ev_nr, const long arg)
{
if (entering(tcp))
return 1;
if (syserror(tcp))
return 0;
if ((_IOC_NR(code) & ~EV_MAX) == _IOC_NR(EVIOCGBIT(0, 0))) {
switch (_IOC_NR(code) - 0x20) {
case EV_SYN:
return decode_bitset(tcp, arg, evdev_sync,
SYN_MAX, "SYN_???");
case EV_KEY:
return decode_bitset(tcp, arg, evdev_keycode,
KEY_MAX, "KEY_???");
case EV_REL:
return decode_bitset(tcp, arg, evdev_relative_axes,
REL_MAX, "REL_???");
case EV_ABS:
return decode_bitset(tcp, arg,
evdev_abs, ABS_MAX, "ABS_???");
case EV_MSC:
return decode_bitset(tcp, arg,
evdev_misc, MSC_MAX, "MSC_???");
#ifdef EV_SW
case EV_SW:
return decode_bitset(tcp, arg,
evdev_switch, SW_MAX, "SW_???");
#endif
case EV_LED:
return decode_bitset(tcp, arg,
evdev_leds, LED_MAX, "LED_???");
case EV_SND:
return decode_bitset(tcp, arg,
evdev_snd, SND_MAX, "SND_???");
case EV_REP:
return decode_bitset(tcp, arg, evdev_autorepeat,
REP_MAX, "REP_???");
case EV_FF:
return decode_bitset(tcp, arg, evdev_ff_types,
FF_MAX, "FF_???");
case EV_PWR:
printnum_int(tcp, arg, "%d");
return 1;
case EV_FF_STATUS:
return decode_bitset(tcp, arg, evdev_ff_status,
FF_STATUS_MAX, "FF_STATUS_???");
default:
return 0;
}
switch (ev_nr) {
case EV_SYN:
return decode_bitset(tcp, arg, evdev_sync,
SYN_MAX, "SYN_???");
case EV_KEY:
return decode_bitset(tcp, arg, evdev_keycode,
KEY_MAX, "KEY_???");
case EV_REL:
return decode_bitset(tcp, arg, evdev_relative_axes,
REL_MAX, "REL_???");
case EV_ABS:
return decode_bitset(tcp, arg, evdev_abs,
ABS_MAX, "ABS_???");
case EV_MSC:
return decode_bitset(tcp, arg, evdev_misc,
MSC_MAX, "MSC_???");
# ifdef EV_SW
case EV_SW:
return decode_bitset(tcp, arg, evdev_switch,
SW_MAX, "SW_???");
# endif
case EV_LED:
return decode_bitset(tcp, arg, evdev_leds,
LED_MAX, "LED_???");
case EV_SND:
return decode_bitset(tcp, arg, evdev_snd,
SND_MAX, "SND_???");
case EV_REP:
return decode_bitset(tcp, arg, evdev_autorepeat,
REP_MAX, "REP_???");
case EV_FF:
return decode_bitset(tcp, arg, evdev_ff_types,
FF_MAX, "FF_???");
case EV_PWR:
tprints(", ");
printnum_int(tcp, arg, "%d");
return 1;
case EV_FF_STATUS:
return decode_bitset(tcp, arg, evdev_ff_status,
FF_STATUS_MAX, "FF_STATUS_???");
default:
tprints(", ");
printaddr(arg);
return 1;
}
}
if ((_IOC_NR(code) & ~ABS_MAX) == _IOC_NR(EVIOCGABS(0)))
return abs_ioctl(tcp, arg);
static int
evdev_read_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
{
/* fixed-number fixed-length commands */
switch (code) {
case EVIOCGVERSION:
tprints(", ");
printnum_int(tcp, arg, "%" PRIx32);
printnum_int(tcp, arg, "%#x");
return 1;
case EVIOCGEFFECTS:
tprints(", ");
printnum_int(tcp, arg, "%" PRIu32);
printnum_int(tcp, arg, "%u");
return 1;
case EVIOCGID:
return getid_ioctl(tcp, arg);
#ifdef EVIOCGREP
# ifdef EVIOCGREP
case EVIOCGREP:
return repeat_ioctl(tcp, arg);;
#endif
return repeat_ioctl(tcp, arg);
# endif
case EVIOCGKEYCODE:
return keycode_ioctl(tcp, arg);
#ifdef EVIOCGKEYCODE_V2
# ifdef EVIOCGKEYCODE_V2
case EVIOCGKEYCODE_V2:
return keycode_V2_ioctl(tcp, arg);
#endif
# endif
}
/* fixed-number variable-length commands */
switch (_IOC_NR(code)) {
#ifdef EVIOCGMTSLOTS
# ifdef EVIOCGMTSLOTS
case _IOC_NR(EVIOCGMTSLOTS(0)):
return mtslots_ioctl(tcp, code, arg);
#endif
# endif
case _IOC_NR(EVIOCGNAME(0)):
case _IOC_NR(EVIOCGPHYS(0)):
case _IOC_NR(EVIOCGUNIQ(0)):
tprints(", ");
printstr(tcp, arg, tcp->u_rval - 1);
if (syserror(tcp))
printaddr(arg);
else
printstr(tcp, arg, tcp->u_rval);
return 1;
#ifdef EVIOCGPROP
# ifdef EVIOCGPROP
case _IOC_NR(EVIOCGPROP(0)):
return decode_bitset(tcp, arg,
evdev_prop, INPUT_PROP_MAX, "PROP_???");
#endif
return decode_bitset(tcp, arg, evdev_prop,
INPUT_PROP_MAX, "PROP_???");
# endif
case _IOC_NR(EVIOCGSND(0)):
return decode_bitset(tcp, arg,
evdev_snd, SND_MAX, "SND_???");
#ifdef EVIOCGSW
return decode_bitset(tcp, arg, evdev_snd,
SND_MAX, "SND_???");
# ifdef EVIOCGSW
case _IOC_NR(EVIOCGSW(0)):
return decode_bitset(tcp, arg,
evdev_switch, SW_MAX, "SW_???");
#endif
return decode_bitset(tcp, arg, evdev_switch,
SW_MAX, "SW_???");
# endif
case _IOC_NR(EVIOCGKEY(0)):
return decode_bitset(tcp, arg,
evdev_keycode, KEY_MAX, "KEY_???");
return decode_bitset(tcp, arg, evdev_keycode,
KEY_MAX, "KEY_???");
case _IOC_NR(EVIOCGLED(0)):
return decode_bitset(tcp, arg,
evdev_leds, LED_MAX, "LED_???");
default:
return 0;
return decode_bitset(tcp, arg, evdev_leds,
LED_MAX, "LED_???");
}
/* multi-number fixed-length commands */
if ((_IOC_NR(code) & ~ABS_MAX) == _IOC_NR(EVIOCGABS(0)))
return abs_ioctl(tcp, arg);
/* multi-number variable-length commands */
if ((_IOC_NR(code) & ~EV_MAX) == _IOC_NR(EVIOCGBIT(0, 0)))
return bit_ioctl(tcp, _IOC_NR(code) & EV_MAX, arg);
return 0;
}
static int
evdev_write_ioctl(struct tcb *tcp, const unsigned int code, long arg)
evdev_write_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
{
if (exiting(tcp))
return 1;
if ((_IOC_NR(code) & ~ABS_MAX) == _IOC_NR(EVIOCSABS(0)))
return abs_ioctl(tcp, arg);
/* fixed-number fixed-length commands */
switch (code) {
#ifdef EVIOCSREP
# ifdef EVIOCSREP
case EVIOCSREP:
return repeat_ioctl(tcp, arg);
#endif
# endif
case EVIOCSKEYCODE:
return keycode_ioctl(tcp, arg);
#ifdef EVIOCSKEYCODE_V2
# ifdef EVIOCSKEYCODE_V2
case EVIOCSKEYCODE_V2:
return keycode_V2_ioctl(tcp, arg);
#endif
# endif
case EVIOCSFF:
return ff_effect_ioctl(tcp, arg);
case EVIOCRMFF:
#ifdef EVIOCSCLOCKID
case EVIOCSCLOCKID:
#endif
tprintf(", %d", (int) arg);
return 1;
case EVIOCGRAB:
#ifdef EVIOCREVOKE
# ifdef EVIOCREVOKE
case EVIOCREVOKE:
#endif
# endif
tprintf(", %lu", arg);
return 1;
# ifdef EVIOCSCLOCKID
case EVIOCSCLOCKID:
tprints(", ");
printnum_int(tcp, arg, "%u");
return 1;
default:
return 0;
# endif
}
/* multi-number fixed-length commands */
if ((_IOC_NR(code) & ~ABS_MAX) == _IOC_NR(EVIOCSABS(0)))
return abs_ioctl(tcp, arg);
return 0;
}
int
evdev_ioctl(struct tcb *tcp, const unsigned int code, long arg)
MPERS_PRINTER_DECL(int, evdev_ioctl, struct tcb *tcp,
const unsigned int code, const long arg)
{
switch(_IOC_DIR(code)) {
case _IOC_READ:
if (entering(tcp))
return 0;
return evdev_read_ioctl(tcp, code, arg);
case _IOC_WRITE:
if (!evdev_write_ioctl(tcp, code, arg))
tprintf(", %lx", arg);
return 1;
return evdev_write_ioctl(tcp, code, arg) | RVAL_DECODED;
default:
return 0;
return RVAL_DECODED;
}
}

111
execve.c
View File

@ -36,41 +36,72 @@
static void
printargv(struct tcb *tcp, long addr)
{
union {
unsigned int p32;
unsigned long p64;
char data[sizeof(long)];
} cp;
const char *sep;
unsigned int n = 0;
const unsigned wordsize = current_wordsize;
cp.p64 = 1;
for (sep = ""; !abbrev(tcp) || n < max_strlen / 2; sep = ", ", ++n) {
if (umoven_or_printaddr(tcp, addr, wordsize, cp.data))
return;
if (wordsize == 4)
cp.p64 = cp.p32;
if (cp.p64 == 0)
break;
tprints(sep);
printstr(tcp, cp.p64, -1);
addr += wordsize;
if (!addr || !verbose(tcp)) {
printaddr(addr);
return;
}
if (cp.p64)
tprintf("%s...", sep);
const char *const start_sep = "[";
const char *sep = start_sep;
const unsigned int wordsize = current_wordsize;
unsigned int n;
for (n = 0; addr; sep = ", ", addr += wordsize, ++n) {
union {
unsigned int p32;
unsigned long p64;
char data[sizeof(long)];
} cp;
if (umoven(tcp, addr, wordsize, cp.data)) {
if (sep == start_sep)
printaddr(addr);
else
tprints(", ???]");
return;
}
if (!(wordsize < sizeof(cp.p64) ? cp.p32 : cp.p64)) {
if (sep == start_sep)
tprints(start_sep);
break;
}
if (abbrev(tcp) && n >= max_strlen) {
tprintf("%s...", sep);
break;
}
tprints(sep);
printstr(tcp, wordsize < sizeof(cp.p64) ? cp.p32 : cp.p64, -1);
}
tprints("]");
}
static void
printargc(const char *fmt, struct tcb *tcp, long addr)
printargc(struct tcb *tcp, long addr)
{
int count;
if (!addr || !verbose(tcp)) {
printaddr(addr);
return;
}
bool unterminated = false;
unsigned int count = 0;
char *cp = NULL;
for (count = 0; !umoven(tcp, addr, current_wordsize, &cp) && cp; count++) {
addr += current_wordsize;
for (; addr; addr += current_wordsize, ++count) {
if (umoven(tcp, addr, current_wordsize, &cp)) {
if (count) {
unterminated = true;
break;
}
printaddr(addr);
return;
}
if (!cp)
break;
}
tprintf(fmt, count, count == 1 ? "" : "s");
tprintf("[/* %u var%s%s */]",
count, count == 1 ? "" : "s",
unterminated ? ", unterminated" : "");
}
static void
@ -79,24 +110,10 @@ decode_execve(struct tcb *tcp, const unsigned int index)
printpath(tcp, tcp->u_arg[index + 0]);
tprints(", ");
if (!tcp->u_arg[index + 1] || !verbose(tcp))
printaddr(tcp->u_arg[index + 1]);
else {
tprints("[");
printargv(tcp, tcp->u_arg[index + 1]);
tprints("]");
}
printargv(tcp, tcp->u_arg[index + 1]);
tprints(", ");
if (!tcp->u_arg[index + 2] || !verbose(tcp))
printaddr(tcp->u_arg[index + 2]);
else if (abbrev(tcp))
printargc("[/* %d var%s */]", tcp, tcp->u_arg[index + 2]);
else {
tprints("[");
printargv(tcp, tcp->u_arg[index + 2]);
tprints("]");
}
(abbrev(tcp) ? printargc : printargv) (tcp, tcp->u_arg[index + 2]);
}
SYS_FUNC(execve)
@ -121,13 +138,7 @@ SYS_FUNC(execv)
{
printpath(tcp, tcp->u_arg[0]);
tprints(", ");
if (!tcp->u_arg[1] || !verbose(tcp))
printaddr(tcp->u_arg[1]);
else {
tprints("[");
printargv(tcp, tcp->u_arg[1]);
tprints("]");
}
printargv(tcp, tcp->u_arg[1]);
return RVAL_DECODED;
}

View File

@ -39,9 +39,8 @@
SYS_FUNC(fanotify_init)
{
unsigned flags;
unsigned int flags = tcp->u_arg[0];
flags = tcp->u_arg[0];
printxval(fan_classes, flags & FAN_ALL_CLASS_BITS, "FAN_CLASS_???");
flags &= ~FAN_ALL_CLASS_BITS;
if (flags) {
@ -59,23 +58,21 @@ SYS_FUNC(fanotify_init)
SYS_FUNC(fanotify_mark)
{
unsigned long long mask = 0;
int argn;
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
printflags(fan_mark_flags, (unsigned) tcp->u_arg[1], "FAN_MARK_???");
printflags(fan_mark_flags, tcp->u_arg[1], "FAN_MARK_???");
tprints(", ");
/*
* the mask argument is defined as 64-bit,
* but kernel uses the lower 32 bits only.
*/
argn = getllval(tcp, &mask, 2);
unsigned long long mask = 0;
int argn = getllval(tcp, &mask, 2);
#ifdef HPPA
/* Parsic is weird. See arch/parisc/kernel/sys_parisc32.c. */
mask = (mask << 32) | (mask >> 32);
#endif
printflags(fan_event_flags, mask, "FAN_???");
printflags64(fan_event_flags, mask, "FAN_???");
tprints(", ");
if ((int) tcp->u_arg[argn] == FAN_NOFD)
tprints("FAN_NOFD, ");

34
fcntl.c
View File

@ -43,9 +43,9 @@ static void
print_struct_flock64(const struct_kernel_flock64 *fl, const int getlk)
{
tprints("{l_type=");
printxval(lockfcmds, fl->l_type, "F_???");
printxval(lockfcmds, (unsigned short) fl->l_type, "F_???");
tprints(", l_whence=");
printxval(whence_codes, fl->l_whence, "SEEK_???");
printxval(whence_codes, (unsigned short) fl->l_whence, "SEEK_???");
tprintf(", l_start=%lld, l_len=%lld",
(long long) fl->l_start, (long long) fl->l_len);
if (getlk)
@ -87,7 +87,9 @@ print_f_owner_ex(struct tcb *tcp, const long addr)
static int
print_fcntl(struct tcb *tcp)
{
switch (tcp->u_arg[1]) {
const unsigned int cmd = tcp->u_arg[1];
switch (cmd) {
case F_SETFD:
tprints(", ");
printflags(fdflags, tcp->u_arg[2], "FD_???");
@ -120,15 +122,15 @@ print_fcntl(struct tcb *tcp)
break;
case F_NOTIFY:
tprints(", ");
printflags(notifyflags, tcp->u_arg[2], "DN_???");
printflags_long(notifyflags, tcp->u_arg[2], "DN_???");
break;
case F_SETLEASE:
tprints(", ");
printxval(lockfcmds, tcp->u_arg[2], "F_???");
printxval_long(lockfcmds, tcp->u_arg[2], "F_???");
break;
case F_ADD_SEALS:
tprints(", ");
printflags(f_seals, tcp->u_arg[2], "F_SEAL_???");
printflags_long(f_seals, tcp->u_arg[2], "F_SEAL_???");
break;
case F_SETSIG:
tprints(", ");
@ -140,7 +142,8 @@ print_fcntl(struct tcb *tcp)
case F_GETFD:
if (entering(tcp) || syserror(tcp) || tcp->u_rval == 0)
return 0;
tcp->auxstr = sprintflags("flags ", fdflags, tcp->u_rval);
tcp->auxstr = sprintflags("flags ", fdflags,
(unsigned long) tcp->u_rval);
return RVAL_HEX | RVAL_STR;
case F_GETFL:
if (entering(tcp) || syserror(tcp))
@ -168,12 +171,13 @@ print_fcntl(struct tcb *tcp)
case F_GETLEASE:
if (entering(tcp) || syserror(tcp))
return 0;
tcp->auxstr = xlookup(lockfcmds, tcp->u_rval);
tcp->auxstr = xlookup(lockfcmds, (unsigned long) tcp->u_rval);
return RVAL_HEX | RVAL_STR;
case F_GET_SEALS:
if (entering(tcp) || syserror(tcp) || tcp->u_rval == 0)
return 0;
tcp->auxstr = sprintflags("seals ", f_seals, tcp->u_rval);
tcp->auxstr = sprintflags("seals ", f_seals,
(unsigned long) tcp->u_rval);
return RVAL_HEX | RVAL_STR;
case F_GETSIG:
if (entering(tcp) || syserror(tcp) || tcp->u_rval == 0)
@ -192,7 +196,8 @@ SYS_FUNC(fcntl)
if (entering(tcp)) {
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
const char *str = xlookup(fcntlcmds, tcp->u_arg[1]);
const unsigned int cmd = tcp->u_arg[1];
const char *str = xlookup(fcntlcmds, cmd);
if (str) {
tprints(str);
} else {
@ -201,7 +206,7 @@ SYS_FUNC(fcntl)
* constants, but we would like to show them
* for better debugging experience.
*/
printxval(fcntl64cmds, tcp->u_arg[1], "F_???");
printxval(fcntl64cmds, cmd, "F_???");
}
}
return print_fcntl(tcp);
@ -209,17 +214,18 @@ SYS_FUNC(fcntl)
SYS_FUNC(fcntl64)
{
const unsigned int cmd = tcp->u_arg[1];
if (entering(tcp)) {
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
const char *str = xlookup(fcntl64cmds, tcp->u_arg[1]);
const char *str = xlookup(fcntl64cmds, cmd);
if (str) {
tprints(str);
} else {
printxval(fcntlcmds, tcp->u_arg[1], "F_???");
printxval(fcntlcmds, cmd, "F_???");
}
}
switch (tcp->u_arg[1]) {
switch (cmd) {
case F_SETLK64:
case F_SETLKW64:
tprints(", ");

View File

@ -34,7 +34,8 @@ typedef struct seccomp_fprog seccomp_fprog_t;
#include MPERS_DEFS
MPERS_PRINTER_DECL(bool, fetch_seccomp_fprog)(struct tcb *tcp, const long addr, void *p)
MPERS_PRINTER_DECL(bool, fetch_seccomp_fprog,
struct tcb *tcp, const long addr, void *p)
{
struct seccomp_fprog *pfp = p;
seccomp_fprog_t mfp;

View File

@ -51,7 +51,8 @@ typedef struct_kernel_flock64 struct_flock64;
&& FLOCK_MEMBERS_EQ(type, l_len) \
&& FLOCK_MEMBERS_EQ(type, l_pid))
MPERS_PRINTER_DECL(bool, fetch_struct_flock)(struct tcb *tcp, const long addr, void *p)
MPERS_PRINTER_DECL(bool, fetch_struct_flock,
struct tcb *tcp, const long addr, void *p)
{
struct_kernel_flock64 *pfl = p;
struct_flock mfl;
@ -70,7 +71,8 @@ MPERS_PRINTER_DECL(bool, fetch_struct_flock)(struct tcb *tcp, const long addr, v
return true;
}
MPERS_PRINTER_DECL(bool, fetch_struct_flock64)(struct tcb *tcp, const long addr, void *p)
MPERS_PRINTER_DECL(bool, fetch_struct_flock64,
struct tcb *tcp, const long addr, void *p)
{
struct_kernel_flock64 *pfl = p;
struct_flock64 mfl;

121
fetch_struct_statfs.c Normal file
View File

@ -0,0 +1,121 @@
/*
* Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.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.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 "defs.h"
#include DEF_MPERS_TYPE(struct_statfs)
#include DEF_MPERS_TYPE(struct_statfs64)
#include <linux/types.h>
#include <asm/statfs.h>
typedef struct statfs struct_statfs;
typedef struct statfs64 struct_statfs64;
#include MPERS_DEFS
#include "statfs.h"
MPERS_PRINTER_DECL(bool, fetch_struct_statfs,
struct tcb *tcp, const long addr, struct strace_statfs *p)
{
struct_statfs b;
if (umove_or_printaddr(tcp, addr, &b))
return false;
p->f_type = widen_to_ull(b.f_type);
p->f_bsize = widen_to_ull(b.f_bsize);
p->f_blocks = widen_to_ull(b.f_blocks);
p->f_bfree = widen_to_ull(b.f_bfree);
p->f_bavail = widen_to_ull(b.f_bavail);
p->f_files = widen_to_ull(b.f_files);
p->f_ffree = widen_to_ull(b.f_ffree);
#if defined HAVE_STRUCT_STATFS_F_FSID_VAL
p->f_fsid[0] = widen_to_ull(b.f_fsid.val[0]);
p->f_fsid[1] = widen_to_ull(b.f_fsid.val[1]);
#elif defined HAVE_STRUCT_STATFS_F_FSID___VAL
p->f_fsid[0] = widen_to_ull(b.f_fsid.__val[0]);
p->f_fsid[1] = widen_to_ull(b.f_fsid.__val[1]);
#endif
p->f_namelen = widen_to_ull(b.f_namelen);
#ifdef HAVE_STRUCT_STATFS_F_FRSIZE
p->f_frsize = widen_to_ull(b.f_frsize);
#endif
#ifdef HAVE_STRUCT_STATFS_F_FLAGS
p->f_flags = widen_to_ull(b.f_flags);
#endif
return true;
}
#if defined ARM || (defined AARCH64 && defined IN_MPERS)
/* See arch/arm/kernel/sys_oabi-compat.c for details. */
# define COMPAT_STATFS64_PADDED_SIZE (sizeof(struct_statfs64) + 4)
#endif
MPERS_PRINTER_DECL(bool, fetch_struct_statfs64,
struct tcb *tcp, const long addr, const unsigned long size,
struct strace_statfs *p)
{
struct_statfs64 b;
if (sizeof(b) != size
#ifdef COMPAT_STATFS64_PADDED_SIZE
&& sizeof(b) != COMPAT_STATFS64_PADDED_SIZE
#endif
) {
printaddr(addr);
return false;
}
if (umove_or_printaddr(tcp, addr, &b))
return false;
p->f_type = widen_to_ull(b.f_type);
p->f_bsize = widen_to_ull(b.f_bsize);
p->f_blocks = widen_to_ull(b.f_blocks);
p->f_bfree = widen_to_ull(b.f_bfree);
p->f_bavail = widen_to_ull(b.f_bavail);
p->f_files = widen_to_ull(b.f_files);
p->f_ffree = widen_to_ull(b.f_ffree);
#if defined HAVE_STRUCT_STATFS64_F_FSID_VAL
p->f_fsid[0] = widen_to_ull(b.f_fsid.val[0]);
p->f_fsid[1] = widen_to_ull(b.f_fsid.val[1]);
#elif defined HAVE_STRUCT_STATFS64_F_FSID___VAL
p->f_fsid[0] = widen_to_ull(b.f_fsid.__val[0]);
p->f_fsid[1] = widen_to_ull(b.f_fsid.__val[1]);
#endif
p->f_namelen = widen_to_ull(b.f_namelen);
#ifdef HAVE_STRUCT_STATFS64_F_FRSIZE
p->f_frsize = widen_to_ull(b.f_frsize);
#endif
#ifdef HAVE_STRUCT_STATFS64_F_FLAGS
p->f_flags = widen_to_ull(b.f_flags);
#endif
return true;
}

248
file_ioctl.c Normal file
View File

@ -0,0 +1,248 @@
/*
* Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
* 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.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 "defs.h"
#include <linux/ioctl.h>
#include <linux/fs.h>
#ifdef HAVE_LINUX_FIEMAP_H
# include <linux/fiemap.h>
# include "xlat/fiemap_flags.h"
# include "xlat/fiemap_extent_flags.h"
#endif
#ifndef FICLONE
# define FICLONE _IOW(0x94, 9, int)
#endif
#ifndef FICLONERANGE
# define FICLONERANGE _IOW(0x94, 13, struct file_clone_range)
struct file_clone_range {
int64_t src_fd;
uint64_t src_offset;
uint64_t src_length;
uint64_t dest_offset;
};
#endif
#ifndef FIDEDUPERANGE
# define FIDEDUPERANGE _IOWR(0x94, 54, struct file_dedupe_range)
struct file_dedupe_range_info {
int64_t dest_fd; /* in - destination file */
uint64_t dest_offset; /* in - start of extent in destination */
uint64_t bytes_deduped; /* out - total # of bytes we were able
* to dedupe from this file. */
/* status of this dedupe operation:
* < 0 for error
* == FILE_DEDUPE_RANGE_SAME if dedupe succeeds
* == FILE_DEDUPE_RANGE_DIFFERS if data differs
*/
int32_t status; /* out - see above description */
uint32_t reserved; /* must be zero */
};
struct file_dedupe_range {
uint64_t src_offset; /* in - start of extent in source */
uint64_t src_length; /* in - length of extent */
uint16_t dest_count; /* in - total elements in info array */
uint16_t reserved1; /* must be zero */
uint32_t reserved2; /* must be zero */
struct file_dedupe_range_info info[0];
};
#endif
static bool
print_file_dedupe_range_info(struct tcb *tcp, void *elem_buf,
size_t elem_size, void *data)
{
const struct file_dedupe_range_info *info = elem_buf;
unsigned int *count = data;
if (count) {
if (*count == 0) {
tprints("...");
return false;
}
--*count;
}
if (entering(tcp)) {
tprints("{dest_fd=");
printfd(tcp, info->dest_fd);
tprintf(", dest_offset=%" PRIu64 "}",
(uint64_t) info->dest_offset);
} else {
tprintf("{bytes_deduped=%" PRIu64 ", status=%d}",
(uint64_t) info->bytes_deduped, info->status);
}
return true;
}
#ifdef HAVE_LINUX_FIEMAP_H
static bool
print_fiemap_extent(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
{
const struct fiemap_extent *fe = elem_buf;
tprintf("{fe_logical=%" PRI__u64
", fe_physical=%" PRI__u64
", fe_length=%" PRI__u64 ", ",
fe->fe_logical, fe->fe_physical, fe->fe_length);
printflags64(fiemap_extent_flags, fe->fe_flags,
"FIEMAP_EXTENT_???");
tprints("}");
return true;
}
#endif /* HAVE_LINUX_FIEMAP_H */
int
file_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
{
switch (code) {
case FICLONE: /* W */
tprintf(", %d", (int) arg);
break;
case FICLONERANGE: { /* W */
struct file_clone_range args;
tprints(", ");
if (umove_or_printaddr(tcp, arg, &args))
break;
tprints("{src_fd=");
printfd(tcp, args.src_fd);
tprintf(", src_offset=%" PRIu64
", src_length=%" PRIu64
", dest_offset=%" PRIu64 "}",
(uint64_t) args.src_offset,
(uint64_t) args.src_length,
(uint64_t) args.dest_offset);
break;
}
case FIDEDUPERANGE: { /* RW */
struct file_dedupe_range args;
struct file_dedupe_range_info info;
unsigned int *limit = NULL;
unsigned int count = 2;
bool rc;
if (entering(tcp))
tprints(", ");
else if (syserror(tcp))
break;
else
tprints(" => ");
if (umove_or_printaddr(tcp, arg, &args))
break;
tprints("{");
if (entering(tcp)) {
tprintf("src_offset=%" PRIu64
", src_length=%" PRIu64
", dest_count=%hu, ",
(uint64_t) args.src_offset,
(uint64_t) args.src_length,
(uint16_t) args.dest_count);
}
tprints("info=");
/* Limit how many elements we print in abbrev mode. */
if (abbrev(tcp) && args.dest_count > count)
limit = &count;
rc = print_array(tcp, arg + offsetof(typeof(args), info),
args.dest_count, &info, sizeof(info),
umoven_or_printaddr,
print_file_dedupe_range_info, limit);
tprints("}");
if (!rc || exiting(tcp))
break;
return 0;
}
#ifdef HAVE_LINUX_FIEMAP_H
case FS_IOC_FIEMAP: {
struct fiemap args;
if (entering(tcp))
tprints(", ");
else if (syserror(tcp))
break;
else
tprints(" => ");
if (umove_or_printaddr(tcp, arg, &args))
break;
if (entering(tcp)) {
tprintf("{fm_start=%" PRI__u64 ", "
"fm_length=%" PRI__u64 ", "
"fm_flags=",
args.fm_start, args.fm_length);
printflags64(fiemap_flags, args.fm_flags,
"FIEMAP_FLAG_???");
tprintf(", fm_extent_count=%u}", args.fm_extent_count);
return 0;
}
tprints("{fm_flags=");
printflags64(fiemap_flags, args.fm_flags,
"FIEMAP_FLAG_???");
tprintf(", fm_mapped_extents=%u",
args.fm_mapped_extents);
tprints(", fm_extents=");
if (abbrev(tcp)) {
tprints("...");
} else {
struct fiemap_extent fe;
print_array(tcp,
arg + offsetof(typeof(args), fm_extents),
args.fm_mapped_extents, &fe, sizeof(fe),
umoven_or_printaddr,
print_fiemap_extent, 0);
}
tprints("}");
break;
}
#endif /* HAVE_LINUX_FIEMAP_H */
default:
return RVAL_DECODED;
};
return RVAL_DECODED | 1;
}

65
fs_x_ioctl.c Normal file
View File

@ -0,0 +1,65 @@
/*
* Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
* Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.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.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 "defs.h"
#include <linux/fs.h>
int
fs_x_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
{
switch (code) {
#ifdef FITRIM
/* First seen in linux-2.6.37 */
case FITRIM: {
struct fstrim_range fstrim;
tprints(", ");
if (!umove_or_printaddr(tcp, arg, &fstrim))
tprintf("{start=%#" PRIx64
", len=%#" PRIx64
", minlen=%#" PRIx64 "}",
(uint64_t) fstrim.start,
(uint64_t) fstrim.len,
(uint64_t) fstrim.minlen);
break;
}
#endif
/* No arguments */
#ifdef FIFREEZE
case FIFREEZE:
case FITHAW:
break;
#endif
default:
return RVAL_DECODED;
}
return RVAL_DECODED | 1;
}

12
fstatfs.c Normal file
View File

@ -0,0 +1,12 @@
#include "defs.h"
SYS_FUNC(fstatfs)
{
if (entering(tcp)) {
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
} else {
print_struct_statfs(tcp, tcp->u_arg[1]);
}
return 0;
}

14
fstatfs64.c Normal file
View File

@ -0,0 +1,14 @@
#include "defs.h"
SYS_FUNC(fstatfs64)
{
const unsigned long size = tcp->u_arg[1];
if (entering(tcp)) {
printfd(tcp, tcp->u_arg[0]);
tprintf(", %lu, ", size);
} else {
print_struct_statfs64(tcp, tcp->u_arg[2], size);
}
return 0;
}

79
gcc_compat.h Normal file
View File

@ -0,0 +1,79 @@
/*
* Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.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.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
*/
#ifndef GCC_COMPAT_H_
#define GCC_COMPAT_H_
#if defined __GNUC__ && defined __GNUC_MINOR__
# define GNUC_PREREQ(maj, min) \
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
#else
# define __attribute__(x) /* empty */
# define GNUC_PREREQ(maj, min) 0
#endif
#if GNUC_PREREQ(2, 5)
# define ATTRIBUTE_NORETURN __attribute__((__noreturn__))
#else
# define ATTRIBUTE_NORETURN /* empty */
#endif
#if GNUC_PREREQ(2, 7)
# define ATTRIBUTE_FORMAT(args) __attribute__((__format__ args))
# define ATTRIBUTE_ALIGNED(arg) __attribute__((__aligned__(arg)))
# define ATTRIBUTE_PACKED __attribute__((__packed__))
#else
# define ATTRIBUTE_FORMAT(args) /* empty */
# define ATTRIBUTE_ALIGNED(arg) /* empty */
# define ATTRIBUTE_PACKED /* empty */
#endif
#if GNUC_PREREQ(3, 0)
# define ATTRIBUTE_MALLOC __attribute__((__malloc__))
#else
# define ATTRIBUTE_MALLOC /* empty */
#endif
#if GNUC_PREREQ(3, 1)
# define ATTRIBUTE_NOINLINE __attribute__((__noinline__))
#else
# define ATTRIBUTE_NOINLINE /* empty */
#endif
#if GNUC_PREREQ(4, 0)
# define ATTRIBUTE_SENTINEL __attribute__((__sentinel__))
#else
# define ATTRIBUTE_SENTINEL /* empty */
#endif
#if GNUC_PREREQ(4, 3)
# define ATTRIBUTE_ALLOC_SIZE(args) __attribute__((__alloc_size__ args))
#else
# define ATTRIBUTE_ALLOC_SIZE(args) /* empty */
#endif
#endif

64
hdio.c Normal file
View File

@ -0,0 +1,64 @@
/*
* Copyright (c) 2009, 2010 Jeff Mahoney <jeffm@suse.com>
* Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.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.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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 "defs.h"
#include DEF_MPERS_TYPE(struct_hd_geometry)
#include <linux/hdreg.h>
typedef struct hd_geometry struct_hd_geometry;
#include MPERS_DEFS
MPERS_PRINTER_DECL(int, hdio_ioctl, struct tcb *tcp,
const unsigned int code, const long arg)
{
switch (code) {
case HDIO_GETGEO:
if (entering(tcp))
return 0;
else {
struct_hd_geometry geo;
tprints(", ");
if (!umove_or_printaddr(tcp, arg, &geo))
tprintf("{heads=%u, sectors=%u, "
"cylinders=%hu, start=%lu}",
(unsigned) geo.heads,
(unsigned) geo.sectors,
geo.cylinders,
(unsigned long) geo.start);
}
break;
default:
return RVAL_DECODED;
}
return RVAL_DECODED | 1;
}

155
io.c
View File

@ -57,58 +57,57 @@ SYS_FUNC(write)
return RVAL_DECODED;
}
struct print_iovec_config {
int decode_iov;
unsigned long data_size;
};
static bool
print_iovec(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
{
const unsigned long *iov;
unsigned long iov_buf[2];
struct print_iovec_config *c = data;
if (elem_size < sizeof(iov_buf)) {
iov_buf[0] = ((unsigned int *) elem_buf)[0];
iov_buf[1] = ((unsigned int *) elem_buf)[1];
iov = iov_buf;
} else {
iov = elem_buf;
}
tprints("{");
if (c->decode_iov) {
unsigned long len = iov[1];
if (len > c->data_size)
len = c->data_size;
c->data_size -= len;
printstr(tcp, iov[0], len);
} else {
printaddr(iov[0]);
}
tprintf(", %lu}", iov[1]);
return true;
}
/*
* data_size limits the cumulative size of printed data.
* Example: recvmsg returing a short read.
*/
void
tprint_iov_upto(struct tcb *tcp, unsigned long len, unsigned long addr, int decode_iov, unsigned long data_size)
tprint_iov_upto(struct tcb *tcp, unsigned long len, unsigned long addr,
int decode_iov, unsigned long data_size)
{
unsigned long iov[2];
unsigned long size, cur, end, abbrev_end;
const unsigned long sizeof_iov = current_wordsize * 2;
struct print_iovec_config config =
{ .decode_iov = decode_iov, .data_size = data_size };
if (!len) {
tprints("[]");
return;
}
size = len * sizeof_iov;
end = addr + size;
if (!verbose(tcp) || (exiting(tcp) && syserror(tcp)) ||
!addr || size / sizeof_iov != len || end < addr) {
printaddr(addr);
return;
}
if (abbrev(tcp)) {
abbrev_end = addr + max_strlen * sizeof_iov;
if (abbrev_end < addr)
abbrev_end = end;
} else {
abbrev_end = end;
}
tprints("[");
for (cur = addr; cur < end; cur += sizeof_iov) {
if (cur > addr)
tprints(", ");
if (cur >= abbrev_end) {
tprints("...");
break;
}
if (umove_ulong_array_or_printaddr(tcp, cur, iov,
ARRAY_SIZE(iov)))
break;
tprints("{");
if (decode_iov) {
unsigned long len = iov[1];
if (len > data_size)
len = data_size;
data_size -= len;
printstr(tcp, iov[0], len);
} else
printaddr(iov[0]);
tprintf(", %lu}", iov[1]);
}
tprints("]");
print_array(tcp, addr, len, iov, current_wordsize * 2,
umoven_or_printaddr, print_iovec, &config);
}
void
@ -123,7 +122,8 @@ SYS_FUNC(readv)
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
} else {
tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], 1);
tprint_iov_upto(tcp, tcp->u_arg[2], tcp->u_arg[1], 1,
tcp->u_rval);
tprintf(", %lu", tcp->u_arg[2]);
}
return 0;
@ -161,7 +161,7 @@ SYS_FUNC(pread)
else
printstr(tcp, tcp->u_arg[1], tcp->u_rval);
tprintf(", %lu, ", tcp->u_arg[2]);
printllval(tcp, "%llu", PREAD_OFFSET_ARG);
printllval(tcp, "%lld", PREAD_OFFSET_ARG);
}
return 0;
}
@ -172,13 +172,13 @@ SYS_FUNC(pwrite)
tprints(", ");
printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]);
tprintf(", %lu, ", tcp->u_arg[2]);
printllval(tcp, "%llu", PREAD_OFFSET_ARG);
printllval(tcp, "%lld", PREAD_OFFSET_ARG);
return RVAL_DECODED;
}
static void
print_llu_from_low_high_val(struct tcb *tcp, int arg)
print_lld_from_low_high_val(struct tcb *tcp, int arg)
{
#if SIZEOF_LONG == SIZEOF_LONG_LONG
# if SUPPORTED_PERSONALITIES > 1
@ -188,49 +188,82 @@ print_llu_from_low_high_val(struct tcb *tcp, int arg)
if (current_wordsize == sizeof(long))
# endif
# endif
tprintf("%lu", (unsigned long) tcp->u_arg[arg]);
tprintf("%ld", tcp->u_arg[arg]);
# if SUPPORTED_PERSONALITIES > 1
else
tprintf("%lu",
tprintf("%ld",
((unsigned long) tcp->u_arg[arg + 1] << current_wordsize * 8)
| (unsigned long) tcp->u_arg[arg]);
# endif
#else
# ifdef X32
if (current_personality == 0)
tprintf("%llu", (unsigned long long) tcp->ext_arg[arg]);
tprintf("%lld", tcp->ext_arg[arg]);
else
# endif
tprintf("%llu",
((unsigned long long) (unsigned long) tcp->u_arg[arg + 1] << sizeof(long) * 8)
| (unsigned long long) (unsigned long) tcp->u_arg[arg]);
tprintf("%lld",
(widen_to_ull(tcp->u_arg[arg + 1]) << sizeof(long) * 8)
| widen_to_ull(tcp->u_arg[arg]));
#endif
}
SYS_FUNC(preadv)
#include "xlat/rwf_flags.h"
static int
do_preadv(struct tcb *tcp, const int flags_arg)
{
if (entering(tcp)) {
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
} else {
tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], 1);
tprint_iov_upto(tcp, tcp->u_arg[2], tcp->u_arg[1], 1,
tcp->u_rval);
tprintf(", %lu, ", tcp->u_arg[2]);
print_llu_from_low_high_val(tcp, 3);
print_lld_from_low_high_val(tcp, 3);
if (flags_arg >= 0) {
tprints(", ");
printflags(rwf_flags, tcp->u_arg[flags_arg], "RWF_???");
}
}
return 0;
}
SYS_FUNC(pwritev)
SYS_FUNC(preadv)
{
return do_preadv(tcp, -1);
}
SYS_FUNC(preadv2)
{
return do_preadv(tcp, 5);
}
static int
do_pwritev(struct tcb *tcp, const int flags_arg)
{
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], 1);
tprintf(", %lu, ", tcp->u_arg[2]);
print_llu_from_low_high_val(tcp, 3);
print_lld_from_low_high_val(tcp, 3);
if (flags_arg >= 0) {
tprints(", ");
printflags(rwf_flags, tcp->u_arg[flags_arg], "RWF_???");
}
return RVAL_DECODED;
}
SYS_FUNC(pwritev)
{
return do_pwritev(tcp, -1);
}
SYS_FUNC(pwritev2)
{
return do_pwritev(tcp, 5);
}
#include "xlat/splice_flags.h"
SYS_FUNC(tee)
@ -255,13 +288,13 @@ SYS_FUNC(splice)
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
/* loff_t *off_in */
printnum_int64(tcp, tcp->u_arg[1], "%" PRIu64);
printnum_int64(tcp, tcp->u_arg[1], "%" PRId64);
tprints(", ");
/* int fd_out */
printfd(tcp, tcp->u_arg[2]);
tprints(", ");
/* loff_t *off_out */
printnum_int64(tcp, tcp->u_arg[3], "%" PRIu64);
printnum_int64(tcp, tcp->u_arg[3], "%" PRId64);
tprints(", ");
/* size_t len */
tprintf("%lu, ", tcp->u_arg[4]);

25
ioctl.c
View File

@ -91,7 +91,7 @@ evdev_decode_number(const unsigned int code)
if (_IOC_DIR(code) == _IOC_WRITE) {
if (nr >= 0xc0 && nr <= 0xc0 + 0x3f) {
tprints("EVIOCSABS(");
printxval(evdev_abs, nr - 0xc0, "EV_???");
printxval(evdev_abs, nr - 0xc0, "ABS_???");
tprints(")");
return 1;
}
@ -231,8 +231,17 @@ ioctl_decode(struct tcb *tcp)
switch (_IOC_TYPE(code)) {
#if defined(ALPHA) || defined(POWERPC)
case 'f': case 't': case 'T':
case 'f': {
int ret = file_ioctl(tcp, code, arg);
if (ret != RVAL_DECODED)
return ret;
}
case 't':
case 'T':
return term_ioctl(tcp, code, arg);
#else /* !ALPHA */
case 'f':
return file_ioctl(tcp, code, arg);
case 0x54:
#endif /* !ALPHA */
return term_ioctl(tcp, code, arg);
@ -241,9 +250,11 @@ ioctl_decode(struct tcb *tcp)
case 'p':
return rtc_ioctl(tcp, code, arg);
case 0x03:
return hdio_ioctl(tcp, code, arg);
case 0x12:
case 'X':
return block_ioctl(tcp, code, arg);
case 'X':
return fs_x_ioctl(tcp, code, arg);
#ifdef HAVE_SCSI_SG_H
case 0x22:
return scsi_ioctl(tcp, code, arg);
@ -262,6 +273,14 @@ ioctl_decode(struct tcb *tcp)
#ifdef HAVE_LINUX_INPUT_H
case 'E':
return evdev_ioctl(tcp, code, arg);
#endif
#ifdef HAVE_LINUX_USERFAULTFD_H
case 0xaa:
return uffdio_ioctl(tcp, code, arg);
#endif
#ifdef HAVE_LINUX_BTRFS_H
case 0x94:
return btrfs_ioctl(tcp, code, arg);
#endif
default:
break;

View File

@ -51,19 +51,19 @@ enum {
#define IOPRIO_PRIO_DATA(mask) ((mask) & IOPRIO_PRIO_MASK)
static const char *
sprint_ioprio(int ioprio)
sprint_ioprio(unsigned int ioprio)
{
static char outstr[256];
const char *str;
int class, data;
unsigned int class, data;
class = IOPRIO_PRIO_CLASS(ioprio);
data = IOPRIO_PRIO_DATA(ioprio);
str = xlookup(ioprio_class, class);
if (str)
sprintf(outstr, "IOPRIO_PRIO_VALUE(%s,%d)", str, data);
sprintf(outstr, "IOPRIO_PRIO_VALUE(%s, %d)", str, data);
else
sprintf(outstr, "IOPRIO_PRIO_VALUE(%#x /* %s */,%d)",
sprintf(outstr, "IOPRIO_PRIO_VALUE(%#x /* %s */, %d)",
class, "IOPRIO_CLASS_???", data);
return outstr;

View File

@ -43,12 +43,16 @@
#include "xlat/semop_flags.h"
#if defined HAVE_SYS_SEM_H || defined HAVE_LINUX_SEM_H
static void
tprint_sembuf(const struct sembuf *sb)
static bool
print_sembuf(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
{
const struct sembuf *sb = elem_buf;
tprintf("{%u, %d, ", sb->sem_num, sb->sem_op);
printflags(semop_flags, sb->sem_flg, "SEM_???");
printflags(semop_flags, (unsigned short) sb->sem_flg, "SEM_???");
tprints("}");
return true;
}
#endif
@ -56,35 +60,9 @@ static void
tprint_sembuf_array(struct tcb *tcp, const long addr, const unsigned long count)
{
#if defined HAVE_SYS_SEM_H || defined HAVE_LINUX_SEM_H
unsigned long max_count;
struct sembuf sb;
if (abbrev(tcp))
max_count = (max_strlen < count) ? max_strlen : count;
else
max_count = count;
if (!max_count)
printaddr(addr);
else if (!umove_or_printaddr(tcp, addr, &sb)) {
unsigned long i;
tprints("[");
tprint_sembuf(&sb);
for (i = 1; i < max_count; ++i) {
tprints(", ");
if (umove_or_printaddr(tcp, addr + i * sizeof(sb), &sb))
break;
else
tprint_sembuf(&sb);
}
if (i < max_count || max_count < count)
tprints(", ...");
tprints("]");
}
print_array(tcp, addr, count, &sb, sizeof(sb),
umoven_or_printaddr, print_sembuf, 0);
#else
printaddr(addr);
#endif

57
kexec.c
View File

@ -37,56 +37,49 @@
# define KEXEC_SEGMENT_MAX 16
#endif
static void
print_seg(const unsigned long *seg)
static bool
print_seg(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
{
const unsigned long *seg;
unsigned long seg_buf[4];
if (elem_size < sizeof(seg_buf)) {
unsigned int i;
for (i = 0; i < ARRAY_SIZE(seg_buf); ++i)
seg_buf[i] = ((unsigned int *) elem_buf)[i];
seg = seg_buf;
} else {
seg = elem_buf;
}
tprints("{");
printaddr(seg[0]);
tprintf(", %lu, ", seg[1]);
printaddr(seg[2]);
tprintf(", %lu}", seg[3]);
return true;
}
static void
print_kexec_segments(struct tcb *tcp, const unsigned long addr,
const unsigned long len)
{
unsigned long seg[4];
const size_t sizeof_seg = ARRAY_SIZE(seg) * current_wordsize;
unsigned int i;
if (!len) {
tprints("[]");
return;
}
if (len > KEXEC_SEGMENT_MAX) {
printaddr(addr);
return;
}
if (umove_ulong_array_or_printaddr(tcp, addr, seg, ARRAY_SIZE(seg)))
return;
unsigned long seg[4];
const size_t sizeof_seg = ARRAY_SIZE(seg) * current_wordsize;
tprints("[");
print_seg(seg);
for (i = 1; i < len; ++i) {
tprints(", ");
if (umove_ulong_array_or_printaddr(tcp,
addr + i * sizeof_seg,
seg, ARRAY_SIZE(seg)))
break;
print_seg(seg);
}
tprints("]");
print_array(tcp, addr, len, seg, sizeof_seg,
umoven_or_printaddr, print_seg, 0);
}
SYS_FUNC(kexec_load)
{
unsigned long n;
/* entry, nr_segments */
printaddr(tcp->u_arg[0]);
tprintf(", %lu, ", tcp->u_arg[1]);
@ -96,12 +89,12 @@ SYS_FUNC(kexec_load)
tprints(", ");
/* flags */
n = tcp->u_arg[3];
printxval(kexec_arch_values, n & KEXEC_ARCH_MASK, "KEXEC_ARCH_???");
unsigned long n = tcp->u_arg[3];
printxval_long(kexec_arch_values, n & KEXEC_ARCH_MASK, "KEXEC_ARCH_???");
n &= ~KEXEC_ARCH_MASK;
if (n) {
tprints("|");
printflags(kexec_load_flags, n, "KEXEC_???");
printflags_long(kexec_load_flags, n, "KEXEC_???");
}
return RVAL_DECODED;
@ -123,7 +116,7 @@ SYS_FUNC(kexec_file_load)
printstr(tcp, tcp->u_arg[3], tcp->u_arg[2]);
tprints(", ");
/* flags */
printflags(kexec_file_load_flags, tcp->u_arg[4], "KEXEC_FILE_???");
printflags_long(kexec_file_load_flags, tcp->u_arg[4], "KEXEC_FILE_???");
return RVAL_DECODED;
}

View File

@ -34,7 +34,7 @@ typedef int32_t key_serial_t;
static void
print_keyring_serial_number(key_serial_t id)
{
const char *str = xlookup(key_spec, id);
const char *str = xlookup(key_spec, (unsigned int) id);
if (str)
tprints(str);

View File

@ -81,6 +81,18 @@
{ "asm-generic/sockios.h", "SIOCGSTAMP", 0, 0x8906, 0 },
{ "asm-generic/sockios.h", "SIOCGSTAMPNS", 0, 0x8907, 0 },
{ "asm-generic/sockios.h", "SIOCSPGRP", 0, 0x8902, 0 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CTX", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x20 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_METADATA", _IOC_READ|_IOC_WRITE, 0x6446, 0x11c },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_OP", _IOC_READ|_IOC_WRITE, 0x6450, 0x10 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6451, 0x18 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_VA", _IOC_WRITE, 0x6448, 0x28 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_INFO", _IOC_WRITE, 0x6445, 0x20 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x6449, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_ADD_BUFS", _IOC_READ|_IOC_WRITE, 0x6416, 0x18 },
{ "drm/drm.h", "DRM_IOCTL_ADD_CTX", _IOC_READ|_IOC_WRITE, 0x6420, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_ADD_DRAW", _IOC_READ|_IOC_WRITE, 0x6427, 0x04 },
@ -118,11 +130,14 @@
{ "drm/drm.h", "DRM_IOCTL_MARK_BUFS", _IOC_WRITE, 0x6417, 0x18 },
{ "drm/drm.h", "DRM_IOCTL_MODESET_CTL", _IOC_WRITE, 0x6408, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB", _IOC_READ|_IOC_WRITE, 0x64ae, 0x1c },
{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB2", _IOC_READ|_IOC_WRITE, 0x64b8, 0x44 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB2", _IOC_READ|_IOC_WRITE, 0x64b8, 0x64 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ATOMIC", _IOC_READ|_IOC_WRITE, 0x64bc, 0x38 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ATTACHMODE", _IOC_READ|_IOC_WRITE, 0x64a8, 0x48 },
{ "drm/drm.h", "DRM_IOCTL_MODE_CREATEPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64bd, 0x10 },
{ "drm/drm.h", "DRM_IOCTL_MODE_CREATE_DUMB", _IOC_READ|_IOC_WRITE, 0x64b2, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_MODE_CURSOR", _IOC_READ|_IOC_WRITE, 0x64a3, 0x1c },
{ "drm/drm.h", "DRM_IOCTL_MODE_CURSOR2", _IOC_READ|_IOC_WRITE, 0x64bb, 0x24 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DESTROYPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64be, 0x04 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DESTROY_DUMB", _IOC_READ|_IOC_WRITE, 0x64b4, 0x04 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DETACHMODE", _IOC_READ|_IOC_WRITE, 0x64a9, 0x48 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DIRTYFB", _IOC_READ|_IOC_WRITE, 0x64b1, 0x18 },
@ -166,11 +181,21 @@
{ "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x14 },
{ "drm/drm.h", "DRM_IOCTL_VERSION", _IOC_READ|_IOC_WRITE, 0x6400, 0x24 },
{ "drm/drm.h", "DRM_IOCTL_WAIT_VBLANK", _IOC_READ|_IOC_WRITE, 0x643a, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_FINI", _IOC_WRITE, 0x6445, 0x08 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x30 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6448, 0x18 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_WAIT", _IOC_WRITE, 0x6449, 0x20 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_EXEC", _IOC_READ|_IOC_WRITE, 0x6462, 0x08 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_GET_VER", _IOC_READ|_IOC_WRITE, 0x6460, 0x08 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST", _IOC_READ|_IOC_WRITE, 0x6461, 0x28 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_GET", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_MAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_CMD_CTRL", _IOC_READ|_IOC_WRITE, 0x6473, 0x08 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_GET_PROPERTY", _IOC_READ|_IOC_WRITE, 0x6470, 0x50 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF", _IOC_READ|_IOC_WRITE, 0x6472, 0x28 },
@ -201,6 +226,8 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_BUSY", _IOC_READ|_IOC_WRITE, 0x6457, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE", _IOC_READ|_IOC_WRITE, 0x646d, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", _IOC_WRITE, 0x646e, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6474, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM", _IOC_READ|_IOC_WRITE, 0x6475, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x645b, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_ENTERVT", _IOC_NONE, 0x6459, 0x00 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_EXECBUFFER", _IOC_WRITE, 0x6454, 0x28 },
@ -211,7 +238,7 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_INIT", _IOC_WRITE, 0x6453, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_LEAVEVT", _IOC_NONE, 0x645a, 0x00 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6466, 0x0c },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x20 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x28 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_GTT", _IOC_READ|_IOC_WRITE, 0x6464, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PIN", _IOC_READ|_IOC_WRITE, 0x6455, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PREAD", _IOC_WRITE, 0x645c, 0x20 },
@ -227,7 +254,7 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6446, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID", _IOC_READ|_IOC_WRITE, 0x6465, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_RESET_STATS", _IOC_READ|_IOC_WRITE, 0x6472, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646a, 0x14 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_VBLANK_PIPE", _IOC_READ, 0x644e, 0x04 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_HWS_ADDR", _IOC_WRITE, 0x6451, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_INIT", _IOC_WRITE, 0x6440, 0x44 },
@ -352,7 +379,7 @@
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_GET_FLAGS", _IOC_READ|_IOC_WRITE, 0x644d, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_GET_TILING", _IOC_READ|_IOC_WRITE, 0x644b, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_SET_FLAGS", _IOC_READ|_IOC_WRITE, 0x644c, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_SET_TILING", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GET_SYNCPT", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
@ -362,6 +389,13 @@
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_INCR", _IOC_READ|_IOC_WRITE, 0x6443, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_READ", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_WAIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_SHADER_BO", _IOC_READ|_IOC_WRITE, 0x6445, 0x18 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_SEQNO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_AGP_INIT", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_ALLOCMEM", _IOC_READ|_IOC_WRITE, 0x6440, 0x14 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_BLIT_SYNC", _IOC_WRITE, 0x644f, 0x08 },
@ -376,6 +410,15 @@
{ "drm/via_drm.h", "DRM_IOCTL_VIA_MAP_INIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x14 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_PCICMD", _IOC_WRITE, 0x644a, 0x08 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_WAIT_IRQ", _IOC_READ|_IOC_WRITE, 0x644d, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_EXECBUFFER", _IOC_WRITE, 0x6442, 0x20 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_GET_CAPS", _IOC_READ|_IOC_WRITE, 0x6449, 0x18 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_MAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_RESOURCE_CREATE", _IOC_READ|_IOC_WRITE, 0x6444, 0x38 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_RESOURCE_INFO", _IOC_READ|_IOC_WRITE, 0x6445, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_TRANSFER_FROM_HOST", _IOC_READ|_IOC_WRITE, 0x6446, 0x24 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_TRANSFER_TO_HOST", _IOC_READ|_IOC_WRITE, 0x6447, 0x24 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_WAIT", _IOC_READ|_IOC_WRITE, 0x6448, 0x08 },
{ "linux/agpgart.h", "AGPIOC_ACQUIRE", _IOC_NONE, 0x4101, 0x00 },
{ "linux/agpgart.h", "AGPIOC_ALLOCATE", _IOC_READ|_IOC_WRITE, 0x4106, 0x04 },
{ "linux/agpgart.h", "AGPIOC_BIND", _IOC_WRITE, 0x4108, 0x04 },
@ -387,6 +430,7 @@
{ "linux/agpgart.h", "AGPIOC_RESERVE", _IOC_WRITE, 0x4104, 0x04 },
{ "linux/agpgart.h", "AGPIOC_SETUP", _IOC_WRITE, 0x4103, 0x04 },
{ "linux/agpgart.h", "AGPIOC_UNBIND", _IOC_WRITE, 0x4109, 0x04 },
{ "linux/am437x-vpfe.h", "VIDIOC_AM437X_CCDC_CFG", _IOC_WRITE, 0x56c1, 0x04 },
{ "linux/android/binder.h", "BC_ACQUIRE", _IOC_WRITE, 0x6305, 0x04 },
{ "linux/android/binder.h", "BC_ACQUIRE_DONE", _IOC_WRITE, 0x6309, 0x10 },
{ "linux/android/binder.h", "BC_ACQUIRE_RESULT", _IOC_WRITE, 0x6302, 0x04 },
@ -672,6 +716,7 @@
{ "linux/dm-ioctl.h", "DM_TABLE_STATUS", _IOC_READ|_IOC_WRITE, 0xfd0c, 0x138 },
{ "linux/dm-ioctl.h", "DM_TARGET_MSG", _IOC_READ|_IOC_WRITE, 0xfd0e, 0x138 },
{ "linux/dm-ioctl.h", "DM_VERSION", _IOC_READ|_IOC_WRITE, 0xfd00, 0x138 },
{ "linux/dma-buf.h", "DMA_BUF_IOCTL_SYNC", _IOC_WRITE, 0x6200, 0x08 },
{ "linux/dn.h", "OSIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
{ "linux/dn.h", "OSIOCSNETADDR", _IOC_WRITE, 0x89e0, 0x04 },
{ "linux/dn.h", "SIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
@ -840,6 +885,7 @@
{ "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 },
{ "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x04 },
{ "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x04 },
{ "linux/fs.h", "BLKDAXGET", _IOC_NONE, 0x1281, 0x00 },
{ "linux/fs.h", "BLKDISCARD", _IOC_NONE, 0x1277, 0x00 },
{ "linux/fs.h", "BLKDISCARDZEROES", _IOC_NONE, 0x127c, 0x00 },
{ "linux/fs.h", "BLKFLSBUF", _IOC_NONE, 0x1261, 0x00 },
@ -866,6 +912,9 @@
{ "linux/fs.h", "BLKTRACETEARDOWN", _IOC_NONE, 0x1276, 0x00 },
{ "linux/fs.h", "BLKZEROOUT", _IOC_NONE, 0x127f, 0x00 },
{ "linux/fs.h", "FIBMAP", _IOC_NONE, 0x0001, 0x00 },
{ "linux/fs.h", "FICLONE", _IOC_WRITE, 0x9409, 0x04 },
{ "linux/fs.h", "FICLONERANGE", _IOC_WRITE, 0x940d, 0x20 },
{ "linux/fs.h", "FIDEDUPERANGE", _IOC_READ|_IOC_WRITE, 0x9436, 0x18 },
{ "linux/fs.h", "FIFREEZE", _IOC_READ|_IOC_WRITE, 0x5877, 0x04 },
{ "linux/fs.h", "FIGETBSZ", _IOC_NONE, 0x0002, 0x00 },
{ "linux/fs.h", "FITHAW", _IOC_READ|_IOC_WRITE, 0x5878, 0x04 },
@ -875,10 +924,15 @@
{ "linux/fs.h", "FS_IOC32_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
{ "linux/fs.h", "FS_IOC32_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
{ "linux/fs.h", "FS_IOC_FIEMAP", _IOC_READ|_IOC_WRITE, 0x660b, 0x20 },
{ "linux/fs.h", "FS_IOC_FSGETXATTR", _IOC_READ, 0x581f, 0x1c },
{ "linux/fs.h", "FS_IOC_FSSETXATTR", _IOC_WRITE, 0x5820, 0x1c },
{ "linux/fs.h", "FS_IOC_GETFLAGS", _IOC_READ, 0x6601, 0x04 },
{ "linux/fs.h", "FS_IOC_GETVERSION", _IOC_READ, 0x7601, 0x04 },
{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
{ "linux/fs.h", "FS_IOC_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
{ "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
{ "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
{ "linux/fsl-diu-fb.h", "MFB_GET_ALPHA", _IOC_READ, 0x4d00, 0x01 },
{ "linux/fsl-diu-fb.h", "MFB_GET_AOID", _IOC_READ, 0x4d04, 0x08 },
{ "linux/fsl-diu-fb.h", "MFB_GET_GAMMA", _IOC_READ, 0x4d01, 0x01 },
@ -897,6 +951,7 @@
{ "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_START", _IOC_READ|_IOC_WRITE, 0xaf03, 0x10 },
{ "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_STOP", _IOC_READ|_IOC_WRITE, 0xaf04, 0x08 },
{ "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_SETPROP", _IOC_READ|_IOC_WRITE, 0xaf08, 0x28 },
{ "linux/fuse.h", "FUSE_DEV_IOC_CLONE", _IOC_READ, 0xe500, 0x04 },
{ "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_DDCB", _IOC_READ|_IOC_WRITE, 0xa532, 0xe8 },
{ "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_RAW_DDCB", _IOC_READ|_IOC_WRITE, 0xa533, 0xe8 },
{ "linux/genwqe/genwqe_card.h", "GENWQE_GET_CARD_STATE", _IOC_READ, 0xa524, 0x04 },
@ -914,6 +969,8 @@
{ "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
{ "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
{ "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
{ "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
{ "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
{ "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
{ "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
{ "linux/gsmmux.h", "GSMIOC_GETCONF", _IOC_READ, 0x4700, 0x4c },
@ -982,6 +1039,10 @@
{ "linux/hpet.h", "HPET_IE_ON", _IOC_NONE, 0x6801, 0x00 },
{ "linux/hpet.h", "HPET_INFO", _IOC_READ, 0x6803, 0x0c },
{ "linux/hpet.h", "HPET_IRQFREQ", _IOC_WRITE, 0x6806, 0x04 },
{ "linux/hsi/cs-protocol.h", "CS_CONFIG_BUFS", _IOC_WRITE, 0x431f, 0x20 },
{ "linux/hsi/cs-protocol.h", "CS_GET_IF_VERSION", _IOC_READ, 0x431e, 0x04 },
{ "linux/hsi/cs-protocol.h", "CS_GET_STATE", _IOC_READ, 0x4315, 0x04 },
{ "linux/hsi/cs-protocol.h", "CS_SET_WAKELINE", _IOC_WRITE, 0x4317, 0x04 },
{ "linux/hsi/hsi_char.h", "HSC_GET_RX", _IOC_WRITE, 0x6b14, 0x0c },
{ "linux/hsi/hsi_char.h", "HSC_GET_TX", _IOC_WRITE, 0x6b16, 0x10 },
{ "linux/hsi/hsi_char.h", "HSC_RESET", _IOC_NONE, 0x6b10, 0x00 },
@ -1003,10 +1064,6 @@
{ "linux/i2o-dev.h", "I2OSWDL", _IOC_READ|_IOC_WRITE, 0x6905, 0x1c },
{ "linux/i2o-dev.h", "I2OSWUL", _IOC_READ|_IOC_WRITE, 0x6906, 0x1c },
{ "linux/i2o-dev.h", "I2OVALIDATE", _IOC_READ, 0x6908, 0x04 },
{ "linux/i2o.h", "BLKI2OGRSTRAT", _IOC_READ, 0x3201, 0x04 },
{ "linux/i2o.h", "BLKI2OGWSTRAT", _IOC_READ, 0x3202, 0x04 },
{ "linux/i2o.h", "BLKI2OSRSTRAT", _IOC_WRITE, 0x3203, 0x04 },
{ "linux/i2o.h", "BLKI2OSWSTRAT", _IOC_WRITE, 0x3204, 0x04 },
{ "linux/i8k.h", "I8K_BIOS_VERSION", _IOC_READ, 0x6980, 0x04 },
{ "linux/i8k.h", "I8K_FN_STATUS", _IOC_READ, 0x6983, 0x04 },
{ "linux/i8k.h", "I8K_GET_FAN", _IOC_READ|_IOC_WRITE, 0x6986, 0x04 },
@ -1023,6 +1080,7 @@
{ "linux/if_tun.h", "TUNGETFILTER", _IOC_READ, 0x54db, 0x08 },
{ "linux/if_tun.h", "TUNGETIFF", _IOC_READ, 0x54d2, 0x04 },
{ "linux/if_tun.h", "TUNGETSNDBUF", _IOC_READ, 0x54d3, 0x04 },
{ "linux/if_tun.h", "TUNGETVNETBE", _IOC_READ, 0x54df, 0x04 },
{ "linux/if_tun.h", "TUNGETVNETHDRSZ", _IOC_READ, 0x54d7, 0x04 },
{ "linux/if_tun.h", "TUNGETVNETLE", _IOC_READ, 0x54dd, 0x04 },
{ "linux/if_tun.h", "TUNSETDEBUG", _IOC_WRITE, 0x54c9, 0x04 },
@ -1037,6 +1095,7 @@
{ "linux/if_tun.h", "TUNSETQUEUE", _IOC_WRITE, 0x54d9, 0x04 },
{ "linux/if_tun.h", "TUNSETSNDBUF", _IOC_WRITE, 0x54d4, 0x04 },
{ "linux/if_tun.h", "TUNSETTXFILTER", _IOC_WRITE, 0x54d1, 0x04 },
{ "linux/if_tun.h", "TUNSETVNETBE", _IOC_WRITE, 0x54de, 0x04 },
{ "linux/if_tun.h", "TUNSETVNETHDRSZ", _IOC_WRITE, 0x54d8, 0x04 },
{ "linux/if_tun.h", "TUNSETVNETLE", _IOC_WRITE, 0x54dc, 0x04 },
{ "linux/iio/events.h", "IIO_GET_EVENT_FD_IOCTL", _IOC_READ, 0x6990, 0x04 },
@ -1044,6 +1103,7 @@
{ "linux/input.h", "EVIOCGID", _IOC_READ, 0x4502, 0x08 },
{ "linux/input.h", "EVIOCGKEYCODE", _IOC_READ, 0x4504, 0x08 },
{ "linux/input.h", "EVIOCGKEYCODE_V2", _IOC_READ, 0x4504, 0x28 },
{ "linux/input.h", "EVIOCGMASK", _IOC_READ, 0x4592, 0x10 },
{ "linux/input.h", "EVIOCGRAB", _IOC_WRITE, 0x4590, 0x04 },
{ "linux/input.h", "EVIOCGREP", _IOC_READ, 0x4503, 0x08 },
{ "linux/input.h", "EVIOCGVERSION", _IOC_READ, 0x4501, 0x04 },
@ -1053,6 +1113,7 @@
{ "linux/input.h", "EVIOCSFF", _IOC_WRITE, 0x4580, 0x2c },
{ "linux/input.h", "EVIOCSKEYCODE", _IOC_WRITE, 0x4504, 0x08 },
{ "linux/input.h", "EVIOCSKEYCODE_V2", _IOC_WRITE, 0x4504, 0x28 },
{ "linux/input.h", "EVIOCSMASK", _IOC_WRITE, 0x4593, 0x10 },
{ "linux/input.h", "EVIOCSREP", _IOC_WRITE, 0x4503, 0x08 },
{ "linux/ipmi.h", "IPMICTL_GET_MAINTENANCE_MODE_CMD", _IOC_READ, 0x691e, 0x04 },
{ "linux/ipmi.h", "IPMICTL_GET_MY_ADDRESS_CMD", _IOC_READ, 0x6912, 0x04 },
@ -1167,6 +1228,9 @@
{ "linux/joystick.h", "JSIOCSAXMAP", _IOC_WRITE, 0x6a31, 0x40 },
{ "linux/joystick.h", "JSIOCSBTNMAP", _IOC_WRITE, 0x6a33, 0x400 },
{ "linux/joystick.h", "JSIOCSCORR", _IOC_WRITE, 0x6a21, 0x24 },
{ "linux/kcov.h", "KCOV_DISABLE", _IOC_NONE, 0x6365, 0x00 },
{ "linux/kcov.h", "KCOV_ENABLE", _IOC_NONE, 0x6364, 0x00 },
{ "linux/kcov.h", "KCOV_INIT_TRACE", _IOC_READ, 0x6301, 0x04 },
{ "linux/kd.h", "GIO_CMAP", 0, 0x4B70, 0 },
{ "linux/kd.h", "GIO_FONT", 0, 0x4B60, 0 },
{ "linux/kd.h", "GIO_FONTX", 0, 0x4B6B, 0 },
@ -1213,13 +1277,22 @@
{ "linux/kd.h", "PIO_UNIMAP", 0, 0x4B67, 0 },
{ "linux/kd.h", "PIO_UNIMAPCLR", 0, 0x4B68, 0 },
{ "linux/kd.h", "PIO_UNISCRNMAP", 0, 0x4B6A, 0 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_EVENT", _IOC_READ|_IOC_WRITE, 0x4b08, 0x20 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b02, 0x58 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_ADDRESS_WATCH", _IOC_WRITE, 0x4b0f, 0x10 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_REGISTER", _IOC_WRITE, 0x4b0d, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_UNREGISTER", _IOC_WRITE, 0x4b0e, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_WAVE_CONTROL", _IOC_WRITE, 0x4b10, 0x10 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_EVENT", _IOC_WRITE, 0x4b09, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
{ "linux/kvm.h", "KVM_ALLOCATE_RMA", _IOC_READ, 0xaea9, 0x08 },
{ "linux/kvm.h", "KVM_ARM_PREFERRED_TARGET", _IOC_READ, 0xaeaf, 0x20 },
{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
@ -1235,6 +1308,7 @@
{ "linux/kvm.h", "KVM_CREATE_PIT", _IOC_NONE, 0xae64, 0x00 },
{ "linux/kvm.h", "KVM_CREATE_PIT2", _IOC_WRITE, 0xae77, 0x40 },
{ "linux/kvm.h", "KVM_CREATE_SPAPR_TCE", _IOC_WRITE, 0xaea8, 0x0c },
{ "linux/kvm.h", "KVM_CREATE_SPAPR_TCE_64", _IOC_WRITE, 0xaea8, 0x20 },
{ "linux/kvm.h", "KVM_CREATE_VCPU", _IOC_NONE, 0xae41, 0x00 },
{ "linux/kvm.h", "KVM_CREATE_VM", _IOC_NONE, 0xae01, 0x00 },
{ "linux/kvm.h", "KVM_DEASSIGN_DEV_IRQ", _IOC_WRITE, 0xae75, 0x40 },
@ -1284,9 +1358,15 @@
{ "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
{ "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
{ "linux/kvm.h", "KVM_S390_ENABLE_SIE", _IOC_NONE, 0xae06, 0x00 },
{ "linux/kvm.h", "KVM_S390_GET_IRQ_STATE", _IOC_WRITE, 0xaeb6, 0x20 },
{ "linux/kvm.h", "KVM_S390_GET_SKEYS", _IOC_WRITE, 0xaeb2, 0x40 },
{ "linux/kvm.h", "KVM_S390_INITIAL_RESET", _IOC_NONE, 0xae97, 0x00 },
{ "linux/kvm.h", "KVM_S390_INTERRUPT", _IOC_WRITE, 0xae94, 0x10 },
{ "linux/kvm.h", "KVM_S390_IRQ", _IOC_WRITE, 0xaeb4, 0x48 },
{ "linux/kvm.h", "KVM_S390_MEM_OP", _IOC_WRITE, 0xaeb1, 0x40 },
{ "linux/kvm.h", "KVM_S390_SET_INITIAL_PSW", _IOC_WRITE, 0xae96, 0x10 },
{ "linux/kvm.h", "KVM_S390_SET_IRQ_STATE", _IOC_WRITE, 0xaeb5, 0x20 },
{ "linux/kvm.h", "KVM_S390_SET_SKEYS", _IOC_WRITE, 0xaeb3, 0x40 },
{ "linux/kvm.h", "KVM_S390_STORE_STATUS", _IOC_WRITE, 0xae95, 0x04 },
{ "linux/kvm.h", "KVM_S390_UCAS_MAP", _IOC_WRITE, 0xae50, 0x18 },
{ "linux/kvm.h", "KVM_S390_UCAS_UNMAP", _IOC_WRITE, 0xae51, 0x18 },
@ -1322,6 +1402,7 @@
{ "linux/kvm.h", "KVM_SET_XCRS", _IOC_WRITE, 0xaea7, 0x188 },
{ "linux/kvm.h", "KVM_SET_XSAVE", _IOC_WRITE, 0xaea5, 0x1000 },
{ "linux/kvm.h", "KVM_SIGNAL_MSI", _IOC_WRITE, 0xaea5, 0x20 },
{ "linux/kvm.h", "KVM_SMI", _IOC_NONE, 0xaeb7, 0x00 },
{ "linux/kvm.h", "KVM_TPR_ACCESS_REPORTING", _IOC_READ|_IOC_WRITE, 0xae92, 0x28 },
{ "linux/kvm.h", "KVM_TRANSLATE", _IOC_READ|_IOC_WRITE, 0xae85, 0x18 },
{ "linux/kvm.h", "KVM_UNREGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae68, 0x10 },
@ -1329,6 +1410,46 @@
{ "linux/kvm.h", "KVM_X86_SETUP_MCE", _IOC_WRITE, 0xae9c, 0x08 },
{ "linux/kvm.h", "KVM_X86_SET_MCE", _IOC_WRITE, 0xae9e, 0x40 },
{ "linux/kvm.h", "KVM_XEN_HVM_CONFIG", _IOC_WRITE, 0xae7a, 0x38 },
{ "linux/lightnvm.h", "NVM_DEV_CREATE", _IOC_WRITE, 0x4c22, 0x80 },
{ "linux/lightnvm.h", "NVM_DEV_FACTORY", _IOC_WRITE, 0x4c25, 0x24 },
{ "linux/lightnvm.h", "NVM_DEV_INIT", _IOC_WRITE, 0x4c24, 0x2c },
{ "linux/lightnvm.h", "NVM_DEV_REMOVE", _IOC_WRITE, 0x4c23, 0x24 },
{ "linux/lightnvm.h", "NVM_GET_DEVICES", _IOC_READ, 0x4c21, 0x1000 },
{ "linux/lightnvm.h", "NVM_INFO", _IOC_READ|_IOC_WRITE, 0x4c20, 0x1000 },
{ "linux/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
{ "linux/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
{ "linux/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
{ "linux/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
{ "linux/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
{ "linux/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
{ "linux/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
{ "linux/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
{ "linux/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
{ "linux/lirc.h", "LIRC_SET_SEND_CARRIER", _IOC_WRITE, 0x6913, 0x04 },
{ "linux/lirc.h", "LIRC_SET_SEND_DUTY_CYCLE", _IOC_WRITE, 0x6915, 0x04 },
{ "linux/lirc.h", "LIRC_SET_SEND_MODE", _IOC_WRITE, 0x6911, 0x04 },
{ "linux/lirc.h", "LIRC_SET_TRANSMITTER_MASK", _IOC_WRITE, 0x6917, 0x04 },
{ "linux/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
{ "linux/loop.h", "LOOP_CHANGE_FD", 0, 0x4C06, 0 },
{ "linux/loop.h", "LOOP_CLR_FD", 0, 0x4C01, 0 },
{ "linux/loop.h", "LOOP_CTL_ADD", 0, 0x4C80, 0 },
@ -1337,6 +1458,7 @@
{ "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 },
{ "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 },
{ "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 },
{ "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 },
{ "linux/loop.h", "LOOP_SET_STATUS", 0, 0x4C02, 0 },
{ "linux/loop.h", "LOOP_SET_STATUS64", 0, 0x4C04, 0 },
@ -1358,8 +1480,11 @@
{ "linux/media.h", "MEDIA_IOC_DEVICE_INFO", _IOC_READ|_IOC_WRITE, 0x7c00, 0x100 },
{ "linux/media.h", "MEDIA_IOC_ENUM_ENTITIES", _IOC_READ|_IOC_WRITE, 0x7c01, 0x100 },
{ "linux/media.h", "MEDIA_IOC_ENUM_LINKS", _IOC_READ|_IOC_WRITE, 0x7c02, 0x1c },
{ "linux/media.h", "MEDIA_IOC_G_TOPOLOGY", _IOC_READ|_IOC_WRITE, 0x7c04, 0x48 },
{ "linux/media.h", "MEDIA_IOC_SETUP_LINK", _IOC_READ|_IOC_WRITE, 0x7c03, 0x34 },
{ "linux/mei.h", "IOCTL_MEI_CONNECT_CLIENT", _IOC_READ|_IOC_WRITE, 0x4801, 0x10 },
{ "linux/mei.h", "IOCTL_MEI_NOTIFY_GET", _IOC_READ, 0x4803, 0x04 },
{ "linux/mei.h", "IOCTL_MEI_NOTIFY_SET", _IOC_WRITE, 0x4802, 0x04 },
{ "linux/meye.h", "MEYEIOC_G_PARAMS", _IOC_READ, 0x76c0, 0x06 },
{ "linux/meye.h", "MEYEIOC_QBUF_CAPT", _IOC_WRITE, 0x76c2, 0x04 },
{ "linux/meye.h", "MEYEIOC_STILLCAPT", _IOC_NONE, 0x76c4, 0x00 },
@ -1370,6 +1495,7 @@
{ "linux/mic_ioctl.h", "MIC_VIRTIO_CONFIG_CHANGE", _IOC_READ|_IOC_WRITE, 0x7305, 0x04 },
{ "linux/mic_ioctl.h", "MIC_VIRTIO_COPY_DESC", _IOC_READ|_IOC_WRITE, 0x7302, 0x04 },
{ "linux/mmc/ioctl.h", "MMC_IOC_CMD", _IOC_READ|_IOC_WRITE, 0xb300, 0x48 },
{ "linux/mmc/ioctl.h", "MMC_IOC_MULTI_CMD", _IOC_READ|_IOC_WRITE, 0xb301, 0x08 },
{ "linux/mmtimer.h", "MMTIMER_GETBITS", _IOC_NONE, 0x6d04, 0x00 },
{ "linux/mmtimer.h", "MMTIMER_GETCOUNTER", _IOC_READ, 0x6d09, 0x04 },
{ "linux/mmtimer.h", "MMTIMER_GETFREQ", _IOC_READ, 0x6d02, 0x04 },
@ -1381,8 +1507,6 @@
{ "linux/msdos_fs.h", "FAT_IOCTL_SET_ATTRIBUTES", _IOC_WRITE, 0x7211, 0x04 },
{ "linux/msdos_fs.h", "VFAT_IOCTL_READDIR_BOTH", _IOC_READ, 0x7201, 0x218 },
{ "linux/msdos_fs.h", "VFAT_IOCTL_READDIR_SHORT", _IOC_READ, 0x7202, 0x218 },
{ "linux/msm_mdp.h", "MSMFB_BLIT", _IOC_WRITE, 0x6d02, 0x04 },
{ "linux/msm_mdp.h", "MSMFB_GRP_DISP", _IOC_WRITE, 0x6d01, 0x04 },
{ "linux/mtio.h", "MTIOCGET", _IOC_READ, 0x6d02, 0x1c },
{ "linux/mtio.h", "MTIOCPOS", _IOC_READ, 0x6d03, 0x04 },
{ "linux/mtio.h", "MTIOCTOP", _IOC_WRITE, 0x6d01, 0x08 },
@ -1417,6 +1541,17 @@
{ "linux/ncp_fs.h", "NCP_IOC_SET_SIGN_WANTED", _IOC_WRITE, 0x6e06, 0x04 },
{ "linux/ncp_fs.h", "NCP_IOC_SIGN_INIT", _IOC_READ, 0x6e05, 0x18 },
{ "linux/ncp_fs.h", "NCP_IOC_SIGN_WANTED", _IOC_READ, 0x6e06, 0x04 },
{ "linux/ndctl.h", "ND_IOCTL_ARS_CAP", _IOC_READ|_IOC_WRITE, 0x4e01, 0x20 },
{ "linux/ndctl.h", "ND_IOCTL_ARS_START", _IOC_READ|_IOC_WRITE, 0x4e02, 0x20 },
{ "linux/ndctl.h", "ND_IOCTL_ARS_STATUS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x30 },
{ "linux/ndctl.h", "ND_IOCTL_CLEAR_ERROR", _IOC_READ|_IOC_WRITE, 0x4e04, 0x20 },
{ "linux/ndctl.h", "ND_IOCTL_DIMM_FLAGS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x08 },
{ "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_DATA", _IOC_READ|_IOC_WRITE, 0x4e05, 0x0c },
{ "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_SIZE", _IOC_READ|_IOC_WRITE, 0x4e04, 0x0c },
{ "linux/ndctl.h", "ND_IOCTL_SET_CONFIG_DATA", _IOC_READ|_IOC_WRITE, 0x4e06, 0x08 },
{ "linux/ndctl.h", "ND_IOCTL_SMART", _IOC_READ|_IOC_WRITE, 0x4e01, 0x84 },
{ "linux/ndctl.h", "ND_IOCTL_SMART_THRESHOLD", _IOC_READ|_IOC_WRITE, 0x4e02, 0x0c },
{ "linux/ndctl.h", "ND_IOCTL_VENDOR", _IOC_READ|_IOC_WRITE, 0x4e09, 0x08 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CHANGE_CPMODE", _IOC_WRITE, 0x6e80, 0x10 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CLEAN_SEGMENTS", _IOC_WRITE, 0x6e88, 0x78 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_DELETE_CHECKPOINT", _IOC_WRITE, 0x6e81, 0x08 },
@ -1430,10 +1565,12 @@
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
{ "linux/nvme.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
{ "linux/nvme.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
{ "linux/nvme.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
{ "linux/nvme.h", "NVME_IOCTL_SUBMIT_IO", _IOC_WRITE, 0x4e42, 0x2c },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_RESET", _IOC_NONE, 0x4e44, 0x00 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_SUBMIT_IO", _IOC_WRITE, 0x4e42, 0x2c },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_SUBSYS_RESET", _IOC_NONE, 0x4e45, 0x00 },
{ "linux/nvram.h", "NVRAM_INIT", _IOC_NONE, 0x7040, 0x00 },
{ "linux/nvram.h", "NVRAM_SETCKS", _IOC_NONE, 0x7041, 0x00 },
{ "linux/omap3isp.h", "VIDIOC_OMAP3ISP_AEWB_CFG", _IOC_READ|_IOC_WRITE, 0x56c3, 0x20 },
@ -1472,6 +1609,7 @@
{ "linux/perf_event.h", "PERF_EVENT_IOC_PERIOD", _IOC_WRITE, 0x2404, 0x08 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_REFRESH", _IOC_NONE, 0x2402, 0x00 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_RESET", _IOC_NONE, 0x2403, 0x00 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_SET_BPF", _IOC_WRITE, 0x2408, 0x04 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_SET_FILTER", _IOC_WRITE, 0x2406, 0x04 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_SET_OUTPUT", _IOC_NONE, 0x2405, 0x00 },
{ "linux/phantom.h", "PHN_GETREG", _IOC_READ|_IOC_WRITE, 0x7005, 0x08 },
@ -1484,6 +1622,7 @@
{ "linux/phantom.h", "PHN_SET_REG", _IOC_WRITE, 0x7001, 0x04 },
{ "linux/phantom.h", "PHN_SET_REGS", _IOC_WRITE, 0x7003, 0x04 },
{ "linux/pktcdvd.h", "PACKET_CTRL_CMD", _IOC_READ|_IOC_WRITE, 0x5801, 0x18 },
{ "linux/platform_data/media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
{ "linux/pmu.h", "PMU_IOC_CAN_SLEEP", _IOC_READ, 0x4205, 0x04 },
{ "linux/pmu.h", "PMU_IOC_GET_BACKLIGHT", _IOC_READ, 0x4201, 0x04 },
{ "linux/pmu.h", "PMU_IOC_GET_MODEL", _IOC_READ, 0x4203, 0x04 },
@ -1549,6 +1688,12 @@
{ "linux/pps.h", "PPS_GETPARAMS", _IOC_READ, 0x70a1, 0x04 },
{ "linux/pps.h", "PPS_KC_BIND", _IOC_WRITE, 0x70a5, 0x04 },
{ "linux/pps.h", "PPS_SETPARAMS", _IOC_WRITE, 0x70a2, 0x04 },
{ "linux/pr.h", "IOC_PR_CLEAR", _IOC_WRITE, 0x70cd, 0x10 },
{ "linux/pr.h", "IOC_PR_PREEMPT", _IOC_WRITE, 0x70cb, 0x18 },
{ "linux/pr.h", "IOC_PR_PREEMPT_ABORT", _IOC_WRITE, 0x70cc, 0x18 },
{ "linux/pr.h", "IOC_PR_REGISTER", _IOC_WRITE, 0x70c8, 0x18 },
{ "linux/pr.h", "IOC_PR_RELEASE", _IOC_WRITE, 0x70ca, 0x10 },
{ "linux/pr.h", "IOC_PR_RESERVE", _IOC_WRITE, 0x70c9, 0x10 },
{ "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS", _IOC_READ, 0x3d01, 0x50 },
{ "linux/ptp_clock.h", "PTP_ENABLE_PPS", _IOC_WRITE, 0x3d04, 0x04 },
{ "linux/ptp_clock.h", "PTP_EXTTS_REQUEST", _IOC_WRITE, 0x3d02, 0x10 },
@ -1556,10 +1701,12 @@
{ "linux/ptp_clock.h", "PTP_PIN_GETFUNC", _IOC_READ|_IOC_WRITE, 0x3d06, 0x60 },
{ "linux/ptp_clock.h", "PTP_PIN_SETFUNC", _IOC_WRITE, 0x3d07, 0x60 },
{ "linux/ptp_clock.h", "PTP_SYS_OFFSET", _IOC_WRITE, 0x3d05, 0x340 },
{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE", _IOC_READ|_IOC_WRITE, 0x3d08, 0x40 },
{ "linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", _IOC_READ, 0x4003, 0x04 },
{ "linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", _IOC_WRITE, 0x4004, 0x04 },
{ "linux/raid/md_u.h", "ADD_NEW_DISK", _IOC_WRITE, 0x0921, 0x14 },
{ "linux/raid/md_u.h", "CLEAR_ARRAY", _IOC_NONE, 0x0920, 0x00 },
{ "linux/raid/md_u.h", "CLUSTERED_DISK_NACK", _IOC_NONE, 0x0935, 0x00 },
{ "linux/raid/md_u.h", "GET_ARRAY_INFO", _IOC_READ, 0x0911, 0x48 },
{ "linux/raid/md_u.h", "GET_BITMAP_FILE", _IOC_READ, 0x0915, 0x1000 },
{ "linux/raid/md_u.h", "GET_DISK_INFO", _IOC_READ, 0x0912, 0x14 },
@ -1589,6 +1736,30 @@
{ "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
{ "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x04 },
{ "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
{ "linux/rio_mport_cdev.h", "RIO_ALLOC_DMA", _IOC_READ|_IOC_WRITE, 0x6d13, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_DEV_ADD", _IOC_WRITE, 0x6d17, 0x20 },
{ "linux/rio_mport_cdev.h", "RIO_DEV_DEL", _IOC_WRITE, 0x6d18, 0x20 },
{ "linux/rio_mport_cdev.h", "RIO_DISABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d0a, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_DISABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0c, 0x10 },
{ "linux/rio_mport_cdev.h", "RIO_ENABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d09, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_ENABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0b, 0x10 },
{ "linux/rio_mport_cdev.h", "RIO_FREE_DMA", _IOC_WRITE, 0x6d14, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_GET_EVENT_MASK", _IOC_READ, 0x6d0e, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_MAP_INBOUND", _IOC_READ|_IOC_WRITE, 0x6d11, 0x28 },
{ "linux/rio_mport_cdev.h", "RIO_MAP_OUTBOUND", _IOC_READ|_IOC_WRITE, 0x6d0f, 0x28 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_GET_PROPERTIES", _IOC_READ, 0x6d04, 0x30 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_COMPTAG_SET", _IOC_WRITE, 0x6d02, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_HDID_SET", _IOC_WRITE, 0x6d01, 0x02 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_PORT_IDX_GET", _IOC_READ, 0x6d03, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_LOCAL", _IOC_READ, 0x6d05, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_REMOTE", _IOC_READ, 0x6d07, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_LOCAL", _IOC_WRITE, 0x6d06, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_REMOTE", _IOC_WRITE, 0x6d08, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_SET_EVENT_MASK", _IOC_WRITE, 0x6d0d, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_TRANSFER", _IOC_READ|_IOC_WRITE, 0x6d15, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_UNMAP_INBOUND", _IOC_WRITE, 0x6d12, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_UNMAP_OUTBOUND", _IOC_WRITE, 0x6d10, 0x28 },
{ "linux/rio_mport_cdev.h", "RIO_WAIT_FOR_ASYNC", _IOC_WRITE, 0x6d16, 0x08 },
{ "linux/rtc.h", "RTC_AIE_OFF", _IOC_NONE, 0x7002, 0x00 },
{ "linux/rtc.h", "RTC_AIE_ON", _IOC_NONE, 0x7001, 0x00 },
{ "linux/rtc.h", "RTC_ALM_READ", _IOC_READ, 0x7008, 0x24 },
@ -1611,6 +1782,23 @@
{ "linux/rtc.h", "RTC_WIE_ON", _IOC_NONE, 0x700f, 0x00 },
{ "linux/rtc.h", "RTC_WKALM_RD", _IOC_READ, 0x7010, 0x28 },
{ "linux/rtc.h", "RTC_WKALM_SET", _IOC_WRITE, 0x700f, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_ACCEPTREG", _IOC_READ|_IOC_WRITE, 0x7305, 0x08 },
{ "linux/scif_ioctl.h", "SCIF_ACCEPTREQ", _IOC_READ|_IOC_WRITE, 0x7304, 0x10 },
{ "linux/scif_ioctl.h", "SCIF_BIND", _IOC_READ|_IOC_WRITE, 0x7301, 0x08 },
{ "linux/scif_ioctl.h", "SCIF_CONNECT", _IOC_READ|_IOC_WRITE, 0x7303, 0x08 },
{ "linux/scif_ioctl.h", "SCIF_FENCE_MARK", _IOC_READ|_IOC_WRITE, 0x730f, 0x0c },
{ "linux/scif_ioctl.h", "SCIF_FENCE_SIGNAL", _IOC_READ|_IOC_WRITE, 0x7311, 0x24 },
{ "linux/scif_ioctl.h", "SCIF_FENCE_WAIT", _IOC_READ|_IOC_WRITE, 0x7310, 0x04 },
{ "linux/scif_ioctl.h", "SCIF_GET_NODEIDS", _IOC_READ|_IOC_WRITE, 0x730e, 0x14 },
{ "linux/scif_ioctl.h", "SCIF_LISTEN", _IOC_WRITE, 0x7302, 0x04 },
{ "linux/scif_ioctl.h", "SCIF_READFROM", _IOC_READ|_IOC_WRITE, 0x730a, 0x24 },
{ "linux/scif_ioctl.h", "SCIF_RECV", _IOC_READ|_IOC_WRITE, 0x7307, 0x14 },
{ "linux/scif_ioctl.h", "SCIF_REG", _IOC_READ|_IOC_WRITE, 0x7308, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_SEND", _IOC_READ|_IOC_WRITE, 0x7306, 0x14 },
{ "linux/scif_ioctl.h", "SCIF_UNREG", _IOC_READ|_IOC_WRITE, 0x7309, 0x10 },
{ "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x24 },
{ "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x24 },
{ "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x24 },
{ "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x04 },
{ "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
{ "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
@ -1805,6 +1993,9 @@
{ "linux/spi/spidev.h", "SPI_IOC_WR_MAX_SPEED_HZ", _IOC_WRITE, 0x6b04, 0x04 },
{ "linux/spi/spidev.h", "SPI_IOC_WR_MODE", _IOC_WRITE, 0x6b01, 0x01 },
{ "linux/spi/spidev.h", "SPI_IOC_WR_MODE32", _IOC_WRITE, 0x6b05, 0x04 },
{ "linux/stm.h", "STP_POLICY_ID_GET", _IOC_READ, 0x2501, 0x10 },
{ "linux/stm.h", "STP_POLICY_ID_SET", _IOC_READ|_IOC_WRITE, 0x2500, 0x10 },
{ "linux/stm.h", "STP_SET_OPTIONS", _IOC_WRITE, 0x2502, 0x08 },
{ "linux/suspend_ioctls.h", "SNAPSHOT_ALLOC_SWAP_PAGE", _IOC_READ, 0x3314, 0x08 },
{ "linux/suspend_ioctls.h", "SNAPSHOT_ATOMIC_RESTORE", _IOC_NONE, 0x3304, 0x00 },
{ "linux/suspend_ioctls.h", "SNAPSHOT_AVAIL_SWAP_SIZE", _IOC_READ, 0x3313, 0x08 },
@ -1887,15 +2078,18 @@
{ "linux/telephony.h", "PHONE_WINK", _IOC_WRITE, 0x71aa, 0x04 },
{ "linux/telephony.h", "PHONE_WINK_DURATION", _IOC_WRITE, 0x71a6, 0x04 },
{ "linux/timerfd.h", "TFD_IOC_SET_TICKS", _IOC_WRITE, 0x5400, 0x08 },
{ "linux/toshiba.h", "TOSH_SMM", _IOC_READ|_IOC_WRITE, 0x7490, 0x04 },
{ "linux/toshiba.h", "TOSHIBA_ACPI_SCI", _IOC_READ|_IOC_WRITE, 0x7491, 0x18 },
{ "linux/toshiba.h", "TOSH_SMM", _IOC_READ|_IOC_WRITE, 0x7490, 0x18 },
{ "linux/udf_fs_i.h", "UDF_GETEABLOCK", _IOC_READ, 0x6c41, 0x04 },
{ "linux/udf_fs_i.h", "UDF_GETEASIZE", _IOC_READ, 0x6c40, 0x04 },
{ "linux/udf_fs_i.h", "UDF_GETVOLIDENT", _IOC_READ, 0x6c42, 0x04 },
{ "linux/udf_fs_i.h", "UDF_RELOCATE_BLOCKS", _IOC_READ|_IOC_WRITE, 0x6c43, 0x04 },
{ "linux/uinput.h", "UI_ABS_SETUP", _IOC_WRITE, 0x5504, 0x1c },
{ "linux/uinput.h", "UI_BEGIN_FF_ERASE", _IOC_READ|_IOC_WRITE, 0x55ca, 0x0c },
{ "linux/uinput.h", "UI_BEGIN_FF_UPLOAD", _IOC_READ|_IOC_WRITE, 0x55c8, 0x60 },
{ "linux/uinput.h", "UI_DEV_CREATE", _IOC_NONE, 0x5501, 0x00 },
{ "linux/uinput.h", "UI_DEV_DESTROY", _IOC_NONE, 0x5502, 0x00 },
{ "linux/uinput.h", "UI_DEV_SETUP", _IOC_WRITE, 0x5503, 0x5c },
{ "linux/uinput.h", "UI_END_FF_ERASE", _IOC_WRITE, 0x55cb, 0x0c },
{ "linux/uinput.h", "UI_END_FF_UPLOAD", _IOC_WRITE, 0x55c9, 0x60 },
{ "linux/uinput.h", "UI_GET_VERSION", _IOC_READ, 0x552d, 0x04 },
@ -1925,6 +2119,11 @@
{ "linux/usb/iowarrior.h", "IOW_GETINFO", _IOC_READ, 0xc003, 0x28 },
{ "linux/usb/iowarrior.h", "IOW_READ", _IOC_WRITE, 0xc002, 0x04 },
{ "linux/usb/iowarrior.h", "IOW_WRITE", _IOC_WRITE, 0xc001, 0x04 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GET_CAPS", _IOC_READ, 0x5b11, 0x01 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GOTO_LOCAL", _IOC_NONE, 0x5b14, 0x00 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_READ_STB", _IOC_READ, 0x5b12, 0x01 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_REN_CONTROL", _IOC_WRITE, 0x5b13, 0x01 },
{ "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_IN", _IOC_NONE, 0x5b04, 0x00 },
{ "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_OUT", _IOC_NONE, 0x5b03, 0x00 },
{ "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR", _IOC_NONE, 0x5b02, 0x00 },
@ -1946,6 +2145,7 @@
{ "linux/usbdevice_fs.h", "USBDEVFS_DISCONNECT_CLAIM", _IOC_READ, 0x551b, 0x108 },
{ "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL", _IOC_READ, 0x550e, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL32", _IOC_READ, 0x550e, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_DROP_PRIVILEGES", _IOC_WRITE, 0x551e, 0x04 },
{ "linux/usbdevice_fs.h", "USBDEVFS_FREE_STREAMS", _IOC_READ, 0x551d, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_GETDRIVER", _IOC_WRITE, 0x5508, 0x104 },
{ "linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", _IOC_READ, 0x551a, 0x04 },
@ -1964,6 +2164,12 @@
{ "linux/usbdevice_fs.h", "USBDEVFS_SETINTERFACE", _IOC_READ, 0x5504, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB", _IOC_READ, 0x550a, 0x2c },
{ "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB32", _IOC_READ, 0x550a, 0x2a },
{ "linux/userfaultfd.h", "UFFDIO_API", _IOC_READ|_IOC_WRITE, 0xaa3f, 0x18 },
{ "linux/userfaultfd.h", "UFFDIO_COPY", _IOC_READ|_IOC_WRITE, 0xaa03, 0x28 },
{ "linux/userfaultfd.h", "UFFDIO_REGISTER", _IOC_READ|_IOC_WRITE, 0xaa00, 0x20 },
{ "linux/userfaultfd.h", "UFFDIO_UNREGISTER", _IOC_READ, 0xaa01, 0x10 },
{ "linux/userfaultfd.h", "UFFDIO_WAKE", _IOC_READ, 0xaa02, 0x10 },
{ "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 },
{ "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x58 },
{ "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x0c },
{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_DV_TIMINGS_CAP", _IOC_READ|_IOC_WRITE, 0x5664, 0x90 },
@ -2002,11 +2208,17 @@
{ "linux/vfio.h", "VFIO_IOMMU_ENABLE", _IOC_NONE, 0x3b73, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_MAP_DMA", _IOC_NONE, 0x3b71, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_REGISTER_MEMORY", _IOC_NONE, 0x3b75, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_CREATE", _IOC_NONE, 0x3b77, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_REMOVE", _IOC_NONE, 0x3b78, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY", _IOC_NONE, 0x3b76, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_UNMAP_DMA", _IOC_NONE, 0x3b72, 0x00 },
{ "linux/vfio.h", "VFIO_SET_IOMMU", _IOC_NONE, 0x3b66, 0x00 },
{ "linux/vhost.h", "VHOST_GET_FEATURES", _IOC_READ, 0xaf00, 0x08 },
{ "linux/vhost.h", "VHOST_GET_VRING_BASE", _IOC_READ|_IOC_WRITE, 0xaf12, 0x08 },
{ "linux/vhost.h", "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf24, 0x08 },
{ "linux/vhost.h", "VHOST_GET_VRING_ENDIAN", _IOC_WRITE, 0xaf14, 0x08 },
{ "linux/vhost.h", "VHOST_NET_SET_BACKEND", _IOC_WRITE, 0xaf30, 0x08 },
{ "linux/vhost.h", "VHOST_RESET_OWNER", _IOC_NONE, 0xaf02, 0x00 },
{ "linux/vhost.h", "VHOST_SCSI_CLEAR_ENDPOINT", _IOC_WRITE, 0xaf41, 0xe8 },
@ -2021,7 +2233,9 @@
{ "linux/vhost.h", "VHOST_SET_OWNER", _IOC_NONE, 0xaf01, 0x00 },
{ "linux/vhost.h", "VHOST_SET_VRING_ADDR", _IOC_WRITE, 0xaf11, 0x28 },
{ "linux/vhost.h", "VHOST_SET_VRING_BASE", _IOC_WRITE, 0xaf12, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf23, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_CALL", _IOC_WRITE, 0xaf21, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_ENDIAN", _IOC_WRITE, 0xaf13, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
@ -2211,55 +2425,24 @@
{ "linux/wireless.h", "SIOCSIWSTATS", 0, 0x8B0E, 0 },
{ "linux/wireless.h", "SIOCSIWTHRSPY", 0, 0x8B12, 0 },
{ "linux/wireless.h", "SIOCSIWTXPOW", 0, 0x8B26, 0 },
{ "media/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
{ "media/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
{ "media/bt819.h", "BT819_FIFO_RESET_LOW", _IOC_NONE, 0x6200, 0x00 },
{ "media/davinci/vpfe_capture.h", "VPFE_CMD_S_CCDC_RAW_PARAMS", _IOC_WRITE, 0x56c1, 0x04 },
{ "media/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
{ "media/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
{ "media/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
{ "media/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
{ "media/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
{ "media/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
{ "media/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
{ "media/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
{ "media/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
{ "media/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
{ "media/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
{ "media/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
{ "media/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
{ "media/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
{ "media/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
{ "media/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
{ "media/lirc.h", "LIRC_SET_SEND_CARRIER", _IOC_WRITE, 0x6913, 0x04 },
{ "media/lirc.h", "LIRC_SET_SEND_DUTY_CYCLE", _IOC_WRITE, 0x6915, 0x04 },
{ "media/lirc.h", "LIRC_SET_SEND_MODE", _IOC_WRITE, 0x6911, 0x04 },
{ "media/lirc.h", "LIRC_SET_TRANSMITTER_MASK", _IOC_WRITE, 0x6917, 0x04 },
{ "media/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
{ "media/saa6588.h", "SAA6588_CMD_CLOSE", _IOC_WRITE, 0x5202, 0x04 },
{ "media/saa6588.h", "SAA6588_CMD_POLL", _IOC_READ, 0x5204, 0x04 },
{ "media/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
{ "media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
{ "media/drv-intf/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
{ "media/i2c/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
{ "media/i2c/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
{ "media/i2c/bt819.h", "BT819_FIFO_RESET_LOW", _IOC_NONE, 0x6200, 0x00 },
{ "media/i2c/saa6588.h", "SAA6588_CMD_CLOSE", _IOC_WRITE, 0x5202, 0x04 },
{ "media/i2c/saa6588.h", "SAA6588_CMD_POLL", _IOC_READ, 0x5204, 0x04 },
{ "media/i2c/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
{ "media/v4l2-common.h", "TUNER_SET_CONFIG", _IOC_WRITE, 0x645c, 0x08 },
{ "media/v4l2-common.h", "VIDIOC_INT_RESET", _IOC_WRITE, 0x6466, 0x04 },
{ "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x78 },
{ "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY", _IOC_WRITE, 0x7600, 0x04 },
{ "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY", _IOC_WRITE, 0x7601, 0x04 },
{ "misc/cxl.h", "CXL_IOCTL_DOWNLOAD_IMAGE", _IOC_WRITE, 0xca0a, 0x40 },
{ "misc/cxl.h", "CXL_IOCTL_GET_AFU_ID", _IOC_READ, 0xca02, 0x40 },
{ "misc/cxl.h", "CXL_IOCTL_GET_PROCESS_ELEMENT", _IOC_READ, 0xca01, 0x04 },
{ "misc/cxl.h", "CXL_IOCTL_START_WORK", _IOC_WRITE, 0xca00, 0x40 },
{ "misc/cxl.h", "CXL_IOCTL_VALIDATE_IMAGE", _IOC_WRITE, 0xca0b, 0x40 },
{ "mtd/mtd-abi.h", "ECCGETLAYOUT", _IOC_READ, 0x4d11, 0x148 },
{ "mtd/mtd-abi.h", "ECCGETSTATS", _IOC_READ, 0x4d12, 0x10 },
{ "mtd/mtd-abi.h", "MEMERASE", _IOC_WRITE, 0x4d02, 0x08 },
@ -2324,10 +2507,21 @@
{ "net/bluetooth/rfcomm.h", "RFCOMMGETDEVLIST", _IOC_READ, 0x52d2, 0x04 },
{ "net/bluetooth/rfcomm.h", "RFCOMMRELEASEDEV", _IOC_WRITE, 0x52c9, 0x04 },
{ "net/bluetooth/rfcomm.h", "RFCOMMSTEALDLC", _IOC_WRITE, 0x52dc, 0x04 },
{ "net/nfc/nci_core.h", "NCIUARTSETDRIVER", _IOC_WRITE, 0x5500, 0x04 },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_RECOVER_AFU", _IOC_READ|_IOC_WRITE, 0xca85, 0x78 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_RELEASE", _IOC_READ|_IOC_WRITE, 0xca82, 0x68 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_USER_DIRECT", _IOC_READ|_IOC_WRITE, 0xca81, 0x70 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_USER_VIRTUAL", _IOC_READ|_IOC_WRITE, 0xca87, 0x78 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VERIFY", _IOC_READ|_IOC_WRITE, 0xca84, 0x90 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VLUN_CLONE", _IOC_READ|_IOC_WRITE, 0xca89, 0x70 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VLUN_RESIZE", _IOC_READ|_IOC_WRITE, 0xca88, 0x78 },
{ "scsi/scsi.h", "SCSI_IOCTL_GET_BUS_NUMBER", 0, 0x5386, 0 },
{ "scsi/scsi.h", "SCSI_IOCTL_GET_IDLUN", 0, 0x5382, 0 },
{ "scsi/scsi.h", "SCSI_IOCTL_GET_PCI", 0, 0x5387, 0 },
@ -2370,7 +2564,6 @@
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_PORT_INFO", _IOC_READ|_IOC_WRITE, 0x5322, 0xa4 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", _IOC_READ|_IOC_WRITE, 0x5349, 0x4c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5334, 0x8c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER", _IOC_READ|_IOC_WRITE, 0x5343, 0x00 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS", _IOC_READ|_IOC_WRITE, 0x5340, 0x5c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO", _IOC_READ|_IOC_WRITE, 0x5341, 0x2c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER", _IOC_READ|_IOC_WRITE, 0x5345, 0x60 },
@ -2386,7 +2579,6 @@
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_PORT_INFO", _IOC_WRITE, 0x5323, 0xa4 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", _IOC_WRITE, 0x534a, 0x4c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5335, 0x8c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER", _IOC_WRITE, 0x5344, 0x00 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", _IOC_WRITE, 0x5342, 0x2c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER", _IOC_WRITE, 0x5346, 0x60 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT", _IOC_WRITE, 0x5330, 0x50 },
@ -2442,6 +2634,7 @@
{ "sound/asound.h", "SNDRV_PCM_IOCTL_REWIND", _IOC_WRITE, 0x4146, 0x04 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_START", _IOC_NONE, 0x4142, 0x00 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_STATUS", _IOC_READ, 0x4120, 0x6c },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_STATUS_EXT", _IOC_READ|_IOC_WRITE, 0x4124, 0x6c },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_SW_PARAMS", _IOC_READ|_IOC_WRITE, 0x4113, 0x68 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_SYNC_PTR", _IOC_READ|_IOC_WRITE, 0x4123, 0x84 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_TSTAMP", _IOC_WRITE, 0x4102, 0x04 },
@ -2539,8 +2732,7 @@
{ "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES", _IOC_NONE, 0x4883, 0x00 },
{ "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_RESET_SAMPLES", _IOC_NONE, 0x4882, 0x00 },
{ "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_VERSION", _IOC_READ, 0x4880, 0x04 },
{ "staging/android/android_alarm.h", "ANDROID_ALARM_SET_RTC", _IOC_WRITE, 0x6105, 0x08 },
{ "staging/android/android_alarm.h", "ANDROID_ALARM_WAIT", _IOC_NONE, 0x6101, 0x00 },
{ "sound/usb_stream.h", "SNDRV_USB_STREAM_IOCTL_SET_PARAMS", _IOC_WRITE, 0x4890, 0x10 },
{ "staging/android/ashmem.h", "ASHMEM_GET_NAME", _IOC_READ, 0x7702, 0x100 },
{ "staging/android/ashmem.h", "ASHMEM_GET_PIN_STATUS", _IOC_NONE, 0x7709, 0x00 },
{ "staging/android/ashmem.h", "ASHMEM_GET_PROT_MASK", _IOC_NONE, 0x7706, 0x00 },
@ -2561,17 +2753,10 @@
{ "staging/android/ion_test.h", "ION_IOC_TEST_DMA_MAPPING", _IOC_WRITE, 0x49f1, 0x20 },
{ "staging/android/ion_test.h", "ION_IOC_TEST_KERNEL_MAPPING", _IOC_WRITE, 0x49f2, 0x20 },
{ "staging/android/ion_test.h", "ION_IOC_TEST_SET_FD", _IOC_NONE, 0x49f0, 0x00 },
{ "staging/android/logger.h", "LOGGER_FLUSH_LOG", _IOC_NONE, 0xae04, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_LOG_BUF_SIZE", _IOC_NONE, 0xae01, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_LOG_LEN", _IOC_NONE, 0xae02, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_NEXT_ENTRY_LEN", _IOC_NONE, 0xae03, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_VERSION", _IOC_NONE, 0xae05, 0x00 },
{ "staging/android/logger.h", "LOGGER_SET_VERSION", _IOC_NONE, 0xae06, 0x00 },
{ "staging/android/sw_sync.h", "SW_SYNC_IOC_CREATE_FENCE", _IOC_READ|_IOC_WRITE, 0x5700, 0x28 },
{ "staging/android/sw_sync.h", "SW_SYNC_IOC_INC", _IOC_WRITE, 0x5701, 0x04 },
{ "staging/android/sync.h", "SYNC_IOC_FENCE_INFO", _IOC_READ|_IOC_WRITE, 0x3e02, 0x28 },
{ "staging/android/sync.h", "SYNC_IOC_MERGE", _IOC_READ|_IOC_WRITE, 0x3e01, 0x28 },
{ "staging/android/sync.h", "SYNC_IOC_WAIT", _IOC_WRITE, 0x3e00, 0x04 },
{ "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
{ "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
{ "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
@ -2613,5 +2798,11 @@
{ "xen/evtchn.h", "IOCTL_EVTCHN_NOTIFY", _IOC_NONE, 0x4504, 0x04 },
{ "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 },
{ "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x08 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_MAP_GRANT_REF", _IOC_NONE, 0x4700, 0x18 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_SET_MAX_GRANTS", _IOC_NONE, 0x4703, 0x04 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_SET_UNMAP_NOTIFY", _IOC_NONE, 0x4707, 0x10 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_UNMAP_GRANT_REF", _IOC_NONE, 0x4701, 0x10 },
{ "xen/xenbus_dev.h", "IOCTL_XENBUS_BACKEND_EVTCHN", _IOC_NONE, 0x4200, 0x00 },
{ "xen/xenbus_dev.h", "IOCTL_XENBUS_BACKEND_SETUP", _IOC_NONE, 0x4201, 0x00 },

View File

@ -81,6 +81,18 @@
{ "asm-generic/sockios.h", "SIOCGSTAMP", 0, 0x8906, 0 },
{ "asm-generic/sockios.h", "SIOCGSTAMPNS", 0, 0x8907, 0 },
{ "asm-generic/sockios.h", "SIOCSPGRP", 0, 0x8902, 0 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CTX", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x20 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_METADATA", _IOC_READ|_IOC_WRITE, 0x6446, 0x120 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_OP", _IOC_READ|_IOC_WRITE, 0x6450, 0x10 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6451, 0x18 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_VA", _IOC_WRITE, 0x6448, 0x28 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_INFO", _IOC_WRITE, 0x6445, 0x20 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x6449, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_ADD_BUFS", _IOC_READ|_IOC_WRITE, 0x6416, 0x18 },
{ "drm/drm.h", "DRM_IOCTL_ADD_CTX", _IOC_READ|_IOC_WRITE, 0x6420, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_ADD_DRAW", _IOC_READ|_IOC_WRITE, 0x6427, 0x04 },
@ -118,11 +130,14 @@
{ "drm/drm.h", "DRM_IOCTL_MARK_BUFS", _IOC_WRITE, 0x6417, 0x18 },
{ "drm/drm.h", "DRM_IOCTL_MODESET_CTL", _IOC_WRITE, 0x6408, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB", _IOC_READ|_IOC_WRITE, 0x64ae, 0x1c },
{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB2", _IOC_READ|_IOC_WRITE, 0x64b8, 0x44 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB2", _IOC_READ|_IOC_WRITE, 0x64b8, 0x68 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ATOMIC", _IOC_READ|_IOC_WRITE, 0x64bc, 0x38 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ATTACHMODE", _IOC_READ|_IOC_WRITE, 0x64a8, 0x48 },
{ "drm/drm.h", "DRM_IOCTL_MODE_CREATEPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64bd, 0x10 },
{ "drm/drm.h", "DRM_IOCTL_MODE_CREATE_DUMB", _IOC_READ|_IOC_WRITE, 0x64b2, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_MODE_CURSOR", _IOC_READ|_IOC_WRITE, 0x64a3, 0x1c },
{ "drm/drm.h", "DRM_IOCTL_MODE_CURSOR2", _IOC_READ|_IOC_WRITE, 0x64bb, 0x24 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DESTROYPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64be, 0x04 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DESTROY_DUMB", _IOC_READ|_IOC_WRITE, 0x64b4, 0x04 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DETACHMODE", _IOC_READ|_IOC_WRITE, 0x64a9, 0x48 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DIRTYFB", _IOC_READ|_IOC_WRITE, 0x64b1, 0x18 },
@ -166,11 +181,21 @@
{ "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x18 },
{ "drm/drm.h", "DRM_IOCTL_VERSION", _IOC_READ|_IOC_WRITE, 0x6400, 0x24 },
{ "drm/drm.h", "DRM_IOCTL_WAIT_VBLANK", _IOC_READ|_IOC_WRITE, 0x643a, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_FINI", _IOC_WRITE, 0x6445, 0x08 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x30 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6448, 0x18 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_WAIT", _IOC_WRITE, 0x6449, 0x20 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_EXEC", _IOC_READ|_IOC_WRITE, 0x6462, 0x08 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_GET_VER", _IOC_READ|_IOC_WRITE, 0x6460, 0x08 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST", _IOC_READ|_IOC_WRITE, 0x6461, 0x28 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_GET", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_MAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_CMD_CTRL", _IOC_READ|_IOC_WRITE, 0x6473, 0x08 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_GET_PROPERTY", _IOC_READ|_IOC_WRITE, 0x6470, 0x50 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF", _IOC_READ|_IOC_WRITE, 0x6472, 0x28 },
@ -201,6 +226,8 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_BUSY", _IOC_READ|_IOC_WRITE, 0x6457, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE", _IOC_READ|_IOC_WRITE, 0x646d, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", _IOC_WRITE, 0x646e, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6474, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM", _IOC_READ|_IOC_WRITE, 0x6475, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x645b, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_ENTERVT", _IOC_NONE, 0x6459, 0x00 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_EXECBUFFER", _IOC_WRITE, 0x6454, 0x28 },
@ -211,7 +238,7 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_INIT", _IOC_WRITE, 0x6453, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_LEAVEVT", _IOC_NONE, 0x645a, 0x00 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6466, 0x0c },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x20 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x28 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_GTT", _IOC_READ|_IOC_WRITE, 0x6464, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PIN", _IOC_READ|_IOC_WRITE, 0x6455, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PREAD", _IOC_WRITE, 0x645c, 0x20 },
@ -227,7 +254,7 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6446, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID", _IOC_READ|_IOC_WRITE, 0x6465, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_RESET_STATS", _IOC_READ|_IOC_WRITE, 0x6472, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646a, 0x14 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_VBLANK_PIPE", _IOC_READ, 0x644e, 0x04 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_HWS_ADDR", _IOC_WRITE, 0x6451, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_INIT", _IOC_WRITE, 0x6440, 0x44 },
@ -352,7 +379,7 @@
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_GET_FLAGS", _IOC_READ|_IOC_WRITE, 0x644d, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_GET_TILING", _IOC_READ|_IOC_WRITE, 0x644b, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_SET_FLAGS", _IOC_READ|_IOC_WRITE, 0x644c, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_SET_TILING", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GET_SYNCPT", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
@ -362,6 +389,13 @@
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_INCR", _IOC_READ|_IOC_WRITE, 0x6443, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_READ", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_WAIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_SHADER_BO", _IOC_READ|_IOC_WRITE, 0x6445, 0x18 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_SEQNO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_AGP_INIT", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_ALLOCMEM", _IOC_READ|_IOC_WRITE, 0x6440, 0x14 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_BLIT_SYNC", _IOC_WRITE, 0x644f, 0x08 },
@ -376,6 +410,15 @@
{ "drm/via_drm.h", "DRM_IOCTL_VIA_MAP_INIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x14 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_PCICMD", _IOC_WRITE, 0x644a, 0x08 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_WAIT_IRQ", _IOC_READ|_IOC_WRITE, 0x644d, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_EXECBUFFER", _IOC_WRITE, 0x6442, 0x20 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_GET_CAPS", _IOC_READ|_IOC_WRITE, 0x6449, 0x18 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_MAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_RESOURCE_CREATE", _IOC_READ|_IOC_WRITE, 0x6444, 0x38 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_RESOURCE_INFO", _IOC_READ|_IOC_WRITE, 0x6445, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_TRANSFER_FROM_HOST", _IOC_READ|_IOC_WRITE, 0x6446, 0x24 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_TRANSFER_TO_HOST", _IOC_READ|_IOC_WRITE, 0x6447, 0x24 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_WAIT", _IOC_READ|_IOC_WRITE, 0x6448, 0x08 },
{ "linux/agpgart.h", "AGPIOC_ACQUIRE", _IOC_NONE, 0x4101, 0x00 },
{ "linux/agpgart.h", "AGPIOC_ALLOCATE", _IOC_READ|_IOC_WRITE, 0x4106, 0x04 },
{ "linux/agpgart.h", "AGPIOC_BIND", _IOC_WRITE, 0x4108, 0x04 },
@ -387,6 +430,7 @@
{ "linux/agpgart.h", "AGPIOC_RESERVE", _IOC_WRITE, 0x4104, 0x04 },
{ "linux/agpgart.h", "AGPIOC_SETUP", _IOC_WRITE, 0x4103, 0x04 },
{ "linux/agpgart.h", "AGPIOC_UNBIND", _IOC_WRITE, 0x4109, 0x04 },
{ "linux/am437x-vpfe.h", "VIDIOC_AM437X_CCDC_CFG", _IOC_WRITE, 0x56c1, 0x04 },
{ "linux/android/binder.h", "BC_ACQUIRE", _IOC_WRITE, 0x6305, 0x04 },
{ "linux/android/binder.h", "BC_ACQUIRE_DONE", _IOC_WRITE, 0x6309, 0x10 },
{ "linux/android/binder.h", "BC_ACQUIRE_RESULT", _IOC_WRITE, 0x6302, 0x04 },
@ -672,6 +716,7 @@
{ "linux/dm-ioctl.h", "DM_TABLE_STATUS", _IOC_READ|_IOC_WRITE, 0xfd0c, 0x138 },
{ "linux/dm-ioctl.h", "DM_TARGET_MSG", _IOC_READ|_IOC_WRITE, 0xfd0e, 0x138 },
{ "linux/dm-ioctl.h", "DM_VERSION", _IOC_READ|_IOC_WRITE, 0xfd00, 0x138 },
{ "linux/dma-buf.h", "DMA_BUF_IOCTL_SYNC", _IOC_WRITE, 0x6200, 0x08 },
{ "linux/dn.h", "OSIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
{ "linux/dn.h", "OSIOCSNETADDR", _IOC_WRITE, 0x89e0, 0x04 },
{ "linux/dn.h", "SIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
@ -840,6 +885,7 @@
{ "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 },
{ "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x04 },
{ "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x04 },
{ "linux/fs.h", "BLKDAXGET", _IOC_NONE, 0x1281, 0x00 },
{ "linux/fs.h", "BLKDISCARD", _IOC_NONE, 0x1277, 0x00 },
{ "linux/fs.h", "BLKDISCARDZEROES", _IOC_NONE, 0x127c, 0x00 },
{ "linux/fs.h", "BLKFLSBUF", _IOC_NONE, 0x1261, 0x00 },
@ -866,6 +912,9 @@
{ "linux/fs.h", "BLKTRACETEARDOWN", _IOC_NONE, 0x1276, 0x00 },
{ "linux/fs.h", "BLKZEROOUT", _IOC_NONE, 0x127f, 0x00 },
{ "linux/fs.h", "FIBMAP", _IOC_NONE, 0x0001, 0x00 },
{ "linux/fs.h", "FICLONE", _IOC_WRITE, 0x9409, 0x04 },
{ "linux/fs.h", "FICLONERANGE", _IOC_WRITE, 0x940d, 0x20 },
{ "linux/fs.h", "FIDEDUPERANGE", _IOC_READ|_IOC_WRITE, 0x9436, 0x18 },
{ "linux/fs.h", "FIFREEZE", _IOC_READ|_IOC_WRITE, 0x5877, 0x04 },
{ "linux/fs.h", "FIGETBSZ", _IOC_NONE, 0x0002, 0x00 },
{ "linux/fs.h", "FITHAW", _IOC_READ|_IOC_WRITE, 0x5878, 0x04 },
@ -875,10 +924,15 @@
{ "linux/fs.h", "FS_IOC32_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
{ "linux/fs.h", "FS_IOC32_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
{ "linux/fs.h", "FS_IOC_FIEMAP", _IOC_READ|_IOC_WRITE, 0x660b, 0x20 },
{ "linux/fs.h", "FS_IOC_FSGETXATTR", _IOC_READ, 0x581f, 0x1c },
{ "linux/fs.h", "FS_IOC_FSSETXATTR", _IOC_WRITE, 0x5820, 0x1c },
{ "linux/fs.h", "FS_IOC_GETFLAGS", _IOC_READ, 0x6601, 0x04 },
{ "linux/fs.h", "FS_IOC_GETVERSION", _IOC_READ, 0x7601, 0x04 },
{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
{ "linux/fs.h", "FS_IOC_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
{ "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
{ "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
{ "linux/fsl-diu-fb.h", "MFB_GET_ALPHA", _IOC_READ, 0x4d00, 0x01 },
{ "linux/fsl-diu-fb.h", "MFB_GET_AOID", _IOC_READ, 0x4d04, 0x08 },
{ "linux/fsl-diu-fb.h", "MFB_GET_GAMMA", _IOC_READ, 0x4d01, 0x01 },
@ -897,6 +951,7 @@
{ "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_START", _IOC_READ|_IOC_WRITE, 0xaf03, 0x10 },
{ "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_STOP", _IOC_READ|_IOC_WRITE, 0xaf04, 0x08 },
{ "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_SETPROP", _IOC_READ|_IOC_WRITE, 0xaf08, 0x28 },
{ "linux/fuse.h", "FUSE_DEV_IOC_CLONE", _IOC_READ, 0xe500, 0x04 },
{ "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_DDCB", _IOC_READ|_IOC_WRITE, 0xa532, 0xe8 },
{ "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_RAW_DDCB", _IOC_READ|_IOC_WRITE, 0xa533, 0xe8 },
{ "linux/genwqe/genwqe_card.h", "GENWQE_GET_CARD_STATE", _IOC_READ, 0xa524, 0x04 },
@ -914,6 +969,8 @@
{ "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
{ "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
{ "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
{ "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
{ "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
{ "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
{ "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
{ "linux/gsmmux.h", "GSMIOC_GETCONF", _IOC_READ, 0x4700, 0x4c },
@ -982,6 +1039,10 @@
{ "linux/hpet.h", "HPET_IE_ON", _IOC_NONE, 0x6801, 0x00 },
{ "linux/hpet.h", "HPET_INFO", _IOC_READ, 0x6803, 0x0c },
{ "linux/hpet.h", "HPET_IRQFREQ", _IOC_WRITE, 0x6806, 0x04 },
{ "linux/hsi/cs-protocol.h", "CS_CONFIG_BUFS", _IOC_WRITE, 0x431f, 0x20 },
{ "linux/hsi/cs-protocol.h", "CS_GET_IF_VERSION", _IOC_READ, 0x431e, 0x04 },
{ "linux/hsi/cs-protocol.h", "CS_GET_STATE", _IOC_READ, 0x4315, 0x04 },
{ "linux/hsi/cs-protocol.h", "CS_SET_WAKELINE", _IOC_WRITE, 0x4317, 0x04 },
{ "linux/hsi/hsi_char.h", "HSC_GET_RX", _IOC_WRITE, 0x6b14, 0x0c },
{ "linux/hsi/hsi_char.h", "HSC_GET_TX", _IOC_WRITE, 0x6b16, 0x10 },
{ "linux/hsi/hsi_char.h", "HSC_RESET", _IOC_NONE, 0x6b10, 0x00 },
@ -1003,10 +1064,6 @@
{ "linux/i2o-dev.h", "I2OSWDL", _IOC_READ|_IOC_WRITE, 0x6905, 0x1c },
{ "linux/i2o-dev.h", "I2OSWUL", _IOC_READ|_IOC_WRITE, 0x6906, 0x1c },
{ "linux/i2o-dev.h", "I2OVALIDATE", _IOC_READ, 0x6908, 0x04 },
{ "linux/i2o.h", "BLKI2OGRSTRAT", _IOC_READ, 0x3201, 0x04 },
{ "linux/i2o.h", "BLKI2OGWSTRAT", _IOC_READ, 0x3202, 0x04 },
{ "linux/i2o.h", "BLKI2OSRSTRAT", _IOC_WRITE, 0x3203, 0x04 },
{ "linux/i2o.h", "BLKI2OSWSTRAT", _IOC_WRITE, 0x3204, 0x04 },
{ "linux/i8k.h", "I8K_BIOS_VERSION", _IOC_READ, 0x6980, 0x04 },
{ "linux/i8k.h", "I8K_FN_STATUS", _IOC_READ, 0x6983, 0x04 },
{ "linux/i8k.h", "I8K_GET_FAN", _IOC_READ|_IOC_WRITE, 0x6986, 0x04 },
@ -1023,6 +1080,7 @@
{ "linux/if_tun.h", "TUNGETFILTER", _IOC_READ, 0x54db, 0x08 },
{ "linux/if_tun.h", "TUNGETIFF", _IOC_READ, 0x54d2, 0x04 },
{ "linux/if_tun.h", "TUNGETSNDBUF", _IOC_READ, 0x54d3, 0x04 },
{ "linux/if_tun.h", "TUNGETVNETBE", _IOC_READ, 0x54df, 0x04 },
{ "linux/if_tun.h", "TUNGETVNETHDRSZ", _IOC_READ, 0x54d7, 0x04 },
{ "linux/if_tun.h", "TUNGETVNETLE", _IOC_READ, 0x54dd, 0x04 },
{ "linux/if_tun.h", "TUNSETDEBUG", _IOC_WRITE, 0x54c9, 0x04 },
@ -1037,6 +1095,7 @@
{ "linux/if_tun.h", "TUNSETQUEUE", _IOC_WRITE, 0x54d9, 0x04 },
{ "linux/if_tun.h", "TUNSETSNDBUF", _IOC_WRITE, 0x54d4, 0x04 },
{ "linux/if_tun.h", "TUNSETTXFILTER", _IOC_WRITE, 0x54d1, 0x04 },
{ "linux/if_tun.h", "TUNSETVNETBE", _IOC_WRITE, 0x54de, 0x04 },
{ "linux/if_tun.h", "TUNSETVNETHDRSZ", _IOC_WRITE, 0x54d8, 0x04 },
{ "linux/if_tun.h", "TUNSETVNETLE", _IOC_WRITE, 0x54dc, 0x04 },
{ "linux/iio/events.h", "IIO_GET_EVENT_FD_IOCTL", _IOC_READ, 0x6990, 0x04 },
@ -1044,6 +1103,7 @@
{ "linux/input.h", "EVIOCGID", _IOC_READ, 0x4502, 0x08 },
{ "linux/input.h", "EVIOCGKEYCODE", _IOC_READ, 0x4504, 0x08 },
{ "linux/input.h", "EVIOCGKEYCODE_V2", _IOC_READ, 0x4504, 0x28 },
{ "linux/input.h", "EVIOCGMASK", _IOC_READ, 0x4592, 0x10 },
{ "linux/input.h", "EVIOCGRAB", _IOC_WRITE, 0x4590, 0x04 },
{ "linux/input.h", "EVIOCGREP", _IOC_READ, 0x4503, 0x08 },
{ "linux/input.h", "EVIOCGVERSION", _IOC_READ, 0x4501, 0x04 },
@ -1053,6 +1113,7 @@
{ "linux/input.h", "EVIOCSFF", _IOC_WRITE, 0x4580, 0x2c },
{ "linux/input.h", "EVIOCSKEYCODE", _IOC_WRITE, 0x4504, 0x08 },
{ "linux/input.h", "EVIOCSKEYCODE_V2", _IOC_WRITE, 0x4504, 0x28 },
{ "linux/input.h", "EVIOCSMASK", _IOC_WRITE, 0x4593, 0x10 },
{ "linux/input.h", "EVIOCSREP", _IOC_WRITE, 0x4503, 0x08 },
{ "linux/ipmi.h", "IPMICTL_GET_MAINTENANCE_MODE_CMD", _IOC_READ, 0x691e, 0x04 },
{ "linux/ipmi.h", "IPMICTL_GET_MY_ADDRESS_CMD", _IOC_READ, 0x6912, 0x04 },
@ -1167,6 +1228,9 @@
{ "linux/joystick.h", "JSIOCSAXMAP", _IOC_WRITE, 0x6a31, 0x40 },
{ "linux/joystick.h", "JSIOCSBTNMAP", _IOC_WRITE, 0x6a33, 0x400 },
{ "linux/joystick.h", "JSIOCSCORR", _IOC_WRITE, 0x6a21, 0x24 },
{ "linux/kcov.h", "KCOV_DISABLE", _IOC_NONE, 0x6365, 0x00 },
{ "linux/kcov.h", "KCOV_ENABLE", _IOC_NONE, 0x6364, 0x00 },
{ "linux/kcov.h", "KCOV_INIT_TRACE", _IOC_READ, 0x6301, 0x04 },
{ "linux/kd.h", "GIO_CMAP", 0, 0x4B70, 0 },
{ "linux/kd.h", "GIO_FONT", 0, 0x4B60, 0 },
{ "linux/kd.h", "GIO_FONTX", 0, 0x4B6B, 0 },
@ -1213,13 +1277,22 @@
{ "linux/kd.h", "PIO_UNIMAP", 0, 0x4B67, 0 },
{ "linux/kd.h", "PIO_UNIMAPCLR", 0, 0x4B68, 0 },
{ "linux/kd.h", "PIO_UNISCRNMAP", 0, 0x4B6A, 0 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_EVENT", _IOC_READ|_IOC_WRITE, 0x4b08, 0x20 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b02, 0x58 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_ADDRESS_WATCH", _IOC_WRITE, 0x4b0f, 0x10 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_REGISTER", _IOC_WRITE, 0x4b0d, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_UNREGISTER", _IOC_WRITE, 0x4b0e, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_WAVE_CONTROL", _IOC_WRITE, 0x4b10, 0x10 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_EVENT", _IOC_WRITE, 0x4b09, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
{ "linux/kvm.h", "KVM_ALLOCATE_RMA", _IOC_READ, 0xaea9, 0x08 },
{ "linux/kvm.h", "KVM_ARM_PREFERRED_TARGET", _IOC_READ, 0xaeaf, 0x20 },
{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
@ -1235,6 +1308,7 @@
{ "linux/kvm.h", "KVM_CREATE_PIT", _IOC_NONE, 0xae64, 0x00 },
{ "linux/kvm.h", "KVM_CREATE_PIT2", _IOC_WRITE, 0xae77, 0x40 },
{ "linux/kvm.h", "KVM_CREATE_SPAPR_TCE", _IOC_WRITE, 0xaea8, 0x0c },
{ "linux/kvm.h", "KVM_CREATE_SPAPR_TCE_64", _IOC_WRITE, 0xaea8, 0x20 },
{ "linux/kvm.h", "KVM_CREATE_VCPU", _IOC_NONE, 0xae41, 0x00 },
{ "linux/kvm.h", "KVM_CREATE_VM", _IOC_NONE, 0xae01, 0x00 },
{ "linux/kvm.h", "KVM_DEASSIGN_DEV_IRQ", _IOC_WRITE, 0xae75, 0x40 },
@ -1279,14 +1353,20 @@
{ "linux/kvm.h", "KVM_PPC_GET_HTAB_FD", _IOC_WRITE, 0xaeaa, 0x20 },
{ "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 },
{ "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 },
{ "linux/kvm.h", "KVM_PPC_RTAS_DEFINE_TOKEN", _IOC_WRITE, 0xaeac, 0x200 },
{ "linux/kvm.h", "KVM_PPC_RTAS_DEFINE_TOKEN", _IOC_WRITE, 0xaeac, 0x80 },
{ "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
{ "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
{ "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
{ "linux/kvm.h", "KVM_S390_ENABLE_SIE", _IOC_NONE, 0xae06, 0x00 },
{ "linux/kvm.h", "KVM_S390_GET_IRQ_STATE", _IOC_WRITE, 0xaeb6, 0x20 },
{ "linux/kvm.h", "KVM_S390_GET_SKEYS", _IOC_WRITE, 0xaeb2, 0x40 },
{ "linux/kvm.h", "KVM_S390_INITIAL_RESET", _IOC_NONE, 0xae97, 0x00 },
{ "linux/kvm.h", "KVM_S390_INTERRUPT", _IOC_WRITE, 0xae94, 0x10 },
{ "linux/kvm.h", "KVM_S390_IRQ", _IOC_WRITE, 0xaeb4, 0x48 },
{ "linux/kvm.h", "KVM_S390_MEM_OP", _IOC_WRITE, 0xaeb1, 0x40 },
{ "linux/kvm.h", "KVM_S390_SET_INITIAL_PSW", _IOC_WRITE, 0xae96, 0x10 },
{ "linux/kvm.h", "KVM_S390_SET_IRQ_STATE", _IOC_WRITE, 0xaeb5, 0x20 },
{ "linux/kvm.h", "KVM_S390_SET_SKEYS", _IOC_WRITE, 0xaeb3, 0x40 },
{ "linux/kvm.h", "KVM_S390_STORE_STATUS", _IOC_WRITE, 0xae95, 0x04 },
{ "linux/kvm.h", "KVM_S390_UCAS_MAP", _IOC_WRITE, 0xae50, 0x18 },
{ "linux/kvm.h", "KVM_S390_UCAS_UNMAP", _IOC_WRITE, 0xae51, 0x18 },
@ -1322,6 +1402,7 @@
{ "linux/kvm.h", "KVM_SET_XCRS", _IOC_WRITE, 0xaea7, 0x188 },
{ "linux/kvm.h", "KVM_SET_XSAVE", _IOC_WRITE, 0xaea5, 0x1000 },
{ "linux/kvm.h", "KVM_SIGNAL_MSI", _IOC_WRITE, 0xaea5, 0x20 },
{ "linux/kvm.h", "KVM_SMI", _IOC_NONE, 0xaeb7, 0x00 },
{ "linux/kvm.h", "KVM_TPR_ACCESS_REPORTING", _IOC_READ|_IOC_WRITE, 0xae92, 0x28 },
{ "linux/kvm.h", "KVM_TRANSLATE", _IOC_READ|_IOC_WRITE, 0xae85, 0x18 },
{ "linux/kvm.h", "KVM_UNREGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae68, 0x10 },
@ -1329,6 +1410,46 @@
{ "linux/kvm.h", "KVM_X86_SETUP_MCE", _IOC_WRITE, 0xae9c, 0x08 },
{ "linux/kvm.h", "KVM_X86_SET_MCE", _IOC_WRITE, 0xae9e, 0x40 },
{ "linux/kvm.h", "KVM_XEN_HVM_CONFIG", _IOC_WRITE, 0xae7a, 0x38 },
{ "linux/lightnvm.h", "NVM_DEV_CREATE", _IOC_WRITE, 0x4c22, 0x80 },
{ "linux/lightnvm.h", "NVM_DEV_FACTORY", _IOC_WRITE, 0x4c25, 0x24 },
{ "linux/lightnvm.h", "NVM_DEV_INIT", _IOC_WRITE, 0x4c24, 0x2c },
{ "linux/lightnvm.h", "NVM_DEV_REMOVE", _IOC_WRITE, 0x4c23, 0x24 },
{ "linux/lightnvm.h", "NVM_GET_DEVICES", _IOC_READ, 0x4c21, 0x1000 },
{ "linux/lightnvm.h", "NVM_INFO", _IOC_READ|_IOC_WRITE, 0x4c20, 0x1000 },
{ "linux/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
{ "linux/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
{ "linux/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
{ "linux/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
{ "linux/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
{ "linux/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
{ "linux/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
{ "linux/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
{ "linux/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
{ "linux/lirc.h", "LIRC_SET_SEND_CARRIER", _IOC_WRITE, 0x6913, 0x04 },
{ "linux/lirc.h", "LIRC_SET_SEND_DUTY_CYCLE", _IOC_WRITE, 0x6915, 0x04 },
{ "linux/lirc.h", "LIRC_SET_SEND_MODE", _IOC_WRITE, 0x6911, 0x04 },
{ "linux/lirc.h", "LIRC_SET_TRANSMITTER_MASK", _IOC_WRITE, 0x6917, 0x04 },
{ "linux/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
{ "linux/loop.h", "LOOP_CHANGE_FD", 0, 0x4C06, 0 },
{ "linux/loop.h", "LOOP_CLR_FD", 0, 0x4C01, 0 },
{ "linux/loop.h", "LOOP_CTL_ADD", 0, 0x4C80, 0 },
@ -1337,6 +1458,7 @@
{ "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 },
{ "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 },
{ "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 },
{ "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 },
{ "linux/loop.h", "LOOP_SET_STATUS", 0, 0x4C02, 0 },
{ "linux/loop.h", "LOOP_SET_STATUS64", 0, 0x4C04, 0 },
@ -1358,8 +1480,11 @@
{ "linux/media.h", "MEDIA_IOC_DEVICE_INFO", _IOC_READ|_IOC_WRITE, 0x7c00, 0x100 },
{ "linux/media.h", "MEDIA_IOC_ENUM_ENTITIES", _IOC_READ|_IOC_WRITE, 0x7c01, 0x100 },
{ "linux/media.h", "MEDIA_IOC_ENUM_LINKS", _IOC_READ|_IOC_WRITE, 0x7c02, 0x1c },
{ "linux/media.h", "MEDIA_IOC_G_TOPOLOGY", _IOC_READ|_IOC_WRITE, 0x7c04, 0x48 },
{ "linux/media.h", "MEDIA_IOC_SETUP_LINK", _IOC_READ|_IOC_WRITE, 0x7c03, 0x34 },
{ "linux/mei.h", "IOCTL_MEI_CONNECT_CLIENT", _IOC_READ|_IOC_WRITE, 0x4801, 0x10 },
{ "linux/mei.h", "IOCTL_MEI_NOTIFY_GET", _IOC_READ, 0x4803, 0x04 },
{ "linux/mei.h", "IOCTL_MEI_NOTIFY_SET", _IOC_WRITE, 0x4802, 0x04 },
{ "linux/meye.h", "MEYEIOC_G_PARAMS", _IOC_READ, 0x76c0, 0x06 },
{ "linux/meye.h", "MEYEIOC_QBUF_CAPT", _IOC_WRITE, 0x76c2, 0x04 },
{ "linux/meye.h", "MEYEIOC_STILLCAPT", _IOC_NONE, 0x76c4, 0x00 },
@ -1370,6 +1495,7 @@
{ "linux/mic_ioctl.h", "MIC_VIRTIO_CONFIG_CHANGE", _IOC_READ|_IOC_WRITE, 0x7305, 0x04 },
{ "linux/mic_ioctl.h", "MIC_VIRTIO_COPY_DESC", _IOC_READ|_IOC_WRITE, 0x7302, 0x04 },
{ "linux/mmc/ioctl.h", "MMC_IOC_CMD", _IOC_READ|_IOC_WRITE, 0xb300, 0x48 },
{ "linux/mmc/ioctl.h", "MMC_IOC_MULTI_CMD", _IOC_READ|_IOC_WRITE, 0xb301, 0x08 },
{ "linux/mmtimer.h", "MMTIMER_GETBITS", _IOC_NONE, 0x6d04, 0x00 },
{ "linux/mmtimer.h", "MMTIMER_GETCOUNTER", _IOC_READ, 0x6d09, 0x04 },
{ "linux/mmtimer.h", "MMTIMER_GETFREQ", _IOC_READ, 0x6d02, 0x04 },
@ -1381,8 +1507,6 @@
{ "linux/msdos_fs.h", "FAT_IOCTL_SET_ATTRIBUTES", _IOC_WRITE, 0x7211, 0x04 },
{ "linux/msdos_fs.h", "VFAT_IOCTL_READDIR_BOTH", _IOC_READ, 0x7201, 0x218 },
{ "linux/msdos_fs.h", "VFAT_IOCTL_READDIR_SHORT", _IOC_READ, 0x7202, 0x218 },
{ "linux/msm_mdp.h", "MSMFB_BLIT", _IOC_WRITE, 0x6d02, 0x04 },
{ "linux/msm_mdp.h", "MSMFB_GRP_DISP", _IOC_WRITE, 0x6d01, 0x04 },
{ "linux/mtio.h", "MTIOCGET", _IOC_READ, 0x6d02, 0x1c },
{ "linux/mtio.h", "MTIOCPOS", _IOC_READ, 0x6d03, 0x04 },
{ "linux/mtio.h", "MTIOCTOP", _IOC_WRITE, 0x6d01, 0x08 },
@ -1417,6 +1541,17 @@
{ "linux/ncp_fs.h", "NCP_IOC_SET_SIGN_WANTED", _IOC_WRITE, 0x6e06, 0x04 },
{ "linux/ncp_fs.h", "NCP_IOC_SIGN_INIT", _IOC_READ, 0x6e05, 0x18 },
{ "linux/ncp_fs.h", "NCP_IOC_SIGN_WANTED", _IOC_READ, 0x6e06, 0x04 },
{ "linux/ndctl.h", "ND_IOCTL_ARS_CAP", _IOC_READ|_IOC_WRITE, 0x4e01, 0x20 },
{ "linux/ndctl.h", "ND_IOCTL_ARS_START", _IOC_READ|_IOC_WRITE, 0x4e02, 0x20 },
{ "linux/ndctl.h", "ND_IOCTL_ARS_STATUS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x30 },
{ "linux/ndctl.h", "ND_IOCTL_CLEAR_ERROR", _IOC_READ|_IOC_WRITE, 0x4e04, 0x20 },
{ "linux/ndctl.h", "ND_IOCTL_DIMM_FLAGS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x08 },
{ "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_DATA", _IOC_READ|_IOC_WRITE, 0x4e05, 0x0c },
{ "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_SIZE", _IOC_READ|_IOC_WRITE, 0x4e04, 0x0c },
{ "linux/ndctl.h", "ND_IOCTL_SET_CONFIG_DATA", _IOC_READ|_IOC_WRITE, 0x4e06, 0x08 },
{ "linux/ndctl.h", "ND_IOCTL_SMART", _IOC_READ|_IOC_WRITE, 0x4e01, 0x84 },
{ "linux/ndctl.h", "ND_IOCTL_SMART_THRESHOLD", _IOC_READ|_IOC_WRITE, 0x4e02, 0x0c },
{ "linux/ndctl.h", "ND_IOCTL_VENDOR", _IOC_READ|_IOC_WRITE, 0x4e09, 0x08 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CHANGE_CPMODE", _IOC_WRITE, 0x6e80, 0x10 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CLEAN_SEGMENTS", _IOC_WRITE, 0x6e88, 0x78 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_DELETE_CHECKPOINT", _IOC_WRITE, 0x6e81, 0x08 },
@ -1430,10 +1565,12 @@
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
{ "linux/nvme.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
{ "linux/nvme.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
{ "linux/nvme.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
{ "linux/nvme.h", "NVME_IOCTL_SUBMIT_IO", _IOC_WRITE, 0x4e42, 0x30 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_RESET", _IOC_NONE, 0x4e44, 0x00 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_SUBMIT_IO", _IOC_WRITE, 0x4e42, 0x30 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_SUBSYS_RESET", _IOC_NONE, 0x4e45, 0x00 },
{ "linux/nvram.h", "NVRAM_INIT", _IOC_NONE, 0x7040, 0x00 },
{ "linux/nvram.h", "NVRAM_SETCKS", _IOC_NONE, 0x7041, 0x00 },
{ "linux/omap3isp.h", "VIDIOC_OMAP3ISP_AEWB_CFG", _IOC_READ|_IOC_WRITE, 0x56c3, 0x20 },
@ -1472,6 +1609,7 @@
{ "linux/perf_event.h", "PERF_EVENT_IOC_PERIOD", _IOC_WRITE, 0x2404, 0x08 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_REFRESH", _IOC_NONE, 0x2402, 0x00 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_RESET", _IOC_NONE, 0x2403, 0x00 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_SET_BPF", _IOC_WRITE, 0x2408, 0x04 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_SET_FILTER", _IOC_WRITE, 0x2406, 0x04 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_SET_OUTPUT", _IOC_NONE, 0x2405, 0x00 },
{ "linux/phantom.h", "PHN_GETREG", _IOC_READ|_IOC_WRITE, 0x7005, 0x08 },
@ -1484,6 +1622,7 @@
{ "linux/phantom.h", "PHN_SET_REG", _IOC_WRITE, 0x7001, 0x04 },
{ "linux/phantom.h", "PHN_SET_REGS", _IOC_WRITE, 0x7003, 0x04 },
{ "linux/pktcdvd.h", "PACKET_CTRL_CMD", _IOC_READ|_IOC_WRITE, 0x5801, 0x18 },
{ "linux/platform_data/media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
{ "linux/pmu.h", "PMU_IOC_CAN_SLEEP", _IOC_READ, 0x4205, 0x04 },
{ "linux/pmu.h", "PMU_IOC_GET_BACKLIGHT", _IOC_READ, 0x4201, 0x04 },
{ "linux/pmu.h", "PMU_IOC_GET_MODEL", _IOC_READ, 0x4203, 0x04 },
@ -1549,6 +1688,12 @@
{ "linux/pps.h", "PPS_GETPARAMS", _IOC_READ, 0x70a1, 0x04 },
{ "linux/pps.h", "PPS_KC_BIND", _IOC_WRITE, 0x70a5, 0x04 },
{ "linux/pps.h", "PPS_SETPARAMS", _IOC_WRITE, 0x70a2, 0x04 },
{ "linux/pr.h", "IOC_PR_CLEAR", _IOC_WRITE, 0x70cd, 0x10 },
{ "linux/pr.h", "IOC_PR_PREEMPT", _IOC_WRITE, 0x70cb, 0x18 },
{ "linux/pr.h", "IOC_PR_PREEMPT_ABORT", _IOC_WRITE, 0x70cc, 0x18 },
{ "linux/pr.h", "IOC_PR_REGISTER", _IOC_WRITE, 0x70c8, 0x18 },
{ "linux/pr.h", "IOC_PR_RELEASE", _IOC_WRITE, 0x70ca, 0x10 },
{ "linux/pr.h", "IOC_PR_RESERVE", _IOC_WRITE, 0x70c9, 0x10 },
{ "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS", _IOC_READ, 0x3d01, 0x50 },
{ "linux/ptp_clock.h", "PTP_ENABLE_PPS", _IOC_WRITE, 0x3d04, 0x04 },
{ "linux/ptp_clock.h", "PTP_EXTTS_REQUEST", _IOC_WRITE, 0x3d02, 0x10 },
@ -1556,10 +1701,12 @@
{ "linux/ptp_clock.h", "PTP_PIN_GETFUNC", _IOC_READ|_IOC_WRITE, 0x3d06, 0x60 },
{ "linux/ptp_clock.h", "PTP_PIN_SETFUNC", _IOC_WRITE, 0x3d07, 0x60 },
{ "linux/ptp_clock.h", "PTP_SYS_OFFSET", _IOC_WRITE, 0x3d05, 0x340 },
{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE", _IOC_READ|_IOC_WRITE, 0x3d08, 0x40 },
{ "linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", _IOC_READ, 0x4003, 0x04 },
{ "linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", _IOC_WRITE, 0x4004, 0x04 },
{ "linux/raid/md_u.h", "ADD_NEW_DISK", _IOC_WRITE, 0x0921, 0x14 },
{ "linux/raid/md_u.h", "CLEAR_ARRAY", _IOC_NONE, 0x0920, 0x00 },
{ "linux/raid/md_u.h", "CLUSTERED_DISK_NACK", _IOC_NONE, 0x0935, 0x00 },
{ "linux/raid/md_u.h", "GET_ARRAY_INFO", _IOC_READ, 0x0911, 0x48 },
{ "linux/raid/md_u.h", "GET_BITMAP_FILE", _IOC_READ, 0x0915, 0x1000 },
{ "linux/raid/md_u.h", "GET_DISK_INFO", _IOC_READ, 0x0912, 0x14 },
@ -1589,6 +1736,30 @@
{ "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
{ "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x04 },
{ "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
{ "linux/rio_mport_cdev.h", "RIO_ALLOC_DMA", _IOC_READ|_IOC_WRITE, 0x6d13, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_DEV_ADD", _IOC_WRITE, 0x6d17, 0x20 },
{ "linux/rio_mport_cdev.h", "RIO_DEV_DEL", _IOC_WRITE, 0x6d18, 0x20 },
{ "linux/rio_mport_cdev.h", "RIO_DISABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d0a, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_DISABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0c, 0x10 },
{ "linux/rio_mport_cdev.h", "RIO_ENABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d09, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_ENABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0b, 0x10 },
{ "linux/rio_mport_cdev.h", "RIO_FREE_DMA", _IOC_WRITE, 0x6d14, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_GET_EVENT_MASK", _IOC_READ, 0x6d0e, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_MAP_INBOUND", _IOC_READ|_IOC_WRITE, 0x6d11, 0x28 },
{ "linux/rio_mport_cdev.h", "RIO_MAP_OUTBOUND", _IOC_READ|_IOC_WRITE, 0x6d0f, 0x28 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_GET_PROPERTIES", _IOC_READ, 0x6d04, 0x30 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_COMPTAG_SET", _IOC_WRITE, 0x6d02, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_HDID_SET", _IOC_WRITE, 0x6d01, 0x02 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_PORT_IDX_GET", _IOC_READ, 0x6d03, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_LOCAL", _IOC_READ, 0x6d05, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_REMOTE", _IOC_READ, 0x6d07, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_LOCAL", _IOC_WRITE, 0x6d06, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_REMOTE", _IOC_WRITE, 0x6d08, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_SET_EVENT_MASK", _IOC_WRITE, 0x6d0d, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_TRANSFER", _IOC_READ|_IOC_WRITE, 0x6d15, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_UNMAP_INBOUND", _IOC_WRITE, 0x6d12, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_UNMAP_OUTBOUND", _IOC_WRITE, 0x6d10, 0x28 },
{ "linux/rio_mport_cdev.h", "RIO_WAIT_FOR_ASYNC", _IOC_WRITE, 0x6d16, 0x08 },
{ "linux/rtc.h", "RTC_AIE_OFF", _IOC_NONE, 0x7002, 0x00 },
{ "linux/rtc.h", "RTC_AIE_ON", _IOC_NONE, 0x7001, 0x00 },
{ "linux/rtc.h", "RTC_ALM_READ", _IOC_READ, 0x7008, 0x24 },
@ -1611,6 +1782,23 @@
{ "linux/rtc.h", "RTC_WIE_ON", _IOC_NONE, 0x700f, 0x00 },
{ "linux/rtc.h", "RTC_WKALM_RD", _IOC_READ, 0x7010, 0x28 },
{ "linux/rtc.h", "RTC_WKALM_SET", _IOC_WRITE, 0x700f, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_ACCEPTREG", _IOC_READ|_IOC_WRITE, 0x7305, 0x08 },
{ "linux/scif_ioctl.h", "SCIF_ACCEPTREQ", _IOC_READ|_IOC_WRITE, 0x7304, 0x10 },
{ "linux/scif_ioctl.h", "SCIF_BIND", _IOC_READ|_IOC_WRITE, 0x7301, 0x08 },
{ "linux/scif_ioctl.h", "SCIF_CONNECT", _IOC_READ|_IOC_WRITE, 0x7303, 0x08 },
{ "linux/scif_ioctl.h", "SCIF_FENCE_MARK", _IOC_READ|_IOC_WRITE, 0x730f, 0x10 },
{ "linux/scif_ioctl.h", "SCIF_FENCE_SIGNAL", _IOC_READ|_IOC_WRITE, 0x7311, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_FENCE_WAIT", _IOC_READ|_IOC_WRITE, 0x7310, 0x04 },
{ "linux/scif_ioctl.h", "SCIF_GET_NODEIDS", _IOC_READ|_IOC_WRITE, 0x730e, 0x18 },
{ "linux/scif_ioctl.h", "SCIF_LISTEN", _IOC_WRITE, 0x7302, 0x04 },
{ "linux/scif_ioctl.h", "SCIF_READFROM", _IOC_READ|_IOC_WRITE, 0x730a, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_RECV", _IOC_READ|_IOC_WRITE, 0x7307, 0x18 },
{ "linux/scif_ioctl.h", "SCIF_REG", _IOC_READ|_IOC_WRITE, 0x7308, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_SEND", _IOC_READ|_IOC_WRITE, 0x7306, 0x18 },
{ "linux/scif_ioctl.h", "SCIF_UNREG", _IOC_READ|_IOC_WRITE, 0x7309, 0x10 },
{ "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x28 },
{ "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x04 },
{ "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
{ "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
@ -1805,6 +1993,9 @@
{ "linux/spi/spidev.h", "SPI_IOC_WR_MAX_SPEED_HZ", _IOC_WRITE, 0x6b04, 0x04 },
{ "linux/spi/spidev.h", "SPI_IOC_WR_MODE", _IOC_WRITE, 0x6b01, 0x01 },
{ "linux/spi/spidev.h", "SPI_IOC_WR_MODE32", _IOC_WRITE, 0x6b05, 0x04 },
{ "linux/stm.h", "STP_POLICY_ID_GET", _IOC_READ, 0x2501, 0x10 },
{ "linux/stm.h", "STP_POLICY_ID_SET", _IOC_READ|_IOC_WRITE, 0x2500, 0x10 },
{ "linux/stm.h", "STP_SET_OPTIONS", _IOC_WRITE, 0x2502, 0x08 },
{ "linux/suspend_ioctls.h", "SNAPSHOT_ALLOC_SWAP_PAGE", _IOC_READ, 0x3314, 0x08 },
{ "linux/suspend_ioctls.h", "SNAPSHOT_ATOMIC_RESTORE", _IOC_NONE, 0x3304, 0x00 },
{ "linux/suspend_ioctls.h", "SNAPSHOT_AVAIL_SWAP_SIZE", _IOC_READ, 0x3313, 0x08 },
@ -1887,15 +2078,18 @@
{ "linux/telephony.h", "PHONE_WINK", _IOC_WRITE, 0x71aa, 0x04 },
{ "linux/telephony.h", "PHONE_WINK_DURATION", _IOC_WRITE, 0x71a6, 0x04 },
{ "linux/timerfd.h", "TFD_IOC_SET_TICKS", _IOC_WRITE, 0x5400, 0x08 },
{ "linux/toshiba.h", "TOSH_SMM", _IOC_READ|_IOC_WRITE, 0x7490, 0x04 },
{ "linux/toshiba.h", "TOSHIBA_ACPI_SCI", _IOC_READ|_IOC_WRITE, 0x7491, 0x18 },
{ "linux/toshiba.h", "TOSH_SMM", _IOC_READ|_IOC_WRITE, 0x7490, 0x18 },
{ "linux/udf_fs_i.h", "UDF_GETEABLOCK", _IOC_READ, 0x6c41, 0x04 },
{ "linux/udf_fs_i.h", "UDF_GETEASIZE", _IOC_READ, 0x6c40, 0x04 },
{ "linux/udf_fs_i.h", "UDF_GETVOLIDENT", _IOC_READ, 0x6c42, 0x04 },
{ "linux/udf_fs_i.h", "UDF_RELOCATE_BLOCKS", _IOC_READ|_IOC_WRITE, 0x6c43, 0x04 },
{ "linux/uinput.h", "UI_ABS_SETUP", _IOC_WRITE, 0x5504, 0x1c },
{ "linux/uinput.h", "UI_BEGIN_FF_ERASE", _IOC_READ|_IOC_WRITE, 0x55ca, 0x0c },
{ "linux/uinput.h", "UI_BEGIN_FF_UPLOAD", _IOC_READ|_IOC_WRITE, 0x55c8, 0x60 },
{ "linux/uinput.h", "UI_DEV_CREATE", _IOC_NONE, 0x5501, 0x00 },
{ "linux/uinput.h", "UI_DEV_DESTROY", _IOC_NONE, 0x5502, 0x00 },
{ "linux/uinput.h", "UI_DEV_SETUP", _IOC_WRITE, 0x5503, 0x5c },
{ "linux/uinput.h", "UI_END_FF_ERASE", _IOC_WRITE, 0x55cb, 0x0c },
{ "linux/uinput.h", "UI_END_FF_UPLOAD", _IOC_WRITE, 0x55c9, 0x60 },
{ "linux/uinput.h", "UI_GET_VERSION", _IOC_READ, 0x552d, 0x04 },
@ -1925,6 +2119,11 @@
{ "linux/usb/iowarrior.h", "IOW_GETINFO", _IOC_READ, 0xc003, 0x28 },
{ "linux/usb/iowarrior.h", "IOW_READ", _IOC_WRITE, 0xc002, 0x04 },
{ "linux/usb/iowarrior.h", "IOW_WRITE", _IOC_WRITE, 0xc001, 0x04 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GET_CAPS", _IOC_READ, 0x5b11, 0x01 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GOTO_LOCAL", _IOC_NONE, 0x5b14, 0x00 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_READ_STB", _IOC_READ, 0x5b12, 0x01 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_REN_CONTROL", _IOC_WRITE, 0x5b13, 0x01 },
{ "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_IN", _IOC_NONE, 0x5b04, 0x00 },
{ "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_OUT", _IOC_NONE, 0x5b03, 0x00 },
{ "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR", _IOC_NONE, 0x5b02, 0x00 },
@ -1946,6 +2145,7 @@
{ "linux/usbdevice_fs.h", "USBDEVFS_DISCONNECT_CLAIM", _IOC_READ, 0x551b, 0x108 },
{ "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL", _IOC_READ, 0x550e, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL32", _IOC_READ, 0x550e, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_DROP_PRIVILEGES", _IOC_WRITE, 0x551e, 0x04 },
{ "linux/usbdevice_fs.h", "USBDEVFS_FREE_STREAMS", _IOC_READ, 0x551d, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_GETDRIVER", _IOC_WRITE, 0x5508, 0x104 },
{ "linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", _IOC_READ, 0x551a, 0x04 },
@ -1964,6 +2164,12 @@
{ "linux/usbdevice_fs.h", "USBDEVFS_SETINTERFACE", _IOC_READ, 0x5504, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB", _IOC_READ, 0x550a, 0x2c },
{ "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB32", _IOC_READ, 0x550a, 0x2a },
{ "linux/userfaultfd.h", "UFFDIO_API", _IOC_READ|_IOC_WRITE, 0xaa3f, 0x18 },
{ "linux/userfaultfd.h", "UFFDIO_COPY", _IOC_READ|_IOC_WRITE, 0xaa03, 0x28 },
{ "linux/userfaultfd.h", "UFFDIO_REGISTER", _IOC_READ|_IOC_WRITE, 0xaa00, 0x20 },
{ "linux/userfaultfd.h", "UFFDIO_UNREGISTER", _IOC_READ, 0xaa01, 0x10 },
{ "linux/userfaultfd.h", "UFFDIO_WAKE", _IOC_READ, 0xaa02, 0x10 },
{ "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 },
{ "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x58 },
{ "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x0c },
{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_DV_TIMINGS_CAP", _IOC_READ|_IOC_WRITE, 0x5664, 0x90 },
@ -2002,11 +2208,17 @@
{ "linux/vfio.h", "VFIO_IOMMU_ENABLE", _IOC_NONE, 0x3b73, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_MAP_DMA", _IOC_NONE, 0x3b71, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_REGISTER_MEMORY", _IOC_NONE, 0x3b75, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_CREATE", _IOC_NONE, 0x3b77, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_REMOVE", _IOC_NONE, 0x3b78, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY", _IOC_NONE, 0x3b76, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_UNMAP_DMA", _IOC_NONE, 0x3b72, 0x00 },
{ "linux/vfio.h", "VFIO_SET_IOMMU", _IOC_NONE, 0x3b66, 0x00 },
{ "linux/vhost.h", "VHOST_GET_FEATURES", _IOC_READ, 0xaf00, 0x08 },
{ "linux/vhost.h", "VHOST_GET_VRING_BASE", _IOC_READ|_IOC_WRITE, 0xaf12, 0x08 },
{ "linux/vhost.h", "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf24, 0x08 },
{ "linux/vhost.h", "VHOST_GET_VRING_ENDIAN", _IOC_WRITE, 0xaf14, 0x08 },
{ "linux/vhost.h", "VHOST_NET_SET_BACKEND", _IOC_WRITE, 0xaf30, 0x08 },
{ "linux/vhost.h", "VHOST_RESET_OWNER", _IOC_NONE, 0xaf02, 0x00 },
{ "linux/vhost.h", "VHOST_SCSI_CLEAR_ENDPOINT", _IOC_WRITE, 0xaf41, 0xe8 },
@ -2021,7 +2233,9 @@
{ "linux/vhost.h", "VHOST_SET_OWNER", _IOC_NONE, 0xaf01, 0x00 },
{ "linux/vhost.h", "VHOST_SET_VRING_ADDR", _IOC_WRITE, 0xaf11, 0x28 },
{ "linux/vhost.h", "VHOST_SET_VRING_BASE", _IOC_WRITE, 0xaf12, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf23, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_CALL", _IOC_WRITE, 0xaf21, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_ENDIAN", _IOC_WRITE, 0xaf13, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
@ -2211,55 +2425,24 @@
{ "linux/wireless.h", "SIOCSIWSTATS", 0, 0x8B0E, 0 },
{ "linux/wireless.h", "SIOCSIWTHRSPY", 0, 0x8B12, 0 },
{ "linux/wireless.h", "SIOCSIWTXPOW", 0, 0x8B26, 0 },
{ "media/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
{ "media/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
{ "media/bt819.h", "BT819_FIFO_RESET_LOW", _IOC_NONE, 0x6200, 0x00 },
{ "media/davinci/vpfe_capture.h", "VPFE_CMD_S_CCDC_RAW_PARAMS", _IOC_WRITE, 0x56c1, 0x04 },
{ "media/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
{ "media/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
{ "media/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
{ "media/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
{ "media/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
{ "media/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
{ "media/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
{ "media/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
{ "media/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
{ "media/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
{ "media/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
{ "media/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
{ "media/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
{ "media/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
{ "media/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
{ "media/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
{ "media/lirc.h", "LIRC_SET_SEND_CARRIER", _IOC_WRITE, 0x6913, 0x04 },
{ "media/lirc.h", "LIRC_SET_SEND_DUTY_CYCLE", _IOC_WRITE, 0x6915, 0x04 },
{ "media/lirc.h", "LIRC_SET_SEND_MODE", _IOC_WRITE, 0x6911, 0x04 },
{ "media/lirc.h", "LIRC_SET_TRANSMITTER_MASK", _IOC_WRITE, 0x6917, 0x04 },
{ "media/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
{ "media/saa6588.h", "SAA6588_CMD_CLOSE", _IOC_WRITE, 0x5202, 0x04 },
{ "media/saa6588.h", "SAA6588_CMD_POLL", _IOC_READ, 0x5204, 0x04 },
{ "media/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
{ "media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
{ "media/drv-intf/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
{ "media/i2c/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
{ "media/i2c/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
{ "media/i2c/bt819.h", "BT819_FIFO_RESET_LOW", _IOC_NONE, 0x6200, 0x00 },
{ "media/i2c/saa6588.h", "SAA6588_CMD_CLOSE", _IOC_WRITE, 0x5202, 0x04 },
{ "media/i2c/saa6588.h", "SAA6588_CMD_POLL", _IOC_READ, 0x5204, 0x04 },
{ "media/i2c/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
{ "media/v4l2-common.h", "TUNER_SET_CONFIG", _IOC_WRITE, 0x645c, 0x08 },
{ "media/v4l2-common.h", "VIDIOC_INT_RESET", _IOC_WRITE, 0x6466, 0x04 },
{ "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x80 },
{ "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY", _IOC_WRITE, 0x7600, 0x04 },
{ "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY", _IOC_WRITE, 0x7601, 0x04 },
{ "misc/cxl.h", "CXL_IOCTL_DOWNLOAD_IMAGE", _IOC_WRITE, 0xca0a, 0x40 },
{ "misc/cxl.h", "CXL_IOCTL_GET_AFU_ID", _IOC_READ, 0xca02, 0x40 },
{ "misc/cxl.h", "CXL_IOCTL_GET_PROCESS_ELEMENT", _IOC_READ, 0xca01, 0x04 },
{ "misc/cxl.h", "CXL_IOCTL_START_WORK", _IOC_WRITE, 0xca00, 0x40 },
{ "misc/cxl.h", "CXL_IOCTL_VALIDATE_IMAGE", _IOC_WRITE, 0xca0b, 0x40 },
{ "mtd/mtd-abi.h", "ECCGETLAYOUT", _IOC_READ, 0x4d11, 0x148 },
{ "mtd/mtd-abi.h", "ECCGETSTATS", _IOC_READ, 0x4d12, 0x10 },
{ "mtd/mtd-abi.h", "MEMERASE", _IOC_WRITE, 0x4d02, 0x08 },
@ -2324,10 +2507,21 @@
{ "net/bluetooth/rfcomm.h", "RFCOMMGETDEVLIST", _IOC_READ, 0x52d2, 0x04 },
{ "net/bluetooth/rfcomm.h", "RFCOMMRELEASEDEV", _IOC_WRITE, 0x52c9, 0x04 },
{ "net/bluetooth/rfcomm.h", "RFCOMMSTEALDLC", _IOC_WRITE, 0x52dc, 0x04 },
{ "net/nfc/nci_core.h", "NCIUARTSETDRIVER", _IOC_WRITE, 0x5500, 0x04 },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_RECOVER_AFU", _IOC_READ|_IOC_WRITE, 0xca85, 0x78 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_RELEASE", _IOC_READ|_IOC_WRITE, 0xca82, 0x68 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_USER_DIRECT", _IOC_READ|_IOC_WRITE, 0xca81, 0x70 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_USER_VIRTUAL", _IOC_READ|_IOC_WRITE, 0xca87, 0x78 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VERIFY", _IOC_READ|_IOC_WRITE, 0xca84, 0x90 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VLUN_CLONE", _IOC_READ|_IOC_WRITE, 0xca89, 0x70 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VLUN_RESIZE", _IOC_READ|_IOC_WRITE, 0xca88, 0x78 },
{ "scsi/scsi.h", "SCSI_IOCTL_GET_BUS_NUMBER", 0, 0x5386, 0 },
{ "scsi/scsi.h", "SCSI_IOCTL_GET_IDLUN", 0, 0x5382, 0 },
{ "scsi/scsi.h", "SCSI_IOCTL_GET_PCI", 0, 0x5387, 0 },
@ -2370,7 +2564,6 @@
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_PORT_INFO", _IOC_READ|_IOC_WRITE, 0x5322, 0xa4 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", _IOC_READ|_IOC_WRITE, 0x5349, 0x4c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5334, 0x8c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER", _IOC_READ|_IOC_WRITE, 0x5343, 0x00 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS", _IOC_READ|_IOC_WRITE, 0x5340, 0x5c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO", _IOC_READ|_IOC_WRITE, 0x5341, 0x2c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER", _IOC_READ|_IOC_WRITE, 0x5345, 0x60 },
@ -2386,7 +2579,6 @@
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_PORT_INFO", _IOC_WRITE, 0x5323, 0xa4 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", _IOC_WRITE, 0x534a, 0x4c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5335, 0x8c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER", _IOC_WRITE, 0x5344, 0x00 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", _IOC_WRITE, 0x5342, 0x2c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER", _IOC_WRITE, 0x5346, 0x60 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT", _IOC_WRITE, 0x5330, 0x50 },
@ -2442,6 +2634,7 @@
{ "sound/asound.h", "SNDRV_PCM_IOCTL_REWIND", _IOC_WRITE, 0x4146, 0x04 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_START", _IOC_NONE, 0x4142, 0x00 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_STATUS", _IOC_READ, 0x4120, 0x6c },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_STATUS_EXT", _IOC_READ|_IOC_WRITE, 0x4124, 0x6c },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_SW_PARAMS", _IOC_READ|_IOC_WRITE, 0x4113, 0x68 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_SYNC_PTR", _IOC_READ|_IOC_WRITE, 0x4123, 0x84 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_TSTAMP", _IOC_WRITE, 0x4102, 0x04 },
@ -2539,8 +2732,7 @@
{ "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES", _IOC_NONE, 0x4883, 0x00 },
{ "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_RESET_SAMPLES", _IOC_NONE, 0x4882, 0x00 },
{ "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_VERSION", _IOC_READ, 0x4880, 0x04 },
{ "staging/android/android_alarm.h", "ANDROID_ALARM_SET_RTC", _IOC_WRITE, 0x6105, 0x08 },
{ "staging/android/android_alarm.h", "ANDROID_ALARM_WAIT", _IOC_NONE, 0x6101, 0x00 },
{ "sound/usb_stream.h", "SNDRV_USB_STREAM_IOCTL_SET_PARAMS", _IOC_WRITE, 0x4890, 0x10 },
{ "staging/android/ashmem.h", "ASHMEM_GET_NAME", _IOC_READ, 0x7702, 0x100 },
{ "staging/android/ashmem.h", "ASHMEM_GET_PIN_STATUS", _IOC_NONE, 0x7709, 0x00 },
{ "staging/android/ashmem.h", "ASHMEM_GET_PROT_MASK", _IOC_NONE, 0x7706, 0x00 },
@ -2561,17 +2753,10 @@
{ "staging/android/ion_test.h", "ION_IOC_TEST_DMA_MAPPING", _IOC_WRITE, 0x49f1, 0x20 },
{ "staging/android/ion_test.h", "ION_IOC_TEST_KERNEL_MAPPING", _IOC_WRITE, 0x49f2, 0x20 },
{ "staging/android/ion_test.h", "ION_IOC_TEST_SET_FD", _IOC_NONE, 0x49f0, 0x00 },
{ "staging/android/logger.h", "LOGGER_FLUSH_LOG", _IOC_NONE, 0xae04, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_LOG_BUF_SIZE", _IOC_NONE, 0xae01, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_LOG_LEN", _IOC_NONE, 0xae02, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_NEXT_ENTRY_LEN", _IOC_NONE, 0xae03, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_VERSION", _IOC_NONE, 0xae05, 0x00 },
{ "staging/android/logger.h", "LOGGER_SET_VERSION", _IOC_NONE, 0xae06, 0x00 },
{ "staging/android/sw_sync.h", "SW_SYNC_IOC_CREATE_FENCE", _IOC_READ|_IOC_WRITE, 0x5700, 0x28 },
{ "staging/android/sw_sync.h", "SW_SYNC_IOC_INC", _IOC_WRITE, 0x5701, 0x04 },
{ "staging/android/sync.h", "SYNC_IOC_FENCE_INFO", _IOC_READ|_IOC_WRITE, 0x3e02, 0x28 },
{ "staging/android/sync.h", "SYNC_IOC_MERGE", _IOC_READ|_IOC_WRITE, 0x3e01, 0x28 },
{ "staging/android/sync.h", "SYNC_IOC_WAIT", _IOC_WRITE, 0x3e00, 0x04 },
{ "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
{ "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
{ "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
@ -2613,5 +2798,11 @@
{ "xen/evtchn.h", "IOCTL_EVTCHN_NOTIFY", _IOC_NONE, 0x4504, 0x04 },
{ "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 },
{ "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x08 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_MAP_GRANT_REF", _IOC_NONE, 0x4700, 0x18 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_SET_MAX_GRANTS", _IOC_NONE, 0x4703, 0x04 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_SET_UNMAP_NOTIFY", _IOC_NONE, 0x4707, 0x10 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_UNMAP_GRANT_REF", _IOC_NONE, 0x4701, 0x10 },
{ "xen/xenbus_dev.h", "IOCTL_XENBUS_BACKEND_EVTCHN", _IOC_NONE, 0x4200, 0x00 },
{ "xen/xenbus_dev.h", "IOCTL_XENBUS_BACKEND_SETUP", _IOC_NONE, 0x4201, 0x00 },

View File

@ -1,5 +1,5 @@
#ifndef ARCH_mmap
# define ARCH_mmap mmap
#ifndef sys_ARCH_mmap
# define sys_ARCH_mmap sys_mmap
#endif
[ 0] = { 2, 0, SEN(io_setup), "io_setup" },
[ 1] = { 1, 0, SEN(io_destroy), "io_destroy" },
@ -97,7 +97,7 @@
[ 89] = { 1, TF, SEN(acct), "acct" },
[ 90] = { 2, 0, SEN(capget), "capget" },
[ 91] = { 2, 0, SEN(capset), "capset" },
[ 92] = { 1, 0, SEN(personality), "personality" },
[ 92] = { 1, NF, SEN(personality), "personality" },
[ 93] = { 1, TP|SE, SEN(exit), "exit" },
[ 94] = { 1, TP|SE, SEN(exit), "exit_group" },
[ 95] = { 5, TP, SEN(waitid), "waitid" },
@ -171,19 +171,19 @@
[163] = { 2, 0, SEN(getrlimit), "getrlimit" },
[164] = { 2, 0, SEN(setrlimit), "setrlimit" },
[165] = { 2, 0, SEN(getrusage), "getrusage" },
[166] = { 1, 0, SEN(umask), "umask" },
[166] = { 1, NF, SEN(umask), "umask" },
[167] = { 5, 0, SEN(prctl), "prctl" },
[168] = { 3, 0, SEN(getcpu), "getcpu" },
[169] = { 2, 0, SEN(gettimeofday), "gettimeofday" },
[170] = { 2, 0, SEN(settimeofday), "settimeofday" },
[171] = { 1, 0, SEN(adjtimex), "adjtimex" },
[172] = { 0, 0, SEN(getpid), "getpid" },
[173] = { 0, 0, SEN(getppid), "getppid" },
[172] = { 0, NF, SEN(getpid), "getpid" },
[173] = { 0, NF, SEN(getppid), "getppid" },
[174] = { 0, NF, SEN(getuid), "getuid" },
[175] = { 0, NF, SEN(geteuid), "geteuid" },
[176] = { 0, NF, SEN(getgid), "getgid" },
[177] = { 0, NF, SEN(getegid), "getegid" },
[178] = { 0, 0, SEN(gettid), "gettid" },
[178] = { 0, NF, SEN(gettid), "gettid" },
[179] = { 1, 0, SEN(sysinfo), "sysinfo" },
[180] = { 4, 0, SEN(mq_open), "mq_open" },
[181] = { 1, 0, SEN(mq_unlink), "mq_unlink" },
@ -275,6 +275,9 @@
[282] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[283] = { 2, 0, SEN(membarrier), "membarrier", },
[284] = { 3, TM, SEN(mlock2), "mlock2" },
[285] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[286] = { 6, TD, SEN(preadv2), "preadv2" },
[287] = { 6, TD, SEN(pwritev2), "pwritev2" },
#undef ARCH_mmap
#undef sys_ARCH_mmap
#undef ARCH_WANT_SYNC_FILE_RANGE2

View File

@ -81,6 +81,18 @@
{ "asm-generic/sockios.h", "SIOCGSTAMP", 0, 0x8906, 0 },
{ "asm-generic/sockios.h", "SIOCGSTAMPNS", 0, 0x8907, 0 },
{ "asm-generic/sockios.h", "SIOCSPGRP", 0, 0x8902, 0 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CTX", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x20 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_METADATA", _IOC_READ|_IOC_WRITE, 0x6446, 0x120 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_OP", _IOC_READ|_IOC_WRITE, 0x6450, 0x10 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6451, 0x18 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_VA", _IOC_WRITE, 0x6448, 0x28 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_INFO", _IOC_WRITE, 0x6445, 0x20 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x6449, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_ADD_BUFS", _IOC_READ|_IOC_WRITE, 0x6416, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_ADD_CTX", _IOC_READ|_IOC_WRITE, 0x6420, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_ADD_DRAW", _IOC_READ|_IOC_WRITE, 0x6427, 0x04 },
@ -118,11 +130,14 @@
{ "drm/drm.h", "DRM_IOCTL_MARK_BUFS", _IOC_WRITE, 0x6417, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_MODESET_CTL", _IOC_WRITE, 0x6408, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB", _IOC_READ|_IOC_WRITE, 0x64ae, 0x1c },
{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB2", _IOC_READ|_IOC_WRITE, 0x64b8, 0x44 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB2", _IOC_READ|_IOC_WRITE, 0x64b8, 0x68 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ATOMIC", _IOC_READ|_IOC_WRITE, 0x64bc, 0x38 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ATTACHMODE", _IOC_READ|_IOC_WRITE, 0x64a8, 0x48 },
{ "drm/drm.h", "DRM_IOCTL_MODE_CREATEPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64bd, 0x10 },
{ "drm/drm.h", "DRM_IOCTL_MODE_CREATE_DUMB", _IOC_READ|_IOC_WRITE, 0x64b2, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_MODE_CURSOR", _IOC_READ|_IOC_WRITE, 0x64a3, 0x1c },
{ "drm/drm.h", "DRM_IOCTL_MODE_CURSOR2", _IOC_READ|_IOC_WRITE, 0x64bb, 0x24 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DESTROYPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64be, 0x04 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DESTROY_DUMB", _IOC_READ|_IOC_WRITE, 0x64b4, 0x04 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DETACHMODE", _IOC_READ|_IOC_WRITE, 0x64a9, 0x48 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DIRTYFB", _IOC_READ|_IOC_WRITE, 0x64b1, 0x18 },
@ -166,11 +181,21 @@
{ "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x18 },
{ "drm/drm.h", "DRM_IOCTL_VERSION", _IOC_READ|_IOC_WRITE, 0x6400, 0x40 },
{ "drm/drm.h", "DRM_IOCTL_WAIT_VBLANK", _IOC_READ|_IOC_WRITE, 0x643a, 0x18 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_FINI", _IOC_WRITE, 0x6445, 0x08 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x30 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6448, 0x18 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_WAIT", _IOC_WRITE, 0x6449, 0x20 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_EXEC", _IOC_READ|_IOC_WRITE, 0x6462, 0x08 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_GET_VER", _IOC_READ|_IOC_WRITE, 0x6460, 0x08 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST", _IOC_READ|_IOC_WRITE, 0x6461, 0x28 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_GET", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_MAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_CMD_CTRL", _IOC_READ|_IOC_WRITE, 0x6473, 0x08 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_GET_PROPERTY", _IOC_READ|_IOC_WRITE, 0x6470, 0x50 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF", _IOC_READ|_IOC_WRITE, 0x6472, 0x28 },
@ -201,6 +226,8 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_BUSY", _IOC_READ|_IOC_WRITE, 0x6457, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE", _IOC_READ|_IOC_WRITE, 0x646d, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", _IOC_WRITE, 0x646e, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6474, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM", _IOC_READ|_IOC_WRITE, 0x6475, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x645b, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_ENTERVT", _IOC_NONE, 0x6459, 0x00 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_EXECBUFFER", _IOC_WRITE, 0x6454, 0x28 },
@ -211,7 +238,7 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_INIT", _IOC_WRITE, 0x6453, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_LEAVEVT", _IOC_NONE, 0x645a, 0x00 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6466, 0x0c },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x20 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x28 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_GTT", _IOC_READ|_IOC_WRITE, 0x6464, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PIN", _IOC_READ|_IOC_WRITE, 0x6455, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PREAD", _IOC_WRITE, 0x645c, 0x20 },
@ -227,7 +254,7 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6446, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID", _IOC_READ|_IOC_WRITE, 0x6465, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_RESET_STATS", _IOC_READ|_IOC_WRITE, 0x6472, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646a, 0x14 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_VBLANK_PIPE", _IOC_READ, 0x644e, 0x04 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_HWS_ADDR", _IOC_WRITE, 0x6451, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_INIT", _IOC_WRITE, 0x6440, 0x44 },
@ -352,7 +379,7 @@
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_GET_FLAGS", _IOC_READ|_IOC_WRITE, 0x644d, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_GET_TILING", _IOC_READ|_IOC_WRITE, 0x644b, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_SET_FLAGS", _IOC_READ|_IOC_WRITE, 0x644c, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_SET_TILING", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GET_SYNCPT", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
@ -362,6 +389,13 @@
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_INCR", _IOC_READ|_IOC_WRITE, 0x6443, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_READ", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_WAIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_SHADER_BO", _IOC_READ|_IOC_WRITE, 0x6445, 0x18 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_SEQNO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_AGP_INIT", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_ALLOCMEM", _IOC_READ|_IOC_WRITE, 0x6440, 0x20 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_BLIT_SYNC", _IOC_WRITE, 0x644f, 0x08 },
@ -376,6 +410,15 @@
{ "drm/via_drm.h", "DRM_IOCTL_VIA_MAP_INIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x28 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_PCICMD", _IOC_WRITE, 0x644a, 0x10 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_WAIT_IRQ", _IOC_READ|_IOC_WRITE, 0x644d, 0x18 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_EXECBUFFER", _IOC_WRITE, 0x6442, 0x20 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_GET_CAPS", _IOC_READ|_IOC_WRITE, 0x6449, 0x18 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_MAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_RESOURCE_CREATE", _IOC_READ|_IOC_WRITE, 0x6444, 0x38 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_RESOURCE_INFO", _IOC_READ|_IOC_WRITE, 0x6445, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_TRANSFER_FROM_HOST", _IOC_READ|_IOC_WRITE, 0x6446, 0x24 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_TRANSFER_TO_HOST", _IOC_READ|_IOC_WRITE, 0x6447, 0x24 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_WAIT", _IOC_READ|_IOC_WRITE, 0x6448, 0x08 },
{ "linux/agpgart.h", "AGPIOC_ACQUIRE", _IOC_NONE, 0x4101, 0x00 },
{ "linux/agpgart.h", "AGPIOC_ALLOCATE", _IOC_READ|_IOC_WRITE, 0x4106, 0x08 },
{ "linux/agpgart.h", "AGPIOC_BIND", _IOC_WRITE, 0x4108, 0x08 },
@ -387,6 +430,7 @@
{ "linux/agpgart.h", "AGPIOC_RESERVE", _IOC_WRITE, 0x4104, 0x08 },
{ "linux/agpgart.h", "AGPIOC_SETUP", _IOC_WRITE, 0x4103, 0x08 },
{ "linux/agpgart.h", "AGPIOC_UNBIND", _IOC_WRITE, 0x4109, 0x08 },
{ "linux/am437x-vpfe.h", "VIDIOC_AM437X_CCDC_CFG", _IOC_WRITE, 0x56c1, 0x08 },
{ "linux/android/binder.h", "BC_ACQUIRE", _IOC_WRITE, 0x6305, 0x04 },
{ "linux/android/binder.h", "BC_ACQUIRE_DONE", _IOC_WRITE, 0x6309, 0x10 },
{ "linux/android/binder.h", "BC_ACQUIRE_RESULT", _IOC_WRITE, 0x6302, 0x04 },
@ -672,6 +716,7 @@
{ "linux/dm-ioctl.h", "DM_TABLE_STATUS", _IOC_READ|_IOC_WRITE, 0xfd0c, 0x138 },
{ "linux/dm-ioctl.h", "DM_TARGET_MSG", _IOC_READ|_IOC_WRITE, 0xfd0e, 0x138 },
{ "linux/dm-ioctl.h", "DM_VERSION", _IOC_READ|_IOC_WRITE, 0xfd00, 0x138 },
{ "linux/dma-buf.h", "DMA_BUF_IOCTL_SYNC", _IOC_WRITE, 0x6200, 0x08 },
{ "linux/dn.h", "OSIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
{ "linux/dn.h", "OSIOCSNETADDR", _IOC_WRITE, 0x89e0, 0x04 },
{ "linux/dn.h", "SIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
@ -840,6 +885,7 @@
{ "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 },
{ "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x08 },
{ "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x08 },
{ "linux/fs.h", "BLKDAXGET", _IOC_NONE, 0x1281, 0x00 },
{ "linux/fs.h", "BLKDISCARD", _IOC_NONE, 0x1277, 0x00 },
{ "linux/fs.h", "BLKDISCARDZEROES", _IOC_NONE, 0x127c, 0x00 },
{ "linux/fs.h", "BLKFLSBUF", _IOC_NONE, 0x1261, 0x00 },
@ -866,6 +912,9 @@
{ "linux/fs.h", "BLKTRACETEARDOWN", _IOC_NONE, 0x1276, 0x00 },
{ "linux/fs.h", "BLKZEROOUT", _IOC_NONE, 0x127f, 0x00 },
{ "linux/fs.h", "FIBMAP", _IOC_NONE, 0x0001, 0x00 },
{ "linux/fs.h", "FICLONE", _IOC_WRITE, 0x9409, 0x04 },
{ "linux/fs.h", "FICLONERANGE", _IOC_WRITE, 0x940d, 0x20 },
{ "linux/fs.h", "FIDEDUPERANGE", _IOC_READ|_IOC_WRITE, 0x9436, 0x18 },
{ "linux/fs.h", "FIFREEZE", _IOC_READ|_IOC_WRITE, 0x5877, 0x04 },
{ "linux/fs.h", "FIGETBSZ", _IOC_NONE, 0x0002, 0x00 },
{ "linux/fs.h", "FITHAW", _IOC_READ|_IOC_WRITE, 0x5878, 0x04 },
@ -875,10 +924,15 @@
{ "linux/fs.h", "FS_IOC32_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
{ "linux/fs.h", "FS_IOC32_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
{ "linux/fs.h", "FS_IOC_FIEMAP", _IOC_READ|_IOC_WRITE, 0x660b, 0x20 },
{ "linux/fs.h", "FS_IOC_FSGETXATTR", _IOC_READ, 0x581f, 0x1c },
{ "linux/fs.h", "FS_IOC_FSSETXATTR", _IOC_WRITE, 0x5820, 0x1c },
{ "linux/fs.h", "FS_IOC_GETFLAGS", _IOC_READ, 0x6601, 0x08 },
{ "linux/fs.h", "FS_IOC_GETVERSION", _IOC_READ, 0x7601, 0x08 },
{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
{ "linux/fs.h", "FS_IOC_SETFLAGS", _IOC_WRITE, 0x6602, 0x08 },
{ "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x08 },
{ "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
{ "linux/fsl-diu-fb.h", "MFB_GET_ALPHA", _IOC_READ, 0x4d00, 0x01 },
{ "linux/fsl-diu-fb.h", "MFB_GET_AOID", _IOC_READ, 0x4d04, 0x08 },
{ "linux/fsl-diu-fb.h", "MFB_GET_GAMMA", _IOC_READ, 0x4d01, 0x01 },
@ -897,6 +951,7 @@
{ "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_START", _IOC_READ|_IOC_WRITE, 0xaf03, 0x10 },
{ "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_STOP", _IOC_READ|_IOC_WRITE, 0xaf04, 0x08 },
{ "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_SETPROP", _IOC_READ|_IOC_WRITE, 0xaf08, 0x28 },
{ "linux/fuse.h", "FUSE_DEV_IOC_CLONE", _IOC_READ, 0xe500, 0x04 },
{ "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_DDCB", _IOC_READ|_IOC_WRITE, 0xa532, 0xe8 },
{ "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_RAW_DDCB", _IOC_READ|_IOC_WRITE, 0xa533, 0xe8 },
{ "linux/genwqe/genwqe_card.h", "GENWQE_GET_CARD_STATE", _IOC_READ, 0xa524, 0x04 },
@ -914,6 +969,8 @@
{ "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
{ "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
{ "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
{ "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
{ "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
{ "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
{ "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
{ "linux/gsmmux.h", "GSMIOC_GETCONF", _IOC_READ, 0x4700, 0x4c },
@ -982,6 +1039,10 @@
{ "linux/hpet.h", "HPET_IE_ON", _IOC_NONE, 0x6801, 0x00 },
{ "linux/hpet.h", "HPET_INFO", _IOC_READ, 0x6803, 0x18 },
{ "linux/hpet.h", "HPET_IRQFREQ", _IOC_WRITE, 0x6806, 0x08 },
{ "linux/hsi/cs-protocol.h", "CS_CONFIG_BUFS", _IOC_WRITE, 0x431f, 0x20 },
{ "linux/hsi/cs-protocol.h", "CS_GET_IF_VERSION", _IOC_READ, 0x431e, 0x04 },
{ "linux/hsi/cs-protocol.h", "CS_GET_STATE", _IOC_READ, 0x4315, 0x04 },
{ "linux/hsi/cs-protocol.h", "CS_SET_WAKELINE", _IOC_WRITE, 0x4317, 0x04 },
{ "linux/hsi/hsi_char.h", "HSC_GET_RX", _IOC_WRITE, 0x6b14, 0x0c },
{ "linux/hsi/hsi_char.h", "HSC_GET_TX", _IOC_WRITE, 0x6b16, 0x10 },
{ "linux/hsi/hsi_char.h", "HSC_RESET", _IOC_NONE, 0x6b10, 0x00 },
@ -1003,10 +1064,6 @@
{ "linux/i2o-dev.h", "I2OSWDL", _IOC_READ|_IOC_WRITE, 0x6905, 0x30 },
{ "linux/i2o-dev.h", "I2OSWUL", _IOC_READ|_IOC_WRITE, 0x6906, 0x30 },
{ "linux/i2o-dev.h", "I2OVALIDATE", _IOC_READ, 0x6908, 0x04 },
{ "linux/i2o.h", "BLKI2OGRSTRAT", _IOC_READ, 0x3201, 0x04 },
{ "linux/i2o.h", "BLKI2OGWSTRAT", _IOC_READ, 0x3202, 0x04 },
{ "linux/i2o.h", "BLKI2OSRSTRAT", _IOC_WRITE, 0x3203, 0x04 },
{ "linux/i2o.h", "BLKI2OSWSTRAT", _IOC_WRITE, 0x3204, 0x04 },
{ "linux/i8k.h", "I8K_BIOS_VERSION", _IOC_READ, 0x6980, 0x04 },
{ "linux/i8k.h", "I8K_FN_STATUS", _IOC_READ, 0x6983, 0x08 },
{ "linux/i8k.h", "I8K_GET_FAN", _IOC_READ|_IOC_WRITE, 0x6986, 0x08 },
@ -1023,6 +1080,7 @@
{ "linux/if_tun.h", "TUNGETFILTER", _IOC_READ, 0x54db, 0x10 },
{ "linux/if_tun.h", "TUNGETIFF", _IOC_READ, 0x54d2, 0x04 },
{ "linux/if_tun.h", "TUNGETSNDBUF", _IOC_READ, 0x54d3, 0x04 },
{ "linux/if_tun.h", "TUNGETVNETBE", _IOC_READ, 0x54df, 0x04 },
{ "linux/if_tun.h", "TUNGETVNETHDRSZ", _IOC_READ, 0x54d7, 0x04 },
{ "linux/if_tun.h", "TUNGETVNETLE", _IOC_READ, 0x54dd, 0x04 },
{ "linux/if_tun.h", "TUNSETDEBUG", _IOC_WRITE, 0x54c9, 0x04 },
@ -1037,6 +1095,7 @@
{ "linux/if_tun.h", "TUNSETQUEUE", _IOC_WRITE, 0x54d9, 0x04 },
{ "linux/if_tun.h", "TUNSETSNDBUF", _IOC_WRITE, 0x54d4, 0x04 },
{ "linux/if_tun.h", "TUNSETTXFILTER", _IOC_WRITE, 0x54d1, 0x04 },
{ "linux/if_tun.h", "TUNSETVNETBE", _IOC_WRITE, 0x54de, 0x04 },
{ "linux/if_tun.h", "TUNSETVNETHDRSZ", _IOC_WRITE, 0x54d8, 0x04 },
{ "linux/if_tun.h", "TUNSETVNETLE", _IOC_WRITE, 0x54dc, 0x04 },
{ "linux/iio/events.h", "IIO_GET_EVENT_FD_IOCTL", _IOC_READ, 0x6990, 0x04 },
@ -1044,6 +1103,7 @@
{ "linux/input.h", "EVIOCGID", _IOC_READ, 0x4502, 0x08 },
{ "linux/input.h", "EVIOCGKEYCODE", _IOC_READ, 0x4504, 0x08 },
{ "linux/input.h", "EVIOCGKEYCODE_V2", _IOC_READ, 0x4504, 0x28 },
{ "linux/input.h", "EVIOCGMASK", _IOC_READ, 0x4592, 0x10 },
{ "linux/input.h", "EVIOCGRAB", _IOC_WRITE, 0x4590, 0x04 },
{ "linux/input.h", "EVIOCGREP", _IOC_READ, 0x4503, 0x08 },
{ "linux/input.h", "EVIOCGVERSION", _IOC_READ, 0x4501, 0x04 },
@ -1053,6 +1113,7 @@
{ "linux/input.h", "EVIOCSFF", _IOC_WRITE, 0x4580, 0x30 },
{ "linux/input.h", "EVIOCSKEYCODE", _IOC_WRITE, 0x4504, 0x08 },
{ "linux/input.h", "EVIOCSKEYCODE_V2", _IOC_WRITE, 0x4504, 0x28 },
{ "linux/input.h", "EVIOCSMASK", _IOC_WRITE, 0x4593, 0x10 },
{ "linux/input.h", "EVIOCSREP", _IOC_WRITE, 0x4503, 0x08 },
{ "linux/ipmi.h", "IPMICTL_GET_MAINTENANCE_MODE_CMD", _IOC_READ, 0x691e, 0x04 },
{ "linux/ipmi.h", "IPMICTL_GET_MY_ADDRESS_CMD", _IOC_READ, 0x6912, 0x04 },
@ -1167,6 +1228,9 @@
{ "linux/joystick.h", "JSIOCSAXMAP", _IOC_WRITE, 0x6a31, 0x40 },
{ "linux/joystick.h", "JSIOCSBTNMAP", _IOC_WRITE, 0x6a33, 0x400 },
{ "linux/joystick.h", "JSIOCSCORR", _IOC_WRITE, 0x6a21, 0x24 },
{ "linux/kcov.h", "KCOV_DISABLE", _IOC_NONE, 0x6365, 0x00 },
{ "linux/kcov.h", "KCOV_ENABLE", _IOC_NONE, 0x6364, 0x00 },
{ "linux/kcov.h", "KCOV_INIT_TRACE", _IOC_READ, 0x6301, 0x08 },
{ "linux/kd.h", "GIO_CMAP", 0, 0x4B70, 0 },
{ "linux/kd.h", "GIO_FONT", 0, 0x4B60, 0 },
{ "linux/kd.h", "GIO_FONTX", 0, 0x4B6B, 0 },
@ -1213,13 +1277,22 @@
{ "linux/kd.h", "PIO_UNIMAP", 0, 0x4B67, 0 },
{ "linux/kd.h", "PIO_UNIMAPCLR", 0, 0x4B68, 0 },
{ "linux/kd.h", "PIO_UNISCRNMAP", 0, 0x4B6A, 0 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_EVENT", _IOC_READ|_IOC_WRITE, 0x4b08, 0x20 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b02, 0x58 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_ADDRESS_WATCH", _IOC_WRITE, 0x4b0f, 0x10 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_REGISTER", _IOC_WRITE, 0x4b0d, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_UNREGISTER", _IOC_WRITE, 0x4b0e, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_WAVE_CONTROL", _IOC_WRITE, 0x4b10, 0x10 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_EVENT", _IOC_WRITE, 0x4b09, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
{ "linux/kvm.h", "KVM_ALLOCATE_RMA", _IOC_READ, 0xaea9, 0x08 },
{ "linux/kvm.h", "KVM_ARM_PREFERRED_TARGET", _IOC_READ, 0xaeaf, 0x20 },
{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
@ -1235,6 +1308,7 @@
{ "linux/kvm.h", "KVM_CREATE_PIT", _IOC_NONE, 0xae64, 0x00 },
{ "linux/kvm.h", "KVM_CREATE_PIT2", _IOC_WRITE, 0xae77, 0x40 },
{ "linux/kvm.h", "KVM_CREATE_SPAPR_TCE", _IOC_WRITE, 0xaea8, 0x0c },
{ "linux/kvm.h", "KVM_CREATE_SPAPR_TCE_64", _IOC_WRITE, 0xaea8, 0x20 },
{ "linux/kvm.h", "KVM_CREATE_VCPU", _IOC_NONE, 0xae41, 0x00 },
{ "linux/kvm.h", "KVM_CREATE_VM", _IOC_NONE, 0xae01, 0x00 },
{ "linux/kvm.h", "KVM_DEASSIGN_DEV_IRQ", _IOC_WRITE, 0xae75, 0x40 },
@ -1284,9 +1358,15 @@
{ "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
{ "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
{ "linux/kvm.h", "KVM_S390_ENABLE_SIE", _IOC_NONE, 0xae06, 0x00 },
{ "linux/kvm.h", "KVM_S390_GET_IRQ_STATE", _IOC_WRITE, 0xaeb6, 0x20 },
{ "linux/kvm.h", "KVM_S390_GET_SKEYS", _IOC_WRITE, 0xaeb2, 0x40 },
{ "linux/kvm.h", "KVM_S390_INITIAL_RESET", _IOC_NONE, 0xae97, 0x00 },
{ "linux/kvm.h", "KVM_S390_INTERRUPT", _IOC_WRITE, 0xae94, 0x10 },
{ "linux/kvm.h", "KVM_S390_IRQ", _IOC_WRITE, 0xaeb4, 0x48 },
{ "linux/kvm.h", "KVM_S390_MEM_OP", _IOC_WRITE, 0xaeb1, 0x40 },
{ "linux/kvm.h", "KVM_S390_SET_INITIAL_PSW", _IOC_WRITE, 0xae96, 0x10 },
{ "linux/kvm.h", "KVM_S390_SET_IRQ_STATE", _IOC_WRITE, 0xaeb5, 0x20 },
{ "linux/kvm.h", "KVM_S390_SET_SKEYS", _IOC_WRITE, 0xaeb3, 0x40 },
{ "linux/kvm.h", "KVM_S390_STORE_STATUS", _IOC_WRITE, 0xae95, 0x08 },
{ "linux/kvm.h", "KVM_S390_UCAS_MAP", _IOC_WRITE, 0xae50, 0x18 },
{ "linux/kvm.h", "KVM_S390_UCAS_UNMAP", _IOC_WRITE, 0xae51, 0x18 },
@ -1322,6 +1402,7 @@
{ "linux/kvm.h", "KVM_SET_XCRS", _IOC_WRITE, 0xaea7, 0x188 },
{ "linux/kvm.h", "KVM_SET_XSAVE", _IOC_WRITE, 0xaea5, 0x1000 },
{ "linux/kvm.h", "KVM_SIGNAL_MSI", _IOC_WRITE, 0xaea5, 0x20 },
{ "linux/kvm.h", "KVM_SMI", _IOC_NONE, 0xaeb7, 0x00 },
{ "linux/kvm.h", "KVM_TPR_ACCESS_REPORTING", _IOC_READ|_IOC_WRITE, 0xae92, 0x28 },
{ "linux/kvm.h", "KVM_TRANSLATE", _IOC_READ|_IOC_WRITE, 0xae85, 0x18 },
{ "linux/kvm.h", "KVM_UNREGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae68, 0x10 },
@ -1329,6 +1410,46 @@
{ "linux/kvm.h", "KVM_X86_SETUP_MCE", _IOC_WRITE, 0xae9c, 0x08 },
{ "linux/kvm.h", "KVM_X86_SET_MCE", _IOC_WRITE, 0xae9e, 0x40 },
{ "linux/kvm.h", "KVM_XEN_HVM_CONFIG", _IOC_WRITE, 0xae7a, 0x38 },
{ "linux/lightnvm.h", "NVM_DEV_CREATE", _IOC_WRITE, 0x4c22, 0x80 },
{ "linux/lightnvm.h", "NVM_DEV_FACTORY", _IOC_WRITE, 0x4c25, 0x24 },
{ "linux/lightnvm.h", "NVM_DEV_INIT", _IOC_WRITE, 0x4c24, 0x2c },
{ "linux/lightnvm.h", "NVM_DEV_REMOVE", _IOC_WRITE, 0x4c23, 0x24 },
{ "linux/lightnvm.h", "NVM_GET_DEVICES", _IOC_READ, 0x4c21, 0x1000 },
{ "linux/lightnvm.h", "NVM_INFO", _IOC_READ|_IOC_WRITE, 0x4c20, 0x1000 },
{ "linux/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
{ "linux/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
{ "linux/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
{ "linux/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
{ "linux/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
{ "linux/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
{ "linux/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
{ "linux/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
{ "linux/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
{ "linux/lirc.h", "LIRC_SET_SEND_CARRIER", _IOC_WRITE, 0x6913, 0x04 },
{ "linux/lirc.h", "LIRC_SET_SEND_DUTY_CYCLE", _IOC_WRITE, 0x6915, 0x04 },
{ "linux/lirc.h", "LIRC_SET_SEND_MODE", _IOC_WRITE, 0x6911, 0x04 },
{ "linux/lirc.h", "LIRC_SET_TRANSMITTER_MASK", _IOC_WRITE, 0x6917, 0x04 },
{ "linux/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
{ "linux/loop.h", "LOOP_CHANGE_FD", 0, 0x4C06, 0 },
{ "linux/loop.h", "LOOP_CLR_FD", 0, 0x4C01, 0 },
{ "linux/loop.h", "LOOP_CTL_ADD", 0, 0x4C80, 0 },
@ -1337,6 +1458,7 @@
{ "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 },
{ "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 },
{ "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 },
{ "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 },
{ "linux/loop.h", "LOOP_SET_STATUS", 0, 0x4C02, 0 },
{ "linux/loop.h", "LOOP_SET_STATUS64", 0, 0x4C04, 0 },
@ -1358,8 +1480,11 @@
{ "linux/media.h", "MEDIA_IOC_DEVICE_INFO", _IOC_READ|_IOC_WRITE, 0x7c00, 0x100 },
{ "linux/media.h", "MEDIA_IOC_ENUM_ENTITIES", _IOC_READ|_IOC_WRITE, 0x7c01, 0x100 },
{ "linux/media.h", "MEDIA_IOC_ENUM_LINKS", _IOC_READ|_IOC_WRITE, 0x7c02, 0x28 },
{ "linux/media.h", "MEDIA_IOC_G_TOPOLOGY", _IOC_READ|_IOC_WRITE, 0x7c04, 0x48 },
{ "linux/media.h", "MEDIA_IOC_SETUP_LINK", _IOC_READ|_IOC_WRITE, 0x7c03, 0x34 },
{ "linux/mei.h", "IOCTL_MEI_CONNECT_CLIENT", _IOC_READ|_IOC_WRITE, 0x4801, 0x10 },
{ "linux/mei.h", "IOCTL_MEI_NOTIFY_GET", _IOC_READ, 0x4803, 0x04 },
{ "linux/mei.h", "IOCTL_MEI_NOTIFY_SET", _IOC_WRITE, 0x4802, 0x04 },
{ "linux/meye.h", "MEYEIOC_G_PARAMS", _IOC_READ, 0x76c0, 0x06 },
{ "linux/meye.h", "MEYEIOC_QBUF_CAPT", _IOC_WRITE, 0x76c2, 0x04 },
{ "linux/meye.h", "MEYEIOC_STILLCAPT", _IOC_NONE, 0x76c4, 0x00 },
@ -1370,6 +1495,7 @@
{ "linux/mic_ioctl.h", "MIC_VIRTIO_CONFIG_CHANGE", _IOC_READ|_IOC_WRITE, 0x7305, 0x08 },
{ "linux/mic_ioctl.h", "MIC_VIRTIO_COPY_DESC", _IOC_READ|_IOC_WRITE, 0x7302, 0x08 },
{ "linux/mmc/ioctl.h", "MMC_IOC_CMD", _IOC_READ|_IOC_WRITE, 0xb300, 0x48 },
{ "linux/mmc/ioctl.h", "MMC_IOC_MULTI_CMD", _IOC_READ|_IOC_WRITE, 0xb301, 0x08 },
{ "linux/mmtimer.h", "MMTIMER_GETBITS", _IOC_NONE, 0x6d04, 0x00 },
{ "linux/mmtimer.h", "MMTIMER_GETCOUNTER", _IOC_READ, 0x6d09, 0x08 },
{ "linux/mmtimer.h", "MMTIMER_GETFREQ", _IOC_READ, 0x6d02, 0x08 },
@ -1381,8 +1507,6 @@
{ "linux/msdos_fs.h", "FAT_IOCTL_SET_ATTRIBUTES", _IOC_WRITE, 0x7211, 0x04 },
{ "linux/msdos_fs.h", "VFAT_IOCTL_READDIR_BOTH", _IOC_READ, 0x7201, 0x230 },
{ "linux/msdos_fs.h", "VFAT_IOCTL_READDIR_SHORT", _IOC_READ, 0x7202, 0x230 },
{ "linux/msm_mdp.h", "MSMFB_BLIT", _IOC_WRITE, 0x6d02, 0x04 },
{ "linux/msm_mdp.h", "MSMFB_GRP_DISP", _IOC_WRITE, 0x6d01, 0x04 },
{ "linux/mtio.h", "MTIOCGET", _IOC_READ, 0x6d02, 0x30 },
{ "linux/mtio.h", "MTIOCPOS", _IOC_READ, 0x6d03, 0x08 },
{ "linux/mtio.h", "MTIOCTOP", _IOC_WRITE, 0x6d01, 0x08 },
@ -1417,6 +1541,17 @@
{ "linux/ncp_fs.h", "NCP_IOC_SET_SIGN_WANTED", _IOC_WRITE, 0x6e06, 0x04 },
{ "linux/ncp_fs.h", "NCP_IOC_SIGN_INIT", _IOC_READ, 0x6e05, 0x18 },
{ "linux/ncp_fs.h", "NCP_IOC_SIGN_WANTED", _IOC_READ, 0x6e06, 0x04 },
{ "linux/ndctl.h", "ND_IOCTL_ARS_CAP", _IOC_READ|_IOC_WRITE, 0x4e01, 0x20 },
{ "linux/ndctl.h", "ND_IOCTL_ARS_START", _IOC_READ|_IOC_WRITE, 0x4e02, 0x20 },
{ "linux/ndctl.h", "ND_IOCTL_ARS_STATUS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x30 },
{ "linux/ndctl.h", "ND_IOCTL_CLEAR_ERROR", _IOC_READ|_IOC_WRITE, 0x4e04, 0x20 },
{ "linux/ndctl.h", "ND_IOCTL_DIMM_FLAGS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x08 },
{ "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_DATA", _IOC_READ|_IOC_WRITE, 0x4e05, 0x0c },
{ "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_SIZE", _IOC_READ|_IOC_WRITE, 0x4e04, 0x0c },
{ "linux/ndctl.h", "ND_IOCTL_SET_CONFIG_DATA", _IOC_READ|_IOC_WRITE, 0x4e06, 0x08 },
{ "linux/ndctl.h", "ND_IOCTL_SMART", _IOC_READ|_IOC_WRITE, 0x4e01, 0x84 },
{ "linux/ndctl.h", "ND_IOCTL_SMART_THRESHOLD", _IOC_READ|_IOC_WRITE, 0x4e02, 0x0c },
{ "linux/ndctl.h", "ND_IOCTL_VENDOR", _IOC_READ|_IOC_WRITE, 0x4e09, 0x08 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CHANGE_CPMODE", _IOC_WRITE, 0x6e80, 0x10 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CLEAN_SEGMENTS", _IOC_WRITE, 0x6e88, 0x78 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_DELETE_CHECKPOINT", _IOC_WRITE, 0x6e81, 0x08 },
@ -1430,10 +1565,12 @@
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
{ "linux/nvme.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
{ "linux/nvme.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
{ "linux/nvme.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
{ "linux/nvme.h", "NVME_IOCTL_SUBMIT_IO", _IOC_WRITE, 0x4e42, 0x30 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_RESET", _IOC_NONE, 0x4e44, 0x00 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_SUBMIT_IO", _IOC_WRITE, 0x4e42, 0x30 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_SUBSYS_RESET", _IOC_NONE, 0x4e45, 0x00 },
{ "linux/nvram.h", "NVRAM_INIT", _IOC_NONE, 0x7040, 0x00 },
{ "linux/nvram.h", "NVRAM_SETCKS", _IOC_NONE, 0x7041, 0x00 },
{ "linux/omap3isp.h", "VIDIOC_OMAP3ISP_AEWB_CFG", _IOC_READ|_IOC_WRITE, 0x56c3, 0x20 },
@ -1472,6 +1609,7 @@
{ "linux/perf_event.h", "PERF_EVENT_IOC_PERIOD", _IOC_WRITE, 0x2404, 0x08 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_REFRESH", _IOC_NONE, 0x2402, 0x00 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_RESET", _IOC_NONE, 0x2403, 0x00 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_SET_BPF", _IOC_WRITE, 0x2408, 0x04 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_SET_FILTER", _IOC_WRITE, 0x2406, 0x08 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_SET_OUTPUT", _IOC_NONE, 0x2405, 0x00 },
{ "linux/phantom.h", "PHN_GETREG", _IOC_READ|_IOC_WRITE, 0x7005, 0x08 },
@ -1484,6 +1622,7 @@
{ "linux/phantom.h", "PHN_SET_REG", _IOC_WRITE, 0x7001, 0x08 },
{ "linux/phantom.h", "PHN_SET_REGS", _IOC_WRITE, 0x7003, 0x08 },
{ "linux/pktcdvd.h", "PACKET_CTRL_CMD", _IOC_READ|_IOC_WRITE, 0x5801, 0x18 },
{ "linux/platform_data/media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
{ "linux/pmu.h", "PMU_IOC_CAN_SLEEP", _IOC_READ, 0x4205, 0x08 },
{ "linux/pmu.h", "PMU_IOC_GET_BACKLIGHT", _IOC_READ, 0x4201, 0x08 },
{ "linux/pmu.h", "PMU_IOC_GET_MODEL", _IOC_READ, 0x4203, 0x08 },
@ -1549,6 +1688,12 @@
{ "linux/pps.h", "PPS_GETPARAMS", _IOC_READ, 0x70a1, 0x08 },
{ "linux/pps.h", "PPS_KC_BIND", _IOC_WRITE, 0x70a5, 0x08 },
{ "linux/pps.h", "PPS_SETPARAMS", _IOC_WRITE, 0x70a2, 0x08 },
{ "linux/pr.h", "IOC_PR_CLEAR", _IOC_WRITE, 0x70cd, 0x10 },
{ "linux/pr.h", "IOC_PR_PREEMPT", _IOC_WRITE, 0x70cb, 0x18 },
{ "linux/pr.h", "IOC_PR_PREEMPT_ABORT", _IOC_WRITE, 0x70cc, 0x18 },
{ "linux/pr.h", "IOC_PR_REGISTER", _IOC_WRITE, 0x70c8, 0x18 },
{ "linux/pr.h", "IOC_PR_RELEASE", _IOC_WRITE, 0x70ca, 0x10 },
{ "linux/pr.h", "IOC_PR_RESERVE", _IOC_WRITE, 0x70c9, 0x10 },
{ "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS", _IOC_READ, 0x3d01, 0x50 },
{ "linux/ptp_clock.h", "PTP_ENABLE_PPS", _IOC_WRITE, 0x3d04, 0x04 },
{ "linux/ptp_clock.h", "PTP_EXTTS_REQUEST", _IOC_WRITE, 0x3d02, 0x10 },
@ -1556,10 +1701,12 @@
{ "linux/ptp_clock.h", "PTP_PIN_GETFUNC", _IOC_READ|_IOC_WRITE, 0x3d06, 0x60 },
{ "linux/ptp_clock.h", "PTP_PIN_SETFUNC", _IOC_WRITE, 0x3d07, 0x60 },
{ "linux/ptp_clock.h", "PTP_SYS_OFFSET", _IOC_WRITE, 0x3d05, 0x340 },
{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE", _IOC_READ|_IOC_WRITE, 0x3d08, 0x40 },
{ "linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", _IOC_READ, 0x4003, 0x08 },
{ "linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", _IOC_WRITE, 0x4004, 0x08 },
{ "linux/raid/md_u.h", "ADD_NEW_DISK", _IOC_WRITE, 0x0921, 0x14 },
{ "linux/raid/md_u.h", "CLEAR_ARRAY", _IOC_NONE, 0x0920, 0x00 },
{ "linux/raid/md_u.h", "CLUSTERED_DISK_NACK", _IOC_NONE, 0x0935, 0x00 },
{ "linux/raid/md_u.h", "GET_ARRAY_INFO", _IOC_READ, 0x0911, 0x48 },
{ "linux/raid/md_u.h", "GET_BITMAP_FILE", _IOC_READ, 0x0915, 0x1000 },
{ "linux/raid/md_u.h", "GET_DISK_INFO", _IOC_READ, 0x0912, 0x14 },
@ -1589,6 +1736,30 @@
{ "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
{ "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x08 },
{ "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
{ "linux/rio_mport_cdev.h", "RIO_ALLOC_DMA", _IOC_READ|_IOC_WRITE, 0x6d13, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_DEV_ADD", _IOC_WRITE, 0x6d17, 0x20 },
{ "linux/rio_mport_cdev.h", "RIO_DEV_DEL", _IOC_WRITE, 0x6d18, 0x20 },
{ "linux/rio_mport_cdev.h", "RIO_DISABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d0a, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_DISABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0c, 0x10 },
{ "linux/rio_mport_cdev.h", "RIO_ENABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d09, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_ENABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0b, 0x10 },
{ "linux/rio_mport_cdev.h", "RIO_FREE_DMA", _IOC_WRITE, 0x6d14, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_GET_EVENT_MASK", _IOC_READ, 0x6d0e, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_MAP_INBOUND", _IOC_READ|_IOC_WRITE, 0x6d11, 0x28 },
{ "linux/rio_mport_cdev.h", "RIO_MAP_OUTBOUND", _IOC_READ|_IOC_WRITE, 0x6d0f, 0x28 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_GET_PROPERTIES", _IOC_READ, 0x6d04, 0x30 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_COMPTAG_SET", _IOC_WRITE, 0x6d02, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_HDID_SET", _IOC_WRITE, 0x6d01, 0x02 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_PORT_IDX_GET", _IOC_READ, 0x6d03, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_LOCAL", _IOC_READ, 0x6d05, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_REMOTE", _IOC_READ, 0x6d07, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_LOCAL", _IOC_WRITE, 0x6d06, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_REMOTE", _IOC_WRITE, 0x6d08, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_SET_EVENT_MASK", _IOC_WRITE, 0x6d0d, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_TRANSFER", _IOC_READ|_IOC_WRITE, 0x6d15, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_UNMAP_INBOUND", _IOC_WRITE, 0x6d12, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_UNMAP_OUTBOUND", _IOC_WRITE, 0x6d10, 0x28 },
{ "linux/rio_mport_cdev.h", "RIO_WAIT_FOR_ASYNC", _IOC_WRITE, 0x6d16, 0x08 },
{ "linux/rtc.h", "RTC_AIE_OFF", _IOC_NONE, 0x7002, 0x00 },
{ "linux/rtc.h", "RTC_AIE_ON", _IOC_NONE, 0x7001, 0x00 },
{ "linux/rtc.h", "RTC_ALM_READ", _IOC_READ, 0x7008, 0x24 },
@ -1611,6 +1782,23 @@
{ "linux/rtc.h", "RTC_WIE_ON", _IOC_NONE, 0x700f, 0x00 },
{ "linux/rtc.h", "RTC_WKALM_RD", _IOC_READ, 0x7010, 0x28 },
{ "linux/rtc.h", "RTC_WKALM_SET", _IOC_WRITE, 0x700f, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_ACCEPTREG", _IOC_READ|_IOC_WRITE, 0x7305, 0x08 },
{ "linux/scif_ioctl.h", "SCIF_ACCEPTREQ", _IOC_READ|_IOC_WRITE, 0x7304, 0x10 },
{ "linux/scif_ioctl.h", "SCIF_BIND", _IOC_READ|_IOC_WRITE, 0x7301, 0x08 },
{ "linux/scif_ioctl.h", "SCIF_CONNECT", _IOC_READ|_IOC_WRITE, 0x7303, 0x08 },
{ "linux/scif_ioctl.h", "SCIF_FENCE_MARK", _IOC_READ|_IOC_WRITE, 0x730f, 0x10 },
{ "linux/scif_ioctl.h", "SCIF_FENCE_SIGNAL", _IOC_READ|_IOC_WRITE, 0x7311, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_FENCE_WAIT", _IOC_READ|_IOC_WRITE, 0x7310, 0x04 },
{ "linux/scif_ioctl.h", "SCIF_GET_NODEIDS", _IOC_READ|_IOC_WRITE, 0x730e, 0x18 },
{ "linux/scif_ioctl.h", "SCIF_LISTEN", _IOC_WRITE, 0x7302, 0x04 },
{ "linux/scif_ioctl.h", "SCIF_READFROM", _IOC_READ|_IOC_WRITE, 0x730a, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_RECV", _IOC_READ|_IOC_WRITE, 0x7307, 0x18 },
{ "linux/scif_ioctl.h", "SCIF_REG", _IOC_READ|_IOC_WRITE, 0x7308, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_SEND", _IOC_READ|_IOC_WRITE, 0x7306, 0x18 },
{ "linux/scif_ioctl.h", "SCIF_UNREG", _IOC_READ|_IOC_WRITE, 0x7309, 0x10 },
{ "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x28 },
{ "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x08 },
{ "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
{ "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
@ -1805,6 +1993,9 @@
{ "linux/spi/spidev.h", "SPI_IOC_WR_MAX_SPEED_HZ", _IOC_WRITE, 0x6b04, 0x04 },
{ "linux/spi/spidev.h", "SPI_IOC_WR_MODE", _IOC_WRITE, 0x6b01, 0x01 },
{ "linux/spi/spidev.h", "SPI_IOC_WR_MODE32", _IOC_WRITE, 0x6b05, 0x04 },
{ "linux/stm.h", "STP_POLICY_ID_GET", _IOC_READ, 0x2501, 0x10 },
{ "linux/stm.h", "STP_POLICY_ID_SET", _IOC_READ|_IOC_WRITE, 0x2500, 0x10 },
{ "linux/stm.h", "STP_SET_OPTIONS", _IOC_WRITE, 0x2502, 0x08 },
{ "linux/suspend_ioctls.h", "SNAPSHOT_ALLOC_SWAP_PAGE", _IOC_READ, 0x3314, 0x08 },
{ "linux/suspend_ioctls.h", "SNAPSHOT_ATOMIC_RESTORE", _IOC_NONE, 0x3304, 0x00 },
{ "linux/suspend_ioctls.h", "SNAPSHOT_AVAIL_SWAP_SIZE", _IOC_READ, 0x3313, 0x08 },
@ -1887,15 +2078,18 @@
{ "linux/telephony.h", "PHONE_WINK", _IOC_WRITE, 0x71aa, 0x04 },
{ "linux/telephony.h", "PHONE_WINK_DURATION", _IOC_WRITE, 0x71a6, 0x04 },
{ "linux/timerfd.h", "TFD_IOC_SET_TICKS", _IOC_WRITE, 0x5400, 0x08 },
{ "linux/toshiba.h", "TOSH_SMM", _IOC_READ|_IOC_WRITE, 0x7490, 0x04 },
{ "linux/toshiba.h", "TOSHIBA_ACPI_SCI", _IOC_READ|_IOC_WRITE, 0x7491, 0x18 },
{ "linux/toshiba.h", "TOSH_SMM", _IOC_READ|_IOC_WRITE, 0x7490, 0x18 },
{ "linux/udf_fs_i.h", "UDF_GETEABLOCK", _IOC_READ, 0x6c41, 0x08 },
{ "linux/udf_fs_i.h", "UDF_GETEASIZE", _IOC_READ, 0x6c40, 0x04 },
{ "linux/udf_fs_i.h", "UDF_GETVOLIDENT", _IOC_READ, 0x6c42, 0x08 },
{ "linux/udf_fs_i.h", "UDF_RELOCATE_BLOCKS", _IOC_READ|_IOC_WRITE, 0x6c43, 0x08 },
{ "linux/uinput.h", "UI_ABS_SETUP", _IOC_WRITE, 0x5504, 0x1c },
{ "linux/uinput.h", "UI_BEGIN_FF_ERASE", _IOC_READ|_IOC_WRITE, 0x55ca, 0x0c },
{ "linux/uinput.h", "UI_BEGIN_FF_UPLOAD", _IOC_READ|_IOC_WRITE, 0x55c8, 0x68 },
{ "linux/uinput.h", "UI_DEV_CREATE", _IOC_NONE, 0x5501, 0x00 },
{ "linux/uinput.h", "UI_DEV_DESTROY", _IOC_NONE, 0x5502, 0x00 },
{ "linux/uinput.h", "UI_DEV_SETUP", _IOC_WRITE, 0x5503, 0x5c },
{ "linux/uinput.h", "UI_END_FF_ERASE", _IOC_WRITE, 0x55cb, 0x0c },
{ "linux/uinput.h", "UI_END_FF_UPLOAD", _IOC_WRITE, 0x55c9, 0x68 },
{ "linux/uinput.h", "UI_GET_VERSION", _IOC_READ, 0x552d, 0x04 },
@ -1925,6 +2119,11 @@
{ "linux/usb/iowarrior.h", "IOW_GETINFO", _IOC_READ, 0xc003, 0x28 },
{ "linux/usb/iowarrior.h", "IOW_READ", _IOC_WRITE, 0xc002, 0x08 },
{ "linux/usb/iowarrior.h", "IOW_WRITE", _IOC_WRITE, 0xc001, 0x08 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GET_CAPS", _IOC_READ, 0x5b11, 0x01 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GOTO_LOCAL", _IOC_NONE, 0x5b14, 0x00 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_READ_STB", _IOC_READ, 0x5b12, 0x01 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_REN_CONTROL", _IOC_WRITE, 0x5b13, 0x01 },
{ "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_IN", _IOC_NONE, 0x5b04, 0x00 },
{ "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_OUT", _IOC_NONE, 0x5b03, 0x00 },
{ "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR", _IOC_NONE, 0x5b02, 0x00 },
@ -1946,6 +2145,7 @@
{ "linux/usbdevice_fs.h", "USBDEVFS_DISCONNECT_CLAIM", _IOC_READ, 0x551b, 0x108 },
{ "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL", _IOC_READ, 0x550e, 0x10 },
{ "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL32", _IOC_READ, 0x550e, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_DROP_PRIVILEGES", _IOC_WRITE, 0x551e, 0x04 },
{ "linux/usbdevice_fs.h", "USBDEVFS_FREE_STREAMS", _IOC_READ, 0x551d, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_GETDRIVER", _IOC_WRITE, 0x5508, 0x104 },
{ "linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", _IOC_READ, 0x551a, 0x04 },
@ -1964,6 +2164,12 @@
{ "linux/usbdevice_fs.h", "USBDEVFS_SETINTERFACE", _IOC_READ, 0x5504, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB", _IOC_READ, 0x550a, 0x38 },
{ "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB32", _IOC_READ, 0x550a, 0x2a },
{ "linux/userfaultfd.h", "UFFDIO_API", _IOC_READ|_IOC_WRITE, 0xaa3f, 0x18 },
{ "linux/userfaultfd.h", "UFFDIO_COPY", _IOC_READ|_IOC_WRITE, 0xaa03, 0x28 },
{ "linux/userfaultfd.h", "UFFDIO_REGISTER", _IOC_READ|_IOC_WRITE, 0xaa00, 0x20 },
{ "linux/userfaultfd.h", "UFFDIO_UNREGISTER", _IOC_READ, 0xaa01, 0x10 },
{ "linux/userfaultfd.h", "UFFDIO_WAKE", _IOC_READ, 0xaa02, 0x10 },
{ "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 },
{ "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x60 },
{ "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x10 },
{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_DV_TIMINGS_CAP", _IOC_READ|_IOC_WRITE, 0x5664, 0x90 },
@ -2002,11 +2208,17 @@
{ "linux/vfio.h", "VFIO_IOMMU_ENABLE", _IOC_NONE, 0x3b73, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_MAP_DMA", _IOC_NONE, 0x3b71, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_REGISTER_MEMORY", _IOC_NONE, 0x3b75, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_CREATE", _IOC_NONE, 0x3b77, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_REMOVE", _IOC_NONE, 0x3b78, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY", _IOC_NONE, 0x3b76, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_UNMAP_DMA", _IOC_NONE, 0x3b72, 0x00 },
{ "linux/vfio.h", "VFIO_SET_IOMMU", _IOC_NONE, 0x3b66, 0x00 },
{ "linux/vhost.h", "VHOST_GET_FEATURES", _IOC_READ, 0xaf00, 0x08 },
{ "linux/vhost.h", "VHOST_GET_VRING_BASE", _IOC_READ|_IOC_WRITE, 0xaf12, 0x08 },
{ "linux/vhost.h", "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf24, 0x08 },
{ "linux/vhost.h", "VHOST_GET_VRING_ENDIAN", _IOC_WRITE, 0xaf14, 0x08 },
{ "linux/vhost.h", "VHOST_NET_SET_BACKEND", _IOC_WRITE, 0xaf30, 0x08 },
{ "linux/vhost.h", "VHOST_RESET_OWNER", _IOC_NONE, 0xaf02, 0x00 },
{ "linux/vhost.h", "VHOST_SCSI_CLEAR_ENDPOINT", _IOC_WRITE, 0xaf41, 0xe8 },
@ -2021,7 +2233,9 @@
{ "linux/vhost.h", "VHOST_SET_OWNER", _IOC_NONE, 0xaf01, 0x00 },
{ "linux/vhost.h", "VHOST_SET_VRING_ADDR", _IOC_WRITE, 0xaf11, 0x28 },
{ "linux/vhost.h", "VHOST_SET_VRING_BASE", _IOC_WRITE, 0xaf12, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf23, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_CALL", _IOC_WRITE, 0xaf21, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_ENDIAN", _IOC_WRITE, 0xaf13, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
@ -2211,55 +2425,24 @@
{ "linux/wireless.h", "SIOCSIWSTATS", 0, 0x8B0E, 0 },
{ "linux/wireless.h", "SIOCSIWTHRSPY", 0, 0x8B12, 0 },
{ "linux/wireless.h", "SIOCSIWTXPOW", 0, 0x8B26, 0 },
{ "media/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
{ "media/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
{ "media/bt819.h", "BT819_FIFO_RESET_LOW", _IOC_NONE, 0x6200, 0x00 },
{ "media/davinci/vpfe_capture.h", "VPFE_CMD_S_CCDC_RAW_PARAMS", _IOC_WRITE, 0x56c1, 0x08 },
{ "media/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
{ "media/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
{ "media/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
{ "media/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
{ "media/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
{ "media/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
{ "media/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
{ "media/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
{ "media/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
{ "media/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
{ "media/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
{ "media/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
{ "media/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
{ "media/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
{ "media/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
{ "media/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
{ "media/lirc.h", "LIRC_SET_SEND_CARRIER", _IOC_WRITE, 0x6913, 0x04 },
{ "media/lirc.h", "LIRC_SET_SEND_DUTY_CYCLE", _IOC_WRITE, 0x6915, 0x04 },
{ "media/lirc.h", "LIRC_SET_SEND_MODE", _IOC_WRITE, 0x6911, 0x04 },
{ "media/lirc.h", "LIRC_SET_TRANSMITTER_MASK", _IOC_WRITE, 0x6917, 0x04 },
{ "media/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
{ "media/saa6588.h", "SAA6588_CMD_CLOSE", _IOC_WRITE, 0x5202, 0x04 },
{ "media/saa6588.h", "SAA6588_CMD_POLL", _IOC_READ, 0x5204, 0x04 },
{ "media/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
{ "media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
{ "media/drv-intf/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
{ "media/i2c/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
{ "media/i2c/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
{ "media/i2c/bt819.h", "BT819_FIFO_RESET_LOW", _IOC_NONE, 0x6200, 0x00 },
{ "media/i2c/saa6588.h", "SAA6588_CMD_CLOSE", _IOC_WRITE, 0x5202, 0x04 },
{ "media/i2c/saa6588.h", "SAA6588_CMD_POLL", _IOC_READ, 0x5204, 0x04 },
{ "media/i2c/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
{ "media/v4l2-common.h", "TUNER_SET_CONFIG", _IOC_WRITE, 0x645c, 0x10 },
{ "media/v4l2-common.h", "VIDIOC_INT_RESET", _IOC_WRITE, 0x6466, 0x04 },
{ "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x88 },
{ "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY", _IOC_WRITE, 0x7600, 0x04 },
{ "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY", _IOC_WRITE, 0x7601, 0x04 },
{ "misc/cxl.h", "CXL_IOCTL_DOWNLOAD_IMAGE", _IOC_WRITE, 0xca0a, 0x40 },
{ "misc/cxl.h", "CXL_IOCTL_GET_AFU_ID", _IOC_READ, 0xca02, 0x40 },
{ "misc/cxl.h", "CXL_IOCTL_GET_PROCESS_ELEMENT", _IOC_READ, 0xca01, 0x04 },
{ "misc/cxl.h", "CXL_IOCTL_START_WORK", _IOC_WRITE, 0xca00, 0x40 },
{ "misc/cxl.h", "CXL_IOCTL_VALIDATE_IMAGE", _IOC_WRITE, 0xca0b, 0x40 },
{ "mtd/mtd-abi.h", "ECCGETLAYOUT", _IOC_READ, 0x4d11, 0x148 },
{ "mtd/mtd-abi.h", "ECCGETSTATS", _IOC_READ, 0x4d12, 0x10 },
{ "mtd/mtd-abi.h", "MEMERASE", _IOC_WRITE, 0x4d02, 0x08 },
@ -2324,10 +2507,21 @@
{ "net/bluetooth/rfcomm.h", "RFCOMMGETDEVLIST", _IOC_READ, 0x52d2, 0x04 },
{ "net/bluetooth/rfcomm.h", "RFCOMMRELEASEDEV", _IOC_WRITE, 0x52c9, 0x04 },
{ "net/bluetooth/rfcomm.h", "RFCOMMSTEALDLC", _IOC_WRITE, 0x52dc, 0x04 },
{ "net/nfc/nci_core.h", "NCIUARTSETDRIVER", _IOC_WRITE, 0x5500, 0x08 },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_RECOVER_AFU", _IOC_READ|_IOC_WRITE, 0xca85, 0x78 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_RELEASE", _IOC_READ|_IOC_WRITE, 0xca82, 0x68 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_USER_DIRECT", _IOC_READ|_IOC_WRITE, 0xca81, 0x70 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_USER_VIRTUAL", _IOC_READ|_IOC_WRITE, 0xca87, 0x78 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VERIFY", _IOC_READ|_IOC_WRITE, 0xca84, 0x90 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VLUN_CLONE", _IOC_READ|_IOC_WRITE, 0xca89, 0x70 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VLUN_RESIZE", _IOC_READ|_IOC_WRITE, 0xca88, 0x78 },
{ "scsi/scsi.h", "SCSI_IOCTL_GET_BUS_NUMBER", 0, 0x5386, 0 },
{ "scsi/scsi.h", "SCSI_IOCTL_GET_IDLUN", 0, 0x5382, 0 },
{ "scsi/scsi.h", "SCSI_IOCTL_GET_PCI", 0, 0x5387, 0 },
@ -2370,7 +2564,6 @@
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_PORT_INFO", _IOC_READ|_IOC_WRITE, 0x5322, 0xa8 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", _IOC_READ|_IOC_WRITE, 0x5349, 0x4c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5334, 0x8c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER", _IOC_READ|_IOC_WRITE, 0x5343, 0x00 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS", _IOC_READ|_IOC_WRITE, 0x5340, 0x5c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO", _IOC_READ|_IOC_WRITE, 0x5341, 0x2c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER", _IOC_READ|_IOC_WRITE, 0x5345, 0x60 },
@ -2386,7 +2579,6 @@
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_PORT_INFO", _IOC_WRITE, 0x5323, 0xa8 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", _IOC_WRITE, 0x534a, 0x4c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5335, 0x8c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER", _IOC_WRITE, 0x5344, 0x00 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", _IOC_WRITE, 0x5342, 0x2c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER", _IOC_WRITE, 0x5346, 0x60 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT", _IOC_WRITE, 0x5330, 0x50 },
@ -2442,6 +2634,7 @@
{ "sound/asound.h", "SNDRV_PCM_IOCTL_REWIND", _IOC_WRITE, 0x4146, 0x08 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_START", _IOC_NONE, 0x4142, 0x00 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_STATUS", _IOC_READ, 0x4120, 0x98 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_STATUS_EXT", _IOC_READ|_IOC_WRITE, 0x4124, 0x98 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_SW_PARAMS", _IOC_READ|_IOC_WRITE, 0x4113, 0x88 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_SYNC_PTR", _IOC_READ|_IOC_WRITE, 0x4123, 0x88 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_TSTAMP", _IOC_WRITE, 0x4102, 0x04 },
@ -2539,8 +2732,7 @@
{ "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES", _IOC_NONE, 0x4883, 0x00 },
{ "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_RESET_SAMPLES", _IOC_NONE, 0x4882, 0x00 },
{ "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_VERSION", _IOC_READ, 0x4880, 0x04 },
{ "staging/android/android_alarm.h", "ANDROID_ALARM_SET_RTC", _IOC_WRITE, 0x6105, 0x10 },
{ "staging/android/android_alarm.h", "ANDROID_ALARM_WAIT", _IOC_NONE, 0x6101, 0x00 },
{ "sound/usb_stream.h", "SNDRV_USB_STREAM_IOCTL_SET_PARAMS", _IOC_WRITE, 0x4890, 0x10 },
{ "staging/android/ashmem.h", "ASHMEM_GET_NAME", _IOC_READ, 0x7702, 0x100 },
{ "staging/android/ashmem.h", "ASHMEM_GET_PIN_STATUS", _IOC_NONE, 0x7709, 0x00 },
{ "staging/android/ashmem.h", "ASHMEM_GET_PROT_MASK", _IOC_NONE, 0x7706, 0x00 },
@ -2561,17 +2753,10 @@
{ "staging/android/ion_test.h", "ION_IOC_TEST_DMA_MAPPING", _IOC_WRITE, 0x49f1, 0x20 },
{ "staging/android/ion_test.h", "ION_IOC_TEST_KERNEL_MAPPING", _IOC_WRITE, 0x49f2, 0x20 },
{ "staging/android/ion_test.h", "ION_IOC_TEST_SET_FD", _IOC_NONE, 0x49f0, 0x00 },
{ "staging/android/logger.h", "LOGGER_FLUSH_LOG", _IOC_NONE, 0xae04, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_LOG_BUF_SIZE", _IOC_NONE, 0xae01, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_LOG_LEN", _IOC_NONE, 0xae02, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_NEXT_ENTRY_LEN", _IOC_NONE, 0xae03, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_VERSION", _IOC_NONE, 0xae05, 0x00 },
{ "staging/android/logger.h", "LOGGER_SET_VERSION", _IOC_NONE, 0xae06, 0x00 },
{ "staging/android/sw_sync.h", "SW_SYNC_IOC_CREATE_FENCE", _IOC_READ|_IOC_WRITE, 0x5700, 0x28 },
{ "staging/android/sw_sync.h", "SW_SYNC_IOC_INC", _IOC_WRITE, 0x5701, 0x04 },
{ "staging/android/sync.h", "SYNC_IOC_FENCE_INFO", _IOC_READ|_IOC_WRITE, 0x3e02, 0x28 },
{ "staging/android/sync.h", "SYNC_IOC_MERGE", _IOC_READ|_IOC_WRITE, 0x3e01, 0x28 },
{ "staging/android/sync.h", "SYNC_IOC_WAIT", _IOC_WRITE, 0x3e00, 0x04 },
{ "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
{ "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
{ "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
@ -2613,5 +2798,11 @@
{ "xen/evtchn.h", "IOCTL_EVTCHN_NOTIFY", _IOC_NONE, 0x4504, 0x04 },
{ "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 },
{ "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x10 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_MAP_GRANT_REF", _IOC_NONE, 0x4700, 0x18 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_SET_MAX_GRANTS", _IOC_NONE, 0x4703, 0x04 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_SET_UNMAP_NOTIFY", _IOC_NONE, 0x4707, 0x10 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_UNMAP_GRANT_REF", _IOC_NONE, 0x4701, 0x10 },
{ "xen/xenbus_dev.h", "IOCTL_XENBUS_BACKEND_EVTCHN", _IOC_NONE, 0x4200, 0x00 },
{ "xen/xenbus_dev.h", "IOCTL_XENBUS_BACKEND_SETUP", _IOC_NONE, 0x4201, 0x00 },

View File

@ -90,7 +90,7 @@
[ 89] = { 1, TF, SEN(acct), "acct" },
[ 90] = { 2, 0, SEN(capget), "capget" },
[ 91] = { 2, 0, SEN(capset), "capset" },
[ 92] = { 1, 0, SEN(personality), "personality" },
[ 92] = { 1, NF, SEN(personality), "personality" },
[ 93] = { 1, TP|SE, SEN(exit), "exit" },
[ 94] = { 1, TP|SE, SEN(exit), "exit_group" },
[ 95] = { 5, TP, SEN(waitid), "waitid" },
@ -164,19 +164,19 @@
[163] = { 2, 0, SEN(getrlimit), "getrlimit" },
[164] = { 2, 0, SEN(setrlimit), "setrlimit" },
[165] = { 2, 0, SEN(getrusage), "getrusage" },
[166] = { 1, 0, SEN(umask), "umask" },
[166] = { 1, NF, SEN(umask), "umask" },
[167] = { 5, 0, SEN(prctl), "prctl" },
[168] = { 3, 0, SEN(getcpu), "getcpu" },
[169] = { 2, 0, SEN(gettimeofday), "gettimeofday" },
[170] = { 2, 0, SEN(settimeofday), "settimeofday" },
[171] = { 1, 0, SEN(adjtimex), "adjtimex" },
[172] = { 0, 0, SEN(getpid), "getpid" },
[173] = { 0, 0, SEN(getppid), "getppid" },
[172] = { 0, NF, SEN(getpid), "getpid" },
[173] = { 0, NF, SEN(getppid), "getppid" },
[174] = { 0, NF, SEN(getuid), "getuid" },
[175] = { 0, NF, SEN(geteuid), "geteuid" },
[176] = { 0, NF, SEN(getgid), "getgid" },
[177] = { 0, NF, SEN(getegid), "getegid" },
[178] = { 0, 0, SEN(gettid), "gettid" },
[178] = { 0, NF, SEN(gettid), "gettid" },
[179] = { 1, 0, SEN(sysinfo), "sysinfo" },
[180] = { 4, 0, SEN(mq_open), "mq_open" },
[181] = { 1, 0, SEN(mq_unlink), "mq_unlink" },
@ -268,3 +268,6 @@
[282] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[283] = { 2, 0, SEN(membarrier), "membarrier", },
[284] = { 3, TM, SEN(mlock2), "mlock2" },
[285] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[286] = { 6, TD, SEN(preadv2), "preadv2" },
[287] = { 6, TD, SEN(pwritev2), "pwritev2" },

View File

@ -62,7 +62,7 @@
[1070] = { 2, 0, SEN(ustat), "ustat" },
[1071] = { 0, TP, SEN(vfork), "vfork" },
[1072] = { 4, TP, SEN(wait4), "wait4" },
[1073] = { 6, TN, SEN(recv), "recv" },
[1073] = { 4, TN, SEN(recv), "recv" },
[1074] = { 4, TN, SEN(send), "send" },
[1075] = { 2, 0, SEN(bdflush), "bdflush" },
[1076] = { 1, TF, SEN(umount), "umount" },

View File

@ -1,7 +1,7 @@
static void
get_error(struct tcb *tcp, const bool check_errno)
{
if (check_errno && alpha_a3) {
if (alpha_a3) {
tcp->u_rval = -1;
tcp->u_error = alpha_r0;
} else {

View File

@ -46,11 +46,11 @@
[ 17] = { 1, TM|SI, SEN(brk), "brk" },
[ 18] = { 5, 0, SEN(printargs), "osf_getfsstat" }, /*not implemented */
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getxpid" },
[ 20] = { 0, NF, SEN(getxpid), "getxpid" },
[ 21] = { 4, 0, SEN(printargs), "osf_mount" },
[ 22] = { 2, TF, SEN(umount2), "umount" },
[ 23] = { 1, 0, SEN(setuid), "setuid" },
[ 24] = { 0, NF, SEN(getuid), "getxuid" },
[ 24] = { 0, NF, SEN(getxuid), "getxuid" },
[ 25] = { 5, 0, SEN(printargs), "exec_with_loader" }, /*not implemented */
[ 26] = { 4, 0, SEN(ptrace), "ptrace" },
[ 27] = { 5, 0, SEN(printargs), "osf_nrecvmsg" }, /*not implemented */
@ -68,12 +68,12 @@
[ 39] = { 2, 0, SEN(setpgid), "setpgid" },
[ 40] = { 5, 0, SEN(printargs), "osf_old_lstat" }, /*not implemented */
[ 41] = { 1, TD, SEN(dup), "dup" },
[ 42] = { 1, TD, SEN(pipe), "pipe" },
[ 42] = { 0, TD, SEN(pipe), "pipe" },
[ 43] = { 4, 0, SEN(printargs), "osf_set_program_attributes" },
[ 44] = { 5, 0, SEN(printargs), "osf_profil" }, /*not implemented */
[ 45] = { 3, TD|TF, SEN(open), "open" },
[ 46] = { 5, 0, SEN(printargs), "osf_old_sigaction" }, /*not implemented */
[ 47] = { 1, NF, SEN(getgid), "getxgid" },
[ 47] = { 1, NF, SEN(getxgid), "getxgid" },
[ 48] = { 2, TS, SEN(sigprocmask), "osf_sigprocmask" },
[ 49] = { 5, 0, SEN(printargs), "osf_getlogin" }, /*not implemented */
[ 50] = { 5, 0, SEN(printargs), "osf_setlogin" }, /*not implemented */
@ -86,7 +86,7 @@
[ 57] = { 2, TF, SEN(symlink), "symlink" },
[ 58] = { 3, TF, SEN(readlink), "readlink" },
[ 59] = { 3, TF|TP|SE|SI, SEN(execve), "execve" },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 5, 0, SEN(printargs), "osf_old_fstat" }, /*not implemented */
[ 63] = { 0, 0, SEN(getpgrp), "getpgrp" },
@ -212,7 +212,7 @@
[206] = { 3, TI, SEN(semop), "semop" },
[207] = { 1, 0, SEN(printargs), "osf_utsname" },
[208] = { 3, TF, SEN(chown), "lchown" },
[209] = { 3, TI|TM, SEN(printargs), "osf_shmat" },
[209] = { 3, TI|TM|SI, SEN(shmat), "osf_shmat" },
[210] = { 3, TI, SEN(shmctl), "shmctl" },
[211] = { 1, TI|TM|SI, SEN(shmdt), "shmdt" },
[212] = { 3, TI, SEN(shmget), "shmget" },
@ -230,12 +230,12 @@
[224] = { 5, 0, SEN(printargs), "osf_stat" }, /*not implemented */
[225] = { 5, 0, SEN(printargs), "osf_lstat" }, /*not implemented */
[226] = { 5, 0, SEN(printargs), "osf_fstat" }, /*not implemented */
[227] = { 5, 0, SEN(printargs), "osf_statfs64" }, /*not implemented */
[228] = { 5, 0, SEN(printargs), "osf_fstatfs64" }, /*not implemented */
[227] = { 3, 0, SEN(osf_statfs), "osf_statfs64" }, /*not implemented */
[228] = { 3, 0, SEN(osf_fstatfs), "osf_fstatfs64" }, /*not implemented */
[229 ... 232] = { },
[233] = { 1, 0, SEN(getpgid), "getpgid" },
[234] = { 1, 0, SEN(getsid), "getsid" },
[235] = { 5, TS, SEN(sigaltstack), "sigaltstack" },
[235] = { 2, TS, SEN(sigaltstack), "sigaltstack" },
[236] = { 5, 0, SEN(printargs), "osf_waitid" }, /*not implemented */
[237] = { 5, 0, SEN(printargs), "osf_priocntlset" }, /*not implemented */
[238] = { 5, 0, SEN(printargs), "osf_sigsendset" }, /*not implemented */
@ -270,7 +270,7 @@
[304] = { 1, TF, SEN(swapoff), "swapoff" },
[305] = { 3, TD, SEN(getdents), "getdents" },
[306] = { 2, 0, SEN(create_module), "create_module" },
[307] = { 4, 0, SEN(init_module), "init_module" },
[307] = { 3, 0, SEN(init_module), "init_module" },
[308] = { 2, 0, SEN(delete_module), "delete_module" },
[309] = { 1, 0, SEN(get_kernel_syms), "get_kernel_syms" },
[310] = { 3, 0, SEN(syslog), "syslog" },
@ -287,7 +287,7 @@
[321] = { 1, TF, SEN(umount), "oldumount" },
[322] = { 2, TF, SEN(swapon), "swapon" },
[323] = { 1, 0, SEN(times), "times" },
[324] = { 1, 0, SEN(personality), "personality" },
[324] = { 1, NF, SEN(personality), "personality" },
[325] = { 1, NF, SEN(setfsuid), "setfsuid" },
[326] = { 1, NF, SEN(setfsgid), "setfsgid" },
[327] = { 2, 0, SEN(ustat), "ustat" },
@ -296,7 +296,7 @@
[330] = { 2, 0, SEN(sched_setparam), "sched_setparam" },
[331] = { 2, 0, SEN(sched_getparam), "sched_getparam" },
[332] = { 3, 0, SEN(sched_setscheduler), "sched_setscheduler" },
[333] = { 2, 0, SEN(sched_getscheduler), "sched_getscheduler" },
[333] = { 1, 0, SEN(sched_getscheduler), "sched_getscheduler" },
[334] = { 0, 0, SEN(sched_yield), "sched_yield" },
[335] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"},
[336] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"},
@ -323,7 +323,7 @@
[357] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" },
[358] = { 5, TD, SEN(select), "select" },
[359] = { 2, 0, SEN(gettimeofday), "gettimeofday" },
[360] = { 3, 0, SEN(settimeofday), "settimeofday" },
[360] = { 2, 0, SEN(settimeofday), "settimeofday" },
[361] = { 2, 0, SEN(getitimer), "getitimer" },
[362] = { 3, 0, SEN(setitimer), "setitimer" },
[363] = { 2, TF, SEN(utimes), "utimes" },
@ -341,7 +341,7 @@
[375] = { 3, TM, SEN(mincore), "mincore" },
[376] = { 3, 0, SEN(printargs), "pciconfig_iobase" },
[377] = { 3, TD, SEN(getdents64), "getdents64" },
[378] = { 0, 0, SEN(gettid), "gettid" },
[378] = { 0, NF, SEN(gettid), "gettid" },
[379] = { 3, TD, SEN(readahead), "readahead" },
[380] = { },
[381] = { 2, TS, SEN(kill), "tkill" },

View File

@ -1,6 +1,6 @@
#define ARCH_mmap mmap_pgoff
#define sys_ARCH_mmap sys_mmap_pgoff
#include "32/syscallent.h"
/* [244 ... 259] are arch specific */
[244] = { 3, 0, SEN(printargs), "arc_cacheflush"},
[245] = { 1, 0, SEN(printargs), "arc_settls" },
[246] = { 0, 0, SEN(printargs), "arc_gettls" },
[247 ... 259] = { },

View File

@ -46,7 +46,7 @@
[ 17] = { 0, TM, SEN(break), "break" },
[ 18] = { 2, TF, SEN(oldstat), "oldstat" },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 5, TF, SEN(mount), "mount" },
[ 22] = { 1, TF, SEN(umount), "umount" },
[ 23] = { 1, 0, SEN(setuid16), "setuid" },
@ -74,7 +74,7 @@
[ 45] = { 1, TM|SI, SEN(brk), "brk" },
[ 46] = { 1, 0, SEN(setgid16), "setgid" },
[ 47] = { 0, NF, SEN(getgid16), "getgid" },
[ 48] = { 3, TS, SEN(signal), "signal" },
[ 48] = { 2, TS, SEN(signal), "signal" },
[ 49] = { 0, NF, SEN(geteuid16), "geteuid" },
[ 50] = { 0, NF, SEN(getegid16), "getegid" },
[ 51] = { 1, TF, SEN(acct), "acct" },
@ -86,11 +86,11 @@
[ 57] = { 2, 0, SEN(setpgid), "setpgid" },
[ 58] = { 2, 0, SEN(ulimit), "ulimit" },
[ 59] = { 1, 0, SEN(oldolduname), "oldolduname" },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, 0, SEN(ustat), "ustat" },
[ 63] = { 2, TD, SEN(dup2), "dup2" },
[ 64] = { 0, 0, SEN(getppid), "getppid" },
[ 64] = { 0, NF, SEN(getppid), "getppid" },
[ 65] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 66] = { 0, 0, SEN(setsid), "setsid" },
[ 67] = { 3, TS, SEN(sigaction), "sigaction" },
@ -162,7 +162,7 @@
[133] = { 1, TD, SEN(fchdir), "fchdir" },
[134] = { 2, 0, SEN(bdflush), "bdflush" },
[135] = { 3, 0, SEN(sysfs), "sysfs" },
[136] = { 1, 0, SEN(personality), "personality" },
[136] = { 1, NF, SEN(personality), "personality" },
[137] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[138] = { 1, NF, SEN(setfsuid16), "setfsuid" },
[139] = { 1, NF, SEN(setfsgid16), "setfsgid" },
@ -249,7 +249,7 @@
[220] = { 3, TM, SEN(madvise), "madvise" },
[221] = { 3, TD, SEN(fcntl64), "fcntl64" },
[222 ... 223] = { },
[224] = { 0, 0, SEN(gettid), "gettid" },
[224] = { 0, NF, SEN(gettid), "gettid" },
[225] = { 5, TD, SEN(readahead), "readahead" },
[226] = { 5, TF, SEN(setxattr), "setxattr" },
[227] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -295,7 +295,7 @@
[268] = { 3, TS, SEN(tgkill), "tgkill" },
[269] = { 2, TF, SEN(utimes), "utimes" },
[270] = { 6, TD, SEN(fadvise64_64), "fadvise64_64" },
[271] = { 5, 0, SEN(printargs), "pciconfig_iobase" },
[271] = { 3, 0, SEN(printargs), "pciconfig_iobase" },
[272] = { 5, 0, SEN(printargs), "pciconfig_read" },
[273] = { 5, 0, SEN(printargs), "pciconfig_write" },
[274] = { 4, 0, SEN(mq_open), "mq_open" },
@ -326,17 +326,17 @@
[299] = { 3, TI, SEN(semget), "semget" },
[300] = { 4, TI, SEN(semctl), "semctl" },
[301] = { 4, TI, SEN(msgsnd), "msgsnd" },
[302] = { 4, TI, SEN(msgrcv), "msgrcv" },
[302] = { 5, TI, SEN(msgrcv), "msgrcv" },
[303] = { 2, TI, SEN(msgget), "msgget" },
[304] = { 4, TI, SEN(msgctl), "msgctl" },
[305] = { 4, TI|TM|SI, SEN(shmat), "shmat" },
[306] = { 4, TI|TM|SI, SEN(shmdt), "shmdt" },
[304] = { 3, TI, SEN(msgctl), "msgctl" },
[305] = { 3, TI|TM|SI, SEN(shmat), "shmat" },
[306] = { 1, TI|TM|SI, SEN(shmdt), "shmdt" },
[307] = { 3, TI, SEN(shmget), "shmget" },
[308] = { 4, TI, SEN(shmctl), "shmctl" },
[308] = { 3, TI, SEN(shmctl), "shmctl" },
[309] = { 5, 0, SEN(add_key), "add_key" },
[310] = { 4, 0, SEN(request_key), "request_key" },
[311] = { 5, 0, SEN(keyctl), "keyctl" },
[312] = { 5, TI, SEN(semtimedop), "semtimedop" },
[312] = { 4, TI, SEN(semtimedop), "semtimedop" },
[313] = { 5, 0, SEN(vserver), "vserver" },
[314] = { 3, 0, SEN(ioprio_set), "ioprio_set" },
[315] = { 2, 0, SEN(ioprio_get), "ioprio_get" },
@ -344,8 +344,8 @@
[317] = { 3, TD, SEN(inotify_add_watch), "inotify_add_watch" },
[318] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
[319] = { 6, TM, SEN(mbind), "mbind" },
[320] = { 3, TM, SEN(get_mempolicy), "get_mempolicy" },
[321] = { 5, TM, SEN(set_mempolicy), "set_mempolicy" },
[320] = { 5, TM, SEN(get_mempolicy), "get_mempolicy" },
[321] = { 3, TM, SEN(set_mempolicy), "set_mempolicy" },
[322] = { 4, TD|TF, SEN(openat), "openat" },
[323] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
[324] = { 4, TD|TF, SEN(mknodat), "mknodat" },
@ -374,7 +374,7 @@
[347] = { 4, 0, SEN(kexec_load), "kexec_load" },
[348] = { 4, TD|TF, SEN(utimensat), "utimensat" },
[349] = { 3, TD|TS, SEN(signalfd), "signalfd" },
[350] = { 4, TD, SEN(timerfd_create), "timerfd_create" },
[350] = { 2, TD, SEN(timerfd_create), "timerfd_create" },
[351] = { 1, TD, SEN(eventfd), "eventfd" },
[352] = { 6, TD, SEN(fallocate), "fallocate" },
[353] = { 4, TD, SEN(timerfd_settime), "timerfd_settime" },
@ -415,7 +415,9 @@
[388] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[389] = { 2, 0, SEN(membarrier), "membarrier", },
[390] = { 3, TM, SEN(mlock2), "mlock2" },
[391 ... 399] = { },
[391] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[392] = { 6, TD, SEN(preadv2), "preadv2" },
[393] = { 6, TD, SEN(pwritev2), "pwritev2" },
#ifdef __ARM_EABI__
# define ARM_FIRST_SHUFFLED_SYSCALL 400

View File

@ -32,7 +32,7 @@
[ 4] = { 3, TD, SEN(write), "write" },
[ 5] = { 3, TD|TF, SEN(open), "open" },
[ 6] = { 1, TD, SEN(close), "close" },
[ 7] = { 1, 0, SEN(umask), "umask" },
[ 7] = { 1, NF, SEN(umask), "umask" },
[ 8] = { 2, TD|TF, SEN(creat), "creat" },
[ 9] = { 2, TF, SEN(link), "link" },
[ 10] = { 1, TF, SEN(unlink), "unlink" },
@ -45,7 +45,7 @@
[ 17] = { 3, TF, SEN(chown), "lchown" },
[ 18] = { 3, TD, SEN(lseek), "lseek" },
[ 19] = { 5, TD, SEN(llseek), "_llseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 5, TF, SEN(mount), "mount" },
[ 22] = { 1, TF, SEN(umount2), "umount2" },
[ 23] = { 1, 0, SEN(setuid), "setuid" },
@ -89,7 +89,7 @@
[ 61] = { 2, 0, SEN(setregid), "setregid" },
[ 62] = { 2, 0, SEN(ustat), "ustat" },
[ 63] = { 2, TD, SEN(dup2), "dup2" },
[ 64] = { 0, 0, SEN(getppid), "getppid" },
[ 64] = { 0, NF, SEN(getppid), "getppid" },
[ 65] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 66] = { 0, 0, SEN(setsid), "setsid" },
[ 67] = { 4, TS, SEN(rt_sigaction), "rt_sigaction" },
@ -146,7 +146,7 @@
[118] = { 1, 0, SEN(getpgid), "getpgid" },
[119] = { 2, 0, SEN(bdflush), "bdflush" },
[120] = { 3, 0, SEN(sysfs), "sysfs" },
[121] = { 1, 0, SEN(personality), "personality" },
[121] = { 1, NF, SEN(personality), "personality" },
[122] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[123] = { 3, TD, SEN(getdents), "getdents" },
[124] = { 2, TD, SEN(flock), "flock" },
@ -201,7 +201,7 @@
[173] = { 3, TM, SEN(madvise), "madvise" },
[174] = { 3, TD, SEN(getdents64), "getdents64" },
[175] = { 3, TD, SEN(fcntl64), "fcntl64" },
[176] = { 0, 0, SEN(gettid), "gettid" },
[176] = { 0, NF, SEN(gettid), "gettid" },
[177] = { 4, TD, SEN(readahead), "readahead" },
[178] = { 5, TF, SEN(setxattr), "setxattr" },
[179] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -305,7 +305,7 @@
[277] = { 3, TI, SEN(shmctl), "shmctl" },
[278] = { 4, TD|TF, SEN(utimensat), "utimensat" },
[279] = { 3, TD|TS, SEN(signalfd), "signalfd" },
[280] = { 2, TD, SEN(timerfd), "timerfd" },
[280] = { 4, TD, SEN(timerfd), "timerfd" },
[281] = { 1, TD, SEN(eventfd), "eventfd" },
[282] = { },
[283] = { 2, TD, SEN(setns), "setns" },
@ -346,3 +346,8 @@
[318] = { 2, TD, SEN(memfd_create), "memfd_create", },
[319] = { 3, TD, SEN(bpf), "bpf", },
[320] = { 5, TD|TF|TP|SE|SI, SEN(execveat), "execveat", },
[321] = { 4, TN, SEN(accept4), "accept4" },
[322] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[323] = { 2, 0, SEN(membarrier), "membarrier", },
[324] = { 3, TM, SEN(mlock2), "mlock2" },
[325] = { 6, TD, SEN(copy_file_range), "copy_file_range" },

View File

@ -46,7 +46,7 @@
[ 17] = { 0, TM, SEN(break), "break" },
[ 18] = { 2, TF, SEN(oldstat), "oldstat" },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 5, TF, SEN(mount), "mount" },
[ 22] = { 1, TF, SEN(umount), "umount" },
[ 23] = { 1, 0, SEN(setuid16), "setuid" },
@ -74,7 +74,7 @@
[ 45] = { 1, TM|SI, SEN(brk), "brk" },
[ 46] = { 1, 0, SEN(setgid16), "setgid" },
[ 47] = { 0, NF, SEN(getgid16), "getgid" },
[ 48] = { 3, TS, SEN(signal), "signal" },
[ 48] = { 2, TS, SEN(signal), "signal" },
[ 49] = { 0, NF, SEN(geteuid16), "geteuid" },
[ 50] = { 0, NF, SEN(getegid16), "getegid" },
[ 51] = { 1, TF, SEN(acct), "acct" },
@ -86,11 +86,11 @@
[ 57] = { 2, 0, SEN(setpgid), "setpgid" },
[ 58] = { 2, 0, SEN(ulimit), "ulimit" },
[ 59] = { 1, 0, SEN(oldolduname), "oldolduname" },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, 0, SEN(ustat), "ustat" },
[ 63] = { 2, TD, SEN(dup2), "dup2" },
[ 64] = { 0, 0, SEN(getppid), "getppid" },
[ 64] = { 0, NF, SEN(getppid), "getppid" },
[ 65] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 66] = { 0, 0, SEN(setsid), "setsid" },
[ 67] = { 3, TS, SEN(sigaction), "sigaction" },
@ -155,14 +155,14 @@
[126] = { 3, TS, SEN(sigprocmask), "sigprocmask" },
[127] = { 2, 0, SEN(create_module), "create_module" },
[128] = { 3, 0, SEN(init_module), "init_module" },
[129] = { 1, 0, SEN(delete_module), "delete_module" },
[129] = { 2, 0, SEN(delete_module), "delete_module" },
[130] = { 1, 0, SEN(get_kernel_syms), "get_kernel_syms" },
[131] = { 4, TF, SEN(quotactl), "quotactl" },
[132] = { 1, 0, SEN(getpgid), "getpgid" },
[133] = { 1, TD, SEN(fchdir), "fchdir" },
[134] = { 2, 0, SEN(bdflush), "bdflush" },
[135] = { 3, 0, SEN(sysfs), "sysfs" },
[136] = { 1, 0, SEN(personality), "personality" },
[136] = { 1, NF, SEN(personality), "personality" },
[137] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[138] = { 1, NF, SEN(setfsuid16), "setfsuid" },
[139] = { 1, NF, SEN(setfsgid16), "setfsgid" },
@ -249,7 +249,7 @@
[220] = { 3, TD, SEN(getdents64), "getdents64" },
[221] = { 3, TD, SEN(fcntl64), "fcntl64" },
[222 ... 223] = { },
[224] = { 0, 0, SEN(gettid), "gettid" },
[224] = { 0, NF, SEN(gettid), "gettid" },
[225] = { 4, TD, SEN(readahead), "readahead" },
[226] = { 5, TF, SEN(setxattr), "setxattr" },
[227] = { 5, TF, SEN(setxattr), "lsetxattr" },

View File

@ -45,6 +45,9 @@
# endif
# endif
#endif
#ifdef ALPHA
# define sys_getdtablesize printargs
#endif
/* like another call */
#define sys_acct sys_chdir
@ -95,7 +98,7 @@
#define sys_vfork sys_fork
/* printargs does the right thing */
#define sys_getpgid printargs
#define sys_getpgrp printargs
#define sys_getpid printargs
#define sys_getppid printargs
#define sys_gettid printargs
@ -112,17 +115,20 @@
#define sys_setup printargs
#define sys_socketcall printargs
#define sys_sync printargs
#define sys_timer_delete printargs
#define sys_timer_getoverrun printargs
#define sys_syscall printargs
#define sys_vhangup printargs
/* printargs_lu/ld does the right thing */
#define sys_alarm printargs_lu
#define sys_getpgrp printargs_lu
#define sys_getsid printargs_lu
#define sys_nice printargs_ld
#define sys_setpgid printargs_lu
#define sys_setpgrp printargs_lu
/* printargs_u does the right thing */
#define sys_alarm printargs_u
/* printargs_d does the right thing */
#define sys_getpgid printargs_d
#define sys_getsid printargs_d
#define sys_nice printargs_d
#define sys_setpgid printargs_d
#define sys_setpgrp printargs_d
#define sys_timer_delete printargs_d
#define sys_timer_getoverrun printargs_d
/* unimplemented */
#define sys_afs_syscall printargs
@ -141,6 +147,7 @@
#define sys_query_module printargs
#define sys_security printargs
#define sys_stty printargs
#define sys_timerfd printargs
#define sys_tuxcall printargs
#define sys_ulimit printargs
#define sys_ustat printargs

View File

@ -128,7 +128,7 @@
[249] = "ELOOP",
[251] = "ENOSYS",
[252] = "ENOTSUP",
[253] = "ECANCELLED",
[253] = "ECANCELED",
[254] = "EOWNERDEAD",
[255] = "ENOTRECOVERABLE",
[256] = "ERFKILL",

View File

@ -22,7 +22,7 @@
[ 17] = { 3, TN, SEN(socket), "socket" },
[ 18] = { 2, TF, SEN(stat), "stat" },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 5, TF, SEN(mount), "mount" },
[ 22] = { 3, TN, SEN(bind), "bind" },
[ 23] = { 1, 0, SEN(setuid), "setuid" },
@ -62,11 +62,11 @@
[ 57] = { 2, 0, SEN(setpgid), "setpgid" },
[ 58] = { 4, TN, SEN(send), "send" },
[ 59] = { 1, 0, SEN(uname), "uname" },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, 0, SEN(ustat), "ustat" },
[ 63] = { 2, TD, SEN(dup2), "dup2" },
[ 64] = { 0, 0, SEN(getppid), "getppid" },
[ 64] = { 0, NF, SEN(getppid), "getppid" },
[ 65] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 66] = { 0, 0, SEN(setsid), "setsid" },
[ 67] = { 2, TF, SEN(pivotroot), "pivot_root" },
@ -130,7 +130,7 @@
[125] = { 3, TM|SI, SEN(mprotect), "mprotect" },
[126] = { 3, TS, SEN(sigprocmask), "sigprocmask" },
[127] = { 2, 0, SEN(create_module), "create_module" },
[128] = { 4, 0, SEN(init_module), "init_module" },
[128] = { 3, 0, SEN(init_module), "init_module" },
[129] = { 2, 0, SEN(delete_module), "delete_module" },
[130] = { 1, 0, SEN(get_kernel_syms), "get_kernel_syms" },
[131] = { 4, TF, SEN(quotactl), "quotactl" },
@ -138,7 +138,7 @@
[133] = { 1, TD, SEN(fchdir), "fchdir" },
[134] = { 2, 0, SEN(bdflush), "bdflush" },
[135] = { 3, 0, SEN(sysfs), "sysfs" },
[136] = { 1, 0, SEN(personality), "personality" },
[136] = { 1, NF, SEN(personality), "personality" },
[137] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[138] = { 1, NF, SEN(setfsuid), "setfsuid" },
[139] = { 1, NF, SEN(setfsgid), "setfsgid" },
@ -155,11 +155,11 @@
[150] = { 2, TM, SEN(mlock), "mlock" },
[151] = { 2, TM, SEN(munlock), "munlock" },
[152] = { 1, TM, SEN(mlockall), "mlockall" },
[153] = { 1, TM, SEN(munlockall), "munlockall" },
[153] = { 0, TM, SEN(munlockall), "munlockall" },
[154] = { 2, 0, SEN(sched_setparam), "sched_setparam" },
[155] = { 2, 0, SEN(sched_getparam), "sched_getparam" },
[156] = { 3, 0, SEN(sched_setscheduler), "sched_setscheduler" },
[157] = { 2, 0, SEN(sched_getscheduler), "sched_getscheduler" },
[157] = { 1, 0, SEN(sched_getscheduler), "sched_getscheduler" },
[158] = { 0, 0, SEN(sched_yield), "sched_yield" },
[159] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"},
[160] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"},
@ -208,7 +208,7 @@
[203] = { 5, 0, SEN(printargs), "attrctl" },
[204] = { 5, 0, SEN(printargs), "acl_get" },
[205] = { 5, 0, SEN(printargs), "acl_set" },
[206] = { 0, 0, SEN(gettid), "gettid" },
[206] = { 0, NF, SEN(gettid), "gettid" },
[207] = { 4, TD, SEN(readahead), "readahead" },
[208] = { 2, TS, SEN(kill), "tkill" },
[209] = { 4, TD|TN, SEN(sendfile64), "sendfile64" },
@ -221,7 +221,7 @@
[216] = { 1, 0, SEN(io_destroy), "io_destroy" },
[217] = { 5, 0, SEN(io_getevents), "io_getevents" },
[218] = { 3, 0, SEN(io_submit), "io_submit" },
[219] = { 4, 0, SEN(io_cancel), "io_cancel" },
[219] = { 3, 0, SEN(io_cancel), "io_cancel" },
[220] = { 5, 0, SEN(printargs), "alloc_hugepages" },
[221] = { 1, 0, SEN(printargs), "free_hugepages" },
[222] = { 1, TP|SE, SEN(exit), "exit_group" },
@ -239,19 +239,19 @@
[234] = { 3, 0, SEN(mq_getsetattr), "mq_getsetattr" },
[235] = { 5, TP, SEN(waitid), "waitid" },
[236] = { 6, TD, SEN(fadvise64_64), "fadvise64_64" },
[237] = { 5, 0, SEN(set_tid_address), "set_tid_address" },
[237] = { 1, 0, SEN(set_tid_address), "set_tid_address" },
[238] = { 5, TF, SEN(setxattr), "setxattr" },
[239] = { 5, TF, SEN(setxattr), "lsetxattr" },
[240] = { 5, TD, SEN(fsetxattr), "fsetxattr" },
[241] = { 4, TF, SEN(getxattr), "getxattr" },
[242] = { 4, TF, SEN(getxattr), "lgetxattr" },
[243] = { 4, TD, SEN(fgetxattr), "fgetxattr" },
[244] = { 5, TF, SEN(listxattr), "listxattr" },
[245] = { 5, TF, SEN(listxattr), "llistxattr" },
[246] = { 5, TD, SEN(flistxattr), "flistxattr" },
[247] = { 5, TF, SEN(removexattr), "removexattr" },
[248] = { 5, TF, SEN(removexattr), "lremovexattr" },
[249] = { 5, TD, SEN(fremovexattr), "fremovexattr" },
[244] = { 3, TF, SEN(listxattr), "listxattr" },
[245] = { 3, TF, SEN(listxattr), "llistxattr" },
[246] = { 3, TD, SEN(flistxattr), "flistxattr" },
[247] = { 2, TF, SEN(removexattr), "removexattr" },
[248] = { 2, TF, SEN(removexattr), "lremovexattr" },
[249] = { 2, TD, SEN(fremovexattr), "fremovexattr" },
[250] = { 3, 0, SEN(timer_create), "timer_create" },
[251] = { 4, 0, SEN(timer_settime), "timer_settime" },
[252] = { 2, 0, SEN(timer_gettime), "timer_gettime" },
@ -348,3 +348,6 @@
[343] = { 2, 0, SEN(membarrier), "membarrier", },
[344] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[345] = { 3, TM, SEN(mlock2), "mlock2" },
[346] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[347] = { 6, TD, SEN(preadv2), "preadv2" },
[348] = { 6, TD, SEN(pwritev2), "pwritev2" },

View File

@ -46,7 +46,7 @@
[ 17] = { 0, TM, SEN(break), "break" },
[ 18] = { 2, TF, SEN(oldstat), "oldstat" },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 5, TF, SEN(mount), "mount" },
[ 22] = { 1, TF, SEN(umount), "umount" },
[ 23] = { 1, 0, SEN(setuid16), "setuid" },
@ -74,7 +74,7 @@
[ 45] = { 1, TM|SI, SEN(brk), "brk" },
[ 46] = { 1, 0, SEN(setgid16), "setgid" },
[ 47] = { 0, NF, SEN(getgid16), "getgid" },
[ 48] = { 3, TS, SEN(signal), "signal" },
[ 48] = { 2, TS, SEN(signal), "signal" },
[ 49] = { 0, NF, SEN(geteuid16), "geteuid" },
[ 50] = { 0, NF, SEN(getegid16), "getegid" },
[ 51] = { 1, TF, SEN(acct), "acct" },
@ -86,11 +86,11 @@
[ 57] = { 2, 0, SEN(setpgid), "setpgid" },
[ 58] = { 2, 0, SEN(ulimit), "ulimit" },
[ 59] = { 1, 0, SEN(oldolduname), "oldolduname" },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, 0, SEN(ustat), "ustat" },
[ 63] = { 2, TD, SEN(dup2), "dup2" },
[ 64] = { 0, 0, SEN(getppid), "getppid" },
[ 64] = { 0, NF, SEN(getppid), "getppid" },
[ 65] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 66] = { 0, 0, SEN(setsid), "setsid" },
[ 67] = { 3, TS, SEN(sigaction), "sigaction" },
@ -116,7 +116,7 @@
[ 87] = { 2, TF, SEN(swapon), "swapon" },
[ 88] = { 4, 0, SEN(reboot), "reboot" },
[ 89] = { 3, TD, SEN(readdir), "readdir" },
[ 90] = { 6, TD|TM|SI, SEN(old_mmap), "mmap" },
[ 90] = { 1, TD|TM|SI, SEN(old_mmap), "mmap" },
[ 91] = { 2, TM|SI, SEN(munmap), "munmap" },
[ 92] = { 2, TF, SEN(truncate), "truncate" },
[ 93] = { 2, TD, SEN(ftruncate), "ftruncate" },
@ -162,7 +162,7 @@
[133] = { 1, TD, SEN(fchdir), "fchdir" },
[134] = { 2, 0, SEN(bdflush), "bdflush" },
[135] = { 3, 0, SEN(sysfs), "sysfs" },
[136] = { 1, 0, SEN(personality), "personality" },
[136] = { 1, NF, SEN(personality), "personality" },
[137] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[138] = { 1, NF, SEN(setfsuid16), "setfsuid" },
[139] = { 1, NF, SEN(setfsgid16), "setfsgid" },
@ -249,7 +249,7 @@
[220] = { 3, TD, SEN(getdents64), "getdents64" },
[221] = { 3, TD, SEN(fcntl64), "fcntl64" },
[222 ... 223] = { },
[224] = { 0, 0, SEN(gettid), "gettid" },
[224] = { 0, NF, SEN(gettid), "gettid" },
[225] = { 4, TD, SEN(readahead), "readahead" },
[226] = { 5, TF, SEN(setxattr), "setxattr" },
[227] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -402,7 +402,9 @@
[374] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[375] = { 2, 0, SEN(membarrier), "membarrier", },
[376] = { 3, TM, SEN(mlock2), "mlock2" },
[377 ... 399] = { },
[377] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[378] = { 6, TD, SEN(preadv2), "preadv2" },
[379] = { 6, TD, SEN(pwritev2), "pwritev2" },
#define SYS_socket_subcall 400
#include "subcall.h"

View File

@ -10,7 +10,7 @@ get_error(struct tcb *tcp, const bool check_errno)
tcp->u_rval = err;
}
} else {
if (check_errno && ia64_regs.gr[10]) {
if (ia64_regs.gr[10]) {
tcp->u_rval = -1;
tcp->u_error = ia64_regs.gr[8];
} else {

View File

@ -57,8 +57,8 @@
[1038] = { 2, TF, SEN(chmod), "chmod" },
[1039] = { 3, TF, SEN(chown), "chown" },
[1040] = { 3, TD, SEN(lseek), "lseek" },
[1041] = { 0, 0, SEN(getpid), "getpid" },
[1042] = { 0, 0, SEN(getppid), "getppid" },
[1041] = { 0, NF, SEN(getpid), "getpid" },
[1042] = { 0, NF, SEN(getppid), "getppid" },
[1043] = { 5, TF, SEN(mount), "mount" },
[1044] = { 2, TF, SEN(umount2), "umount" },
[1045] = { 1, 0, SEN(setuid), "setuid" },
@ -74,7 +74,7 @@
[1055] = { 2, TF, SEN(mkdir), "mkdir" },
[1056] = { 1, TF, SEN(rmdir), "rmdir" },
[1057] = { 1, TD, SEN(dup), "dup" },
[1058] = { 1, TD, SEN(pipe), "pipe" },
[1058] = { 0, TD, SEN(pipe), "pipe" },
[1059] = { 1, 0, SEN(times), "times" },
[1060] = { 1, TM|SI, SEN(brk), "brk" },
[1061] = { 1, 0, SEN(setgid), "setgid" },
@ -83,7 +83,7 @@
[1064] = { 1, TF, SEN(acct), "acct" },
[1065] = { 3, TD, SEN(ioctl), "ioctl" },
[1066] = { 3, TD, SEN(fcntl), "fcntl" },
[1067] = { 1, 0, SEN(umask), "umask" },
[1067] = { 1, NF, SEN(umask), "umask" },
[1068] = { 1, TF, SEN(chroot), "chroot" },
[1069] = { 2, 0, SEN(ustat), "ustat" },
[1070] = { 2, TD, SEN(dup2), "dup2" },
@ -121,7 +121,7 @@
[1102] = { 3, 0, SEN(setpriority), "setpriority" },
[1103] = { 2, TF, SEN(statfs), "statfs" },
[1104] = { 2, TD, SEN(fstatfs), "fstatfs" },
[1105] = { 3, 0, SEN(gettid), "gettid" },
[1105] = { 0, NF, SEN(gettid), "gettid" },
[1106] = { 3, TI, SEN(semget), "semget" },
[1107] = { 3, TI, SEN(semop), "semop" },
[1108] = { 4, TI, SEN(semctl), "semctl" },
@ -149,21 +149,21 @@
[1130] = { 1, 0, SEN(uname), "uname" },
[1131] = { 1, 0, SEN(adjtimex), "adjtimex" },
[1132] = { 2, 0, SEN(create_module), "create_module" },
[1133] = { 4, 0, SEN(init_module), "init_module" },
[1133] = { 3, 0, SEN(init_module), "init_module" },
[1134] = { 2, 0, SEN(delete_module), "delete_module" },
[1135] = { 1, 0, SEN(get_kernel_syms), "get_kernel_syms" },
[1136] = { 5, 0, SEN(query_module), "query_module" },
[1137] = { 4, TF, SEN(quotactl), "quotactl" },
[1138] = { 2, 0, SEN(bdflush), "bdflush" },
[1139] = { 3, 0, SEN(sysfs), "sysfs" },
[1140] = { 1, 0, SEN(personality), "personality" },
[1140] = { 1, NF, SEN(personality), "personality" },
[1141] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[1142] = { 1, NF, SEN(setfsuid), "setfsuid" },
[1143] = { 1, NF, SEN(setfsgid), "setfsgid" },
[1144] = { 3, TD, SEN(getdents), "getdents" },
[1145] = { 2, TD, SEN(flock), "flock" },
[1146] = { 5, TD, SEN(readv), "readv" },
[1147] = { 5, TD, SEN(writev), "writev" },
[1146] = { 3, TD, SEN(readv), "readv" },
[1147] = { 3, TD, SEN(writev), "writev" },
[1148] = { 4, TD, SEN(pread), "pread64" },
[1149] = { 4, TD, SEN(pwrite), "pwrite64" },
[1150] = { 1, 0, SEN(printargs), "_sysctl" },
@ -178,7 +178,7 @@
[1159] = { 0, TM, SEN(munlockall), "munlockall" },
[1160] = { 2, 0, SEN(sched_getparam), "sched_getparam" },
[1161] = { 2, 0, SEN(sched_setparam), "sched_setparam" },
[1162] = { 2, 0, SEN(sched_getscheduler), "sched_getscheduler" },
[1162] = { 1, 0, SEN(sched_getscheduler), "sched_getscheduler" },
[1163] = { 3, 0, SEN(sched_setscheduler), "sched_setscheduler" },
[1164] = { 0, 0, SEN(sched_yield), "sched_yield" },
[1165] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"},
@ -273,8 +273,8 @@
[1254] = { 2, 0, SEN(clock_gettime), "clock_gettime" },
[1255] = { 2, 0, SEN(clock_getres), "clock_getres" },
[1256] = { 4, 0, SEN(clock_nanosleep), "clock_nanosleep" },
[1257] = { MA, 0, SEN(printargs), "fstatfs64" },
[1258] = { MA, 0, SEN(printargs), "statfs64" },
[1257] = { 3, TD, SEN(fstatfs64), "fstatfs64" },
[1258] = { 3, TF, SEN(statfs64), "statfs64" },
[1259] = { 6, TM, SEN(mbind), "mbind" },
[1260] = { 5, TM, SEN(get_mempolicy), "get_mempolicy" },
[1261] = { 3, TM, SEN(set_mempolicy), "set_mempolicy" },
@ -363,3 +363,6 @@
[1344] = { 2, 0, SEN(membarrier), "membarrier", },
[1345] = { 5, 0, SEN(kcmp), "kcmp" },
[1346] = { 3, TM, SEN(mlock2), "mlock2" },
[1347] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[1348] = { 6, TD, SEN(preadv2), "preadv2" },
[1349] = { 6, TD, SEN(pwritev2), "pwritev2" },

View File

@ -46,7 +46,7 @@
[ 17] = { 0, TM, SEN(break), "break" },
[ 18] = { 2, TF, SEN(oldstat), "oldstat" },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 5, TF, SEN(mount), "mount" },
[ 22] = { 1, TF, SEN(umount), "umount" },
[ 23] = { 1, 0, SEN(setuid16), "setuid" },
@ -74,7 +74,7 @@
[ 45] = { 1, TM|SI, SEN(brk), "brk" },
[ 46] = { 1, 0, SEN(setgid16), "setgid" },
[ 47] = { 0, NF, SEN(getgid16), "getgid" },
[ 48] = { 3, TS, SEN(signal), "signal" },
[ 48] = { 2, TS, SEN(signal), "signal" },
[ 49] = { 0, NF, SEN(geteuid16), "geteuid" },
[ 50] = { 0, NF, SEN(getegid16), "getegid" },
[ 51] = { 1, TF, SEN(acct), "acct" },
@ -86,11 +86,11 @@
[ 57] = { 2, 0, SEN(setpgid), "setpgid" },
[ 58] = { 2, 0, SEN(ulimit), "ulimit" },
[ 59] = { 1, 0, SEN(oldolduname), "oldolduname" },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, 0, SEN(ustat), "ustat" },
[ 63] = { 2, TD, SEN(dup2), "dup2" },
[ 64] = { 0, 0, SEN(getppid), "getppid" },
[ 64] = { 0, NF, SEN(getppid), "getppid" },
[ 65] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 66] = { 0, 0, SEN(setsid), "setsid" },
[ 67] = { 3, TS, SEN(sigaction), "sigaction" },
@ -162,7 +162,7 @@
[133] = { 1, TD, SEN(fchdir), "fchdir" },
[134] = { 2, 0, SEN(bdflush), "bdflush" },
[135] = { 3, 0, SEN(sysfs), "sysfs" },
[136] = { 1, 0, SEN(personality), "personality" },
[136] = { 1, NF, SEN(personality), "personality" },
[137] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[138] = { 1, NF, SEN(setfsuid16), "setfsuid" },
[139] = { 1, NF, SEN(setfsgid16), "setfsgid" },
@ -246,7 +246,7 @@
[217] = { 2, TF, SEN(pivotroot), "pivot_root" },
[218 ... 219] = { },
[220] = { 3, TD, SEN(getdents64), "getdents64" },
[221] = { 0, 0, SEN(gettid), "gettid" },
[221] = { 0, NF, SEN(gettid), "gettid" },
[222] = { 2, TS, SEN(kill), "tkill" },
[223] = { 5, TF, SEN(setxattr), "setxattr" },
[224] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -305,7 +305,7 @@
[277] = { 5, TP, SEN(waitid), "waitid" },
[278] = { 5, 0, SEN(vserver), "vserver" },
[279] = { 5, 0, SEN(add_key), "add_key" },
[280] = { 5, 0, SEN(request_key), "request_key" },
[280] = { 4, 0, SEN(request_key), "request_key" },
[281] = { 5, 0, SEN(keyctl), "keyctl" },
[282] = { 3, 0, SEN(ioprio_set), "ioprio_set" },
[283] = { 2, 0, SEN(ioprio_get), "ioprio_get" },
@ -401,7 +401,9 @@
[373] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[374] = { 2, 0, SEN(membarrier), "membarrier", },
[375] = { 3, TM, SEN(mlock2), "mlock2" },
[376 ... 399] = { },
[376] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[377] = { 6, TD, SEN(preadv2), "preadv2" },
[378] = { 6, TD, SEN(pwritev2), "pwritev2" },
#define SYS_socket_subcall 400
#include "subcall.h"

View File

@ -1,7 +1,6 @@
#include "32/syscallent.h"
[244] = { },
/* [244 ... 259] are arch specific */
[245] = { 2, 0, SEN(printargs), "metag_setglobalbit" },
[246] = { 1, 0, SEN(printargs), "metag_set_fpu_flags" },
[247] = { 1, 0, SEN(printargs), "metag_set_tls" },
[248] = { 0, NF, SEN(printargs), "metag_get_tls" },
[249 ... 259] = { },

View File

@ -46,7 +46,7 @@
[ 17] = { 0, TM, SEN(break), "break" },
[ 18] = { 2, TF, SEN(oldstat), "oldstat" },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 5, TF, SEN(mount), "mount" },
[ 22] = { 1, TF, SEN(umount), "umount" },
[ 23] = { 1, 0, SEN(setuid16), "setuid" },
@ -74,7 +74,7 @@
[ 45] = { 1, TM|SI, SEN(brk), "brk" },
[ 46] = { 1, 0, SEN(setgid16), "setgid" },
[ 47] = { 0, NF, SEN(getgid16), "getgid" },
[ 48] = { 3, TS, SEN(signal), "signal" },
[ 48] = { 2, TS, SEN(signal), "signal" },
[ 49] = { 0, NF, SEN(geteuid16), "geteuid" },
[ 50] = { 0, NF, SEN(getegid16), "getegid" },
[ 51] = { 1, TF, SEN(acct), "acct" },
@ -86,11 +86,11 @@
[ 57] = { 2, 0, SEN(setpgid), "setpgid" },
[ 58] = { 2, 0, SEN(ulimit), "ulimit" },
[ 59] = { 1, 0, SEN(oldolduname), "oldolduname" },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, 0, SEN(ustat), "ustat" },
[ 63] = { 2, TD, SEN(dup2), "dup2" },
[ 64] = { 0, 0, SEN(getppid), "getppid" },
[ 64] = { 0, NF, SEN(getppid), "getppid" },
[ 65] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 66] = { 0, 0, SEN(setsid), "setsid" },
[ 67] = { 3, TS, SEN(sigaction), "sigaction" },
@ -146,7 +146,7 @@
[117] = { 6, TI, SEN(ipc), "ipc" },
[118] = { 1, TD, SEN(fsync), "fsync" },
[119] = { 0, TS, SEN(sigreturn), "sigreturn" },
[120] = { 5, TP, SEN(clone), "clone" },
[120] = { 6, TP, SEN(clone), "clone" },
[121] = { 2, 0, SEN(setdomainname), "setdomainname" },
[122] = { 1, 0, SEN(uname), "uname" },
[123] = { 3, 0, SEN(modify_ldt), "modify_ldt" },
@ -162,7 +162,7 @@
[133] = { 1, TD, SEN(fchdir), "fchdir" },
[134] = { 2, 0, SEN(bdflush), "bdflush" },
[135] = { 3, 0, SEN(sysfs), "sysfs" },
[136] = { 1, 0, SEN(personality), "personality" },
[136] = { 1, NF, SEN(personality), "personality" },
[137] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[138] = { 1, NF, SEN(setfsuid16), "setfsuid" },
[139] = { 1, NF, SEN(setfsgid16), "setfsgid" },
@ -249,7 +249,7 @@
[220] = { 3, TD, SEN(getdents64), "getdents64" },
[221] = { 3, TD, SEN(fcntl64), "fcntl64" },
[222 ... 223] = { },
[224] = { 0, 0, SEN(gettid), "gettid" },
[224] = { 0, NF, SEN(gettid), "gettid" },
[225] = { 4, TD, SEN(readahead), "readahead" },
[226] = { 5, TF, SEN(setxattr), "setxattr" },
[227] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -294,7 +294,7 @@
[266] = { 2, 0, SEN(clock_getres), "clock_getres" },
[267] = { 4, 0, SEN(clock_nanosleep), "clock_nanosleep" },
[268] = { 3, TF, SEN(statfs64), "statfs64" },
[269] = { 2, TD, SEN(fstatfs64), "fstatfs64" },
[269] = { 3, TD, SEN(fstatfs64), "fstatfs64" },
[270] = { 3, TS, SEN(tgkill), "tgkill" },
[271] = { 2, TF, SEN(utimes), "utimes" },
[272] = { 6, TD, SEN(fadvise64_64), "fadvise64_64" },
@ -341,7 +341,7 @@
[313] = { 6, TD, SEN(splice), "splice" },
[314] = { 6, TD, SEN(sync_file_range), "sync_file_range" },
[315] = { 4, TD, SEN(tee), "tee" },
[316] = { 5, TD, SEN(vmsplice), "vmsplice" },
[316] = { 4, TD, SEN(vmsplice), "vmsplice" },
[317] = { 6, TM, SEN(move_pages), "move_pages" },
[318] = { 3, 0, SEN(getcpu), "getcpu" },
[319] = { 6, TD, SEN(epoll_pwait), "epoll_pwait" },

View File

@ -1,7 +1,7 @@
static void
get_error(struct tcb *tcp, const bool check_errno)
{
if (check_errno && mips_REG_A3) {
if (mips_REG_A3) {
tcp->u_rval = -1;
tcp->u_error = mips_REG_V0;
} else {

View File

@ -149,8 +149,6 @@
[ 207] = { 0, 0, SEN(printargs), "svr4_areadv" },
[ 208] = { 0, 0, SEN(printargs), "svr4_awritev" },
[209 ... 999] = { }, /* end of SVR4 */
[1000] = { 0, 0, SEN(printargs), "sysv_syscall" }, /* start of SYSV */
[1001] = { 0, 0, SEN(printargs), "sysv_exit" },
[1002] = { 0, 0, SEN(printargs), "sysv_fork" },
@ -336,8 +334,6 @@
[1187] = { 0, 0, SEN(printargs), "sysv_pread" },
[1188] = { 0, 0, SEN(printargs), "sysv_pwrite" },
[1189 ... 1999] = { }, /* end of SYSV */
[2000] = { 0, 0, SEN(printargs), "bsd43_syscall" }, /* start of BSD 4.3 */
[2001] = { 0, 0, SEN(printargs), "bsd43_exit" },
[2002] = { 0, 0, SEN(printargs), "bsd43_fork" },
@ -531,8 +527,6 @@
[2190] = { 0, 0, SEN(printargs), "bsd43_areadv" },
[2191] = { 0, 0, SEN(printargs), "bsd43_awritev" },
[2192 ... 2999] = { }, /* end of BSD 4.3 */
[3000] = { 0, 0, SEN(printargs), "posix_syscall" }, /* start of POSIX */
[3001] = { 0, 0, SEN(printargs), "posix_exit" },
[3002] = { 0, 0, SEN(printargs), "posix_fork" },
@ -704,5 +698,3 @@
[3266] = { 0, 0, SEN(printargs), "posix_sigprocmask" },
[3267] = { 0, 0, SEN(printargs), "posix_sigsuspend" },
[3268] = { 0, 0, SEN(printargs), "posix_sigaction" },
[3269 ... 3999] = { }, /* end of POSIX */

View File

@ -21,7 +21,7 @@
[6018] = { 3, TD, SEN(readv), "readv" },
[6019] = { 3, TD, SEN(writev), "writev" },
[6020] = { 2, TF, SEN(access), "access" },
[6021] = { 1, TD, SEN(pipe), "pipe" },
[6021] = { 0, TD, SEN(pipe), "pipe" },
[6022] = { 5, TD, SEN(select), "_newselect" },
[6023] = { 0, 0, SEN(sched_yield), "sched_yield" },
[6024] = { 5, TM|SI, SEN(mremap), "mremap" },
@ -38,7 +38,7 @@
[6035] = { 2, 0, SEN(getitimer), "getitimer" },
[6036] = { 3, 0, SEN(setitimer), "setitimer" },
[6037] = { 1, 0, SEN(alarm), "alarm" },
[6038] = { 0, 0, SEN(getpid), "getpid" },
[6038] = { 0, NF, SEN(getpid), "getpid" },
[6039] = { 4, TD|TN, SEN(sendfile), "sendfile" },
[6040] = { 3, TN, SEN(socket), "socket" },
[6041] = { 3, TN, SEN(connect), "connect" },
@ -93,7 +93,7 @@
[6090] = { 3, TF, SEN(chown), "chown" },
[6091] = { 3, TD, SEN(fchown), "fchown" },
[6092] = { 3, TF, SEN(chown), "lchown" },
[6093] = { 1, 0, SEN(umask), "umask" },
[6093] = { 1, NF, SEN(umask), "umask" },
[6094] = { 2, 0, SEN(gettimeofday), "gettimeofday" },
[6095] = { 2, 0, SEN(getrlimit), "getrlimit" },
[6096] = { 2, 0, SEN(getrusage), "getrusage" },
@ -108,7 +108,7 @@
[6105] = { 0, NF, SEN(geteuid), "geteuid" },
[6106] = { 0, NF, SEN(getegid), "getegid" },
[6107] = { 2, 0, SEN(setpgid), "setpgid" },
[6108] = { 0, 0, SEN(getppid), "getppid" },
[6108] = { 0, NF, SEN(getppid), "getppid" },
[6109] = { 0, 0, SEN(getpgrp), "getpgrp" },
[6110] = { 0, 0, SEN(setsid), "setsid" },
[6111] = { 2, 0, SEN(setreuid), "setreuid" },
@ -119,7 +119,7 @@
[6116] = { 3, 0, SEN(getresuid), "getresuid" },
[6117] = { 3, 0, SEN(setresgid), "setresgid" },
[6118] = { 3, 0, SEN(getresgid), "getresgid" },
[6119] = { 0, 0, SEN(getpgid), "getpgid" },
[6119] = { 1, 0, SEN(getpgid), "getpgid" },
[6120] = { 1, NF, SEN(setfsuid), "setfsuid" },
[6121] = { 1, NF, SEN(setfsgid), "setfsgid" },
[6122] = { 1, 0, SEN(getsid), "getsid" },
@ -132,10 +132,10 @@
[6129] = { 2, TS, SEN(sigaltstack), "sigaltstack" },
[6130] = { 2, TF, SEN(utime), "utime" },
[6131] = { 3, TF, SEN(mknod), "mknod" },
[6132] = { 1, 0, SEN(personality), "personality" },
[6132] = { 1, NF, SEN(personality), "personality" },
[6133] = { 2, 0, SEN(ustat), "ustat" },
[6134] = { 3, TF, SEN(statfs), "statfs" },
[6135] = { 3, TD, SEN(fstatfs), "fstatfs" },
[6134] = { 2, TF, SEN(statfs), "statfs" },
[6135] = { 2, TD, SEN(fstatfs), "fstatfs" },
[6136] = { 3, 0, SEN(sysfs), "sysfs" },
[6137] = { 2, 0, SEN(getpriority), "getpriority" },
[6138] = { 3, 0, SEN(setpriority), "setpriority" },
@ -168,8 +168,8 @@
[6165] = { 2, 0, SEN(sethostname), "sethostname" },
[6166] = { 2, 0, SEN(setdomainname), "setdomainname" },
[6167] = { 2, 0, SEN(create_module), "create_module" },
[6168] = { 4, 0, SEN(init_module), "init_module" },
[6169] = { 1, 0, SEN(delete_module), "delete_module" },
[6168] = { 3, 0, SEN(init_module), "init_module" },
[6169] = { 2, 0, SEN(delete_module), "delete_module" },
[6170] = { 1, 0, SEN(get_kernel_syms), "get_kernel_syms" },
[6171] = { 5, 0, SEN(query_module), "query_module" },
[6172] = { 4, TF, SEN(quotactl), "quotactl" },
@ -178,7 +178,7 @@
[6175] = { 5, TN, SEN(putpmsg), "putpmsg" },
[6176] = { 0, 0, SEN(afs_syscall), "afs_syscall" },
[6177] = { 0, 0, SEN(printargs), "reserved177" },
[6178] = { 0, 0, SEN(gettid), "gettid" },
[6178] = { 0, NF, SEN(gettid), "gettid" },
[6179] = { 3, TD, SEN(readahead), "readahead" },
[6180] = { 5, TF, SEN(setxattr), "setxattr" },
[6181] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -324,7 +324,9 @@
[6321] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[6322] = { 2, 0, SEN(membarrier), "membarrier", },
[6323] = { 3, TM, SEN(mlock2), "mlock2" },
[6324 ... 6399] = { },
[6324] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[6325] = { 6, TD, SEN(preadv2), "preadv2" },
[6326] = { 6, TD, SEN(pwritev2), "pwritev2" },
# define SYS_socket_subcall 6400
# include "subcall.h"

View File

@ -21,7 +21,7 @@
[5018] = { 3, TD, SEN(readv), "readv" },
[5019] = { 3, TD, SEN(writev), "writev" },
[5020] = { 2, TF, SEN(access), "access" },
[5021] = { 1, TD, SEN(pipe), "pipe" },
[5021] = { 0, TD, SEN(pipe), "pipe" },
[5022] = { 5, TD, SEN(select), "_newselect" },
[5023] = { 0, 0, SEN(sched_yield), "sched_yield" },
[5024] = { 5, TM|SI, SEN(mremap), "mremap" },
@ -38,7 +38,7 @@
[5035] = { 2, 0, SEN(getitimer), "getitimer" },
[5036] = { 3, 0, SEN(setitimer), "setitimer" },
[5037] = { 1, 0, SEN(alarm), "alarm" },
[5038] = { 0, 0, SEN(getpid), "getpid" },
[5038] = { 0, NF, SEN(getpid), "getpid" },
[5039] = { 4, TD|TN, SEN(sendfile), "sendfile" },
[5040] = { 3, TN, SEN(socket), "socket" },
[5041] = { 3, TN, SEN(connect), "connect" },
@ -93,7 +93,7 @@
[5090] = { 3, TF, SEN(chown), "chown" },
[5091] = { 3, TD, SEN(fchown), "fchown" },
[5092] = { 3, TF, SEN(chown), "lchown" },
[5093] = { 1, 0, SEN(umask), "umask" },
[5093] = { 1, NF, SEN(umask), "umask" },
[5094] = { 2, 0, SEN(gettimeofday), "gettimeofday" },
[5095] = { 2, 0, SEN(getrlimit), "getrlimit" },
[5096] = { 2, 0, SEN(getrusage), "getrusage" },
@ -108,7 +108,7 @@
[5105] = { 0, NF, SEN(geteuid), "geteuid" },
[5106] = { 0, NF, SEN(getegid), "getegid" },
[5107] = { 2, 0, SEN(setpgid), "setpgid" },
[5108] = { 0, 0, SEN(getppid), "getppid" },
[5108] = { 0, NF, SEN(getppid), "getppid" },
[5109] = { 0, 0, SEN(getpgrp), "getpgrp" },
[5110] = { 0, 0, SEN(setsid), "setsid" },
[5111] = { 2, 0, SEN(setreuid), "setreuid" },
@ -119,7 +119,7 @@
[5116] = { 3, 0, SEN(getresuid), "getresuid" },
[5117] = { 3, 0, SEN(setresgid), "setresgid" },
[5118] = { 3, 0, SEN(getresgid), "getresgid" },
[5119] = { 0, 0, SEN(getpgid), "getpgid" },
[5119] = { 1, 0, SEN(getpgid), "getpgid" },
[5120] = { 1, NF, SEN(setfsuid), "setfsuid" },
[5121] = { 1, NF, SEN(setfsgid), "setfsgid" },
[5122] = { 1, 0, SEN(getsid), "getsid" },
@ -132,10 +132,10 @@
[5129] = { 2, TS, SEN(sigaltstack), "sigaltstack" },
[5130] = { 2, TF, SEN(utime), "utime" },
[5131] = { 3, TF, SEN(mknod), "mknod" },
[5132] = { 1, 0, SEN(personality), "personality" },
[5132] = { 1, NF, SEN(personality), "personality" },
[5133] = { 2, 0, SEN(ustat), "ustat" },
[5134] = { 3, TF, SEN(statfs), "statfs" },
[5135] = { 3, TD, SEN(fstatfs), "fstatfs" },
[5134] = { 2, TF, SEN(statfs), "statfs" },
[5135] = { 2, TD, SEN(fstatfs), "fstatfs" },
[5136] = { 3, 0, SEN(sysfs), "sysfs" },
[5137] = { 2, 0, SEN(getpriority), "getpriority" },
[5138] = { 3, 0, SEN(setpriority), "setpriority" },
@ -168,8 +168,8 @@
[5165] = { 2, 0, SEN(sethostname), "sethostname" },
[5166] = { 2, 0, SEN(setdomainname), "setdomainname" },
[5167] = { 2, 0, SEN(create_module), "create_module" },
[5168] = { 4, 0, SEN(init_module), "init_module" },
[5169] = { 1, 0, SEN(delete_module), "delete_module" },
[5168] = { 3, 0, SEN(init_module), "init_module" },
[5169] = { 2, 0, SEN(delete_module), "delete_module" },
[5170] = { 1, 0, SEN(get_kernel_syms), "get_kernel_syms" },
[5171] = { 5, 0, SEN(query_module), "query_module" },
[5172] = { 4, TF, SEN(quotactl), "quotactl" },
@ -178,7 +178,7 @@
[5175] = { 5, TN, SEN(putpmsg), "putpmsg" },
[5176] = { 0, 0, SEN(afs_syscall), "afs_syscall" },
[5177] = { 0, 0, SEN(printargs), "reserved177" },
[5178] = { 0, 0, SEN(gettid), "gettid" },
[5178] = { 0, NF, SEN(gettid), "gettid" },
[5179] = { 3, TD, SEN(readahead), "readahead" },
[5180] = { 5, TF, SEN(setxattr), "setxattr" },
[5181] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -215,7 +215,7 @@
[5212] = { 1, 0, SEN(set_tid_address), "set_tid_address" },
[5213] = { 0, 0, SEN(restart_syscall), "restart_syscall" },
[5214] = { 4, TI, SEN(semtimedop), "semtimedop" },
[5215] = { 4, TD, SEN(fadvise64_64), "fadvise64" },
[5215] = { 4, TD, SEN(fadvise64), "fadvise64" },
[5216] = { 3, 0, SEN(timer_create), "timer_create" },
[5217] = { 4, 0, SEN(timer_settime), "timer_settime" },
[5218] = { 2, 0, SEN(timer_gettime), "timer_gettime" },
@ -320,16 +320,15 @@
[5317] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[5318] = { 2, 0, SEN(membarrier), "membarrier", },
[5319] = { 3, TM, SEN(mlock2), "mlock2" },
[5320 ... 5399] = { },
[5320] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[5321] = { 6, TD, SEN(preadv2), "preadv2" },
[5322] = { 6, TD, SEN(pwritev2), "pwritev2" },
# define SYS_socket_subcall 5400
# include "subcall.h"
/* end of Linux N64 */ [SYS_socket_subcall + SYS_socket_nsubcalls + SYS_ipc_nsubcalls ... 5999] = { },
#else
# include "syscallent-n64-stub.h"
/* end of Linux N64 */ [5400 ... 5999] = { },
#endif

View File

@ -20,7 +20,7 @@
[4017] = { 0, TM, SEN(break), "break" },
[4018] = { 2, TF, SEN(oldstat), "oldstat" },
[4019] = { 3, TD, SEN(lseek), "lseek" },
[4020] = { 0, 0, SEN(getpid), "getpid" },
[4020] = { 0, NF, SEN(getpid), "getpid" },
[4021] = { 5, TF, SEN(mount), "mount" },
[4022] = { 1, TF, SEN(umount), "umount" },
[4023] = { 1, 0, SEN(setuid), "setuid" },
@ -42,13 +42,13 @@
[4039] = { 2, TF, SEN(mkdir), "mkdir" },
[4040] = { 1, TF, SEN(rmdir), "rmdir" },
[4041] = { 1, TD, SEN(dup), "dup" },
[4042] = { 1, TD, SEN(pipe), "pipe" },
[4042] = { 0, TD, SEN(pipe), "pipe" },
[4043] = { 1, 0, SEN(times), "times" },
[4044] = { 0, 0, SEN(prof), "prof" },
[4045] = { 1, TM|SI, SEN(brk), "brk" },
[4046] = { 1, 0, SEN(setgid), "setgid" },
[4047] = { 0, NF, SEN(getgid), "getgid" },
[4048] = { 1, TS, SEN(signal), "signal" },
[4048] = { 2, TS, SEN(signal), "signal" },
[4049] = { 0, NF, SEN(geteuid), "geteuid" },
[4050] = { 0, NF, SEN(getegid), "getegid" },
[4051] = { 1, TF, SEN(acct), "acct" },
@ -60,11 +60,11 @@
[4057] = { 2, 0, SEN(setpgid), "setpgid" },
[4058] = { 0, 0, SEN(ulimit), "ulimit" },
[4059] = { 1, 0, SEN(oldolduname), "oldolduname" },
[4060] = { 1, 0, SEN(umask), "umask" },
[4060] = { 1, NF, SEN(umask), "umask" },
[4061] = { 1, TF, SEN(chroot), "chroot" },
[4062] = { 2, 0, SEN(ustat), "ustat" },
[4063] = { 2, TD, SEN(dup2), "dup2" },
[4064] = { 0, 0, SEN(getppid), "getppid" },
[4064] = { 0, NF, SEN(getppid), "getppid" },
[4065] = { 0, 0, SEN(getpgrp), "getpgrp" },
[4066] = { 0, 0, SEN(setsid), "setsid" },
[4067] = { 3, TS, SEN(sigaction), "sigaction" },
@ -99,9 +99,9 @@
[4096] = { 2, 0, SEN(getpriority), "getpriority" },
[4097] = { 3, 0, SEN(setpriority), "setpriority" },
[4098] = { 0, 0, SEN(profil), "profil" },
[4099] = { 3, TF, SEN(statfs), "statfs" },
[4100] = { 3, TD, SEN(fstatfs), "fstatfs" },
[4101] = { 0, 0, SEN(ioperm), "ioperm" },
[4099] = { 2, TF, SEN(statfs), "statfs" },
[4100] = { 2, TD, SEN(fstatfs), "fstatfs" },
[4101] = { 3, 0, SEN(ioperm), "ioperm" },
[4102] = { 2, TD, SEN(socketcall), "socketcall" },
[4103] = { 3, 0, SEN(syslog), "syslog" },
[4104] = { 3, 0, SEN(setitimer), "setitimer" },
@ -110,7 +110,7 @@
[4107] = { 2, TF, SEN(lstat), "lstat" },
[4108] = { 2, TD, SEN(fstat), "fstat" },
[4109] = { 1, 0, SEN(olduname), "olduname" },
[4110] = { 0, 0, SEN(iopl), "iopl" },
[4110] = { 1, 0, SEN(iopl), "iopl" },
[4111] = { 0, 0, SEN(vhangup), "vhangup" },
[4112] = { 0, 0, SEN(idle), "idle" },
[4113] = { 5, 0, SEN(vm86old), "vm86" },
@ -136,7 +136,7 @@
[4133] = { 1, TD, SEN(fchdir), "fchdir" },
[4134] = { 2, 0, SEN(bdflush), "bdflush" },
[4135] = { 3, 0, SEN(sysfs), "sysfs" },
[4136] = { 1, 0, SEN(personality), "personality" },
[4136] = { 1, NF, SEN(personality), "personality" },
[4137] = { 0, 0, SEN(afs_syscall), "afs_syscall" },
[4138] = { 1, NF, SEN(setfsuid), "setfsuid" },
[4139] = { 1, NF, SEN(setfsgid), "setfsgid" },
@ -222,7 +222,7 @@
[4219] = { 3, TD, SEN(getdents64), "getdents64" },
[4220] = { 3, TD, SEN(fcntl64), "fcntl64" },
[4221] = { },
[4222] = { 0, 0, SEN(gettid), "gettid" },
[4222] = { 0, NF, SEN(gettid), "gettid" },
[4223] = { 5, TD, SEN(readahead), "readahead" },
[4224] = { 5, TF, SEN(setxattr), "setxattr" },
[4225] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -256,7 +256,7 @@
[4253] = { 0, 0, SEN(restart_syscall), "restart_syscall" },
[4254] = { 7, TD, SEN(fadvise64_64), "fadvise64" },
[4255] = { 3, TF, SEN(statfs64), "statfs64" },
[4256] = { 2, TD, SEN(fstatfs64), "fstatfs64" },
[4256] = { 3, TD, SEN(fstatfs64), "fstatfs64" },
[4257] = { 3, 0, SEN(timer_create), "timer_create" },
[4258] = { 4, 0, SEN(timer_settime), "timer_settime" },
[4259] = { 2, 0, SEN(timer_gettime), "timer_gettime" },
@ -360,16 +360,15 @@
[4357] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[4358] = { 2, 0, SEN(membarrier), "membarrier", },
[4359] = { 3, TM, SEN(mlock2), "mlock2" },
[4360 ... 4399] = { },
[4360] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[4361] = { 6, TD, SEN(preadv2), "preadv2" },
[4362] = { 6, TD, SEN(pwritev2), "pwritev2" },
# define SYS_socket_subcall 4400
# include "subcall.h"
/* end of Linux o32 */ [SYS_socket_subcall + SYS_socket_nsubcalls + SYS_ipc_nsubcalls ... 4999] = { },
#else
# include "syscallent-o32-stub.h"
/* end of Linux o32 */ [4400 ... 4999] = { },
#endif

24
linux/netlink_diag.h Normal file
View File

@ -0,0 +1,24 @@
struct netlink_diag_req {
uint8_t sdiag_family;
uint8_t sdiag_protocol;
uint16_t pad;
uint32_t ndiag_ino;
uint32_t ndiag_show;
uint32_t ndiag_cookie[2];
};
struct netlink_diag_msg {
uint8_t ndiag_family;
uint8_t ndiag_type;
uint8_t ndiag_protocol;
uint8_t ndiag_state;
uint32_t ndiag_portid;
uint32_t ndiag_dst_portid;
uint32_t ndiag_dst_group;
uint32_t ndiag_ino;
uint32_t ndiag_cookie[2];
};
#define NDIAG_SHOW_MEMINFO 0x00000001
#define NDIAG_PROTO_ALL ((uint8_t) ~0)

View File

@ -8,7 +8,7 @@ get_error(struct tcb *tcp, const bool check_errno)
* the system call success, r7=1 indicates an error. The positive
* errno value written in r2.
*/
if (check_errno && nios2_regs.regs[7]) {
if (nios2_regs.regs[7]) {
tcp->u_rval = -1;
tcp->u_error = nios2_regs.regs[2];
} else {

View File

@ -1,4 +1,4 @@
#define ARCH_mmap mmap_pgoff
#define sys_ARCH_mmap sys_mmap_pgoff
#include "32/syscallent.h"
/* [244 ... 259] are arch specific */
[244] = {4, 0, SEN(cacheflush), "cacheflush"},
[245 ... 259] = { },

View File

@ -1,4 +1,4 @@
#define ARCH_mmap mmap_pgoff
#define sys_ARCH_mmap sys_mmap_pgoff
#include "32/syscallent.h"
/* [244 ... 259] are arch specific */
[244] = { 3, NF, SEN(or1k_atomic), "or1k_atomic" },
[245 ... 259] = { },

View File

@ -1,7 +1,7 @@
static void
get_error(struct tcb *tcp, const bool check_errno)
{
if (check_errno && (ppc_regs.ccr & 0x10000000)) {
if (ppc_regs.ccr & 0x10000000) {
tcp->u_rval = -1;
tcp->u_error = ppc_regs.gpr[3];
} else {

View File

@ -46,7 +46,7 @@
[ 17] = { 0, TM, SEN(break), "break" },
[ 18] = { 2, TF, SEN(oldstat), "oldstat" },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 5, TF, SEN(mount), "mount" },
[ 22] = { 1, TF, SEN(umount), "umount" },
[ 23] = { 1, 0, SEN(setuid), "setuid" },
@ -74,7 +74,7 @@
[ 45] = { 1, TM|SI, SEN(brk), "brk" },
[ 46] = { 1, 0, SEN(setgid), "setgid" },
[ 47] = { 0, NF, SEN(getgid), "getgid" },
[ 48] = { 3, TS, SEN(signal), "signal" },
[ 48] = { 2, TS, SEN(signal), "signal" },
[ 49] = { 0, NF, SEN(geteuid), "geteuid" },
[ 50] = { 0, NF, SEN(getegid), "getegid" },
[ 51] = { 1, TF, SEN(acct), "acct" },
@ -86,11 +86,11 @@
[ 57] = { 2, 0, SEN(setpgid), "setpgid" },
[ 58] = { 2, 0, SEN(ulimit), "ulimit" },
[ 59] = { 1, 0, SEN(oldolduname), "oldolduname" },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, 0, SEN(ustat), "ustat" },
[ 63] = { 2, TD, SEN(dup2), "dup2" },
[ 64] = { 0, 0, SEN(getppid), "getppid" },
[ 64] = { 0, NF, SEN(getppid), "getppid" },
[ 65] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 66] = { 0, 0, SEN(setsid), "setsid" },
[ 67] = { 3, TS, SEN(sigaction), "sigaction" },
@ -136,7 +136,7 @@
[107] = { 2, TF, SEN(lstat), "lstat" },
[108] = { 2, TD, SEN(fstat), "fstat" },
[109] = { 1, 0, SEN(olduname), "olduname" },
[110] = { 5, 0, SEN(printargs), "iopl" },
[110] = { 1, 0, SEN(iopl), "iopl" },
[111] = { 0, 0, SEN(vhangup), "vhangup" },
[112] = { 0, 0, SEN(idle), "idle" },
[113] = { 5, 0, SEN(vm86), "vm86" },
@ -162,7 +162,7 @@
[133] = { 1, TD, SEN(fchdir), "fchdir" },
[134] = { 2, 0, SEN(bdflush), "bdflush" },
[135] = { 3, 0, SEN(sysfs), "sysfs" },
[136] = { 1, 0, SEN(personality), "personality" },
[136] = { 1, NF, SEN(personality), "personality" },
[137] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[138] = { 1, NF, SEN(setfsuid), "setfsuid" },
[139] = { 1, NF, SEN(setfsgid), "setfsgid" },
@ -233,7 +233,7 @@
[204] = { 3, TD, SEN(fcntl64), "fcntl64" },
[205] = { 3, TM, SEN(madvise), "madvise" },
[206] = { 3, TM, SEN(mincore), "mincore" },
[207] = { 0, 0, SEN(gettid), "gettid" },
[207] = { 0, NF, SEN(gettid), "gettid" },
[208] = { 2, TS, SEN(kill), "tkill" },
[209] = { 5, TF, SEN(setxattr), "setxattr" },
[210] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -304,8 +304,8 @@
[275] = { 0, TD, SEN(inotify_init), "inotify_init" },
[276] = { 3, TD, SEN(inotify_add_watch), "inotify_add_watch" },
[277] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
[278] = { 5, 0, SEN(printargs), "spu_run" },
[279] = { 5, 0, SEN(printargs), "spu_create" },
[278] = { 3, 0, SEN(printargs), "spu_run" },
[279] = { 4, 0, SEN(printargs), "spu_create" },
[280] = { 6, TD, SEN(pselect6), "pselect6" },
[281] = { 5, TD, SEN(ppoll), "ppoll" },
[282] = { 1, TP, SEN(unshare), "unshare" },
@ -405,7 +405,9 @@
[376] = { 3, TI, SEN(shmget), "shmget" },
[377] = { 3, TI, SEN(shmctl), "shmctl" },
[378] = { 3, TM, SEN(mlock2), "mlock2" },
[379 ... 399] = { },
[379] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[380] = { 6, TD, SEN(preadv2), "preadv2" },
[381] = { 6, TD, SEN(pwritev2), "pwritev2" },
#define SYS_socket_subcall 400
#include "subcall.h"

View File

@ -46,7 +46,7 @@
[ 17] = { 0, TM, SEN(break), "break" },
[ 18] = { 2, TF, SEN(oldstat), "oldstat" },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 5, TF, SEN(mount), "mount" },
[ 22] = { 1, TF, SEN(umount), "umount" },
[ 23] = { 1, 0, SEN(setuid), "setuid" },
@ -74,7 +74,7 @@
[ 45] = { 1, TM|SI, SEN(brk), "brk" },
[ 46] = { 1, 0, SEN(setgid), "setgid" },
[ 47] = { 0, NF, SEN(getgid), "getgid" },
[ 48] = { 3, TS, SEN(signal), "signal" },
[ 48] = { 2, TS, SEN(signal), "signal" },
[ 49] = { 0, NF, SEN(geteuid), "geteuid" },
[ 50] = { 0, NF, SEN(getegid), "getegid" },
[ 51] = { 1, TF, SEN(acct), "acct" },
@ -86,11 +86,11 @@
[ 57] = { 2, 0, SEN(setpgid), "setpgid" },
[ 58] = { 2, 0, SEN(ulimit), "ulimit" },
[ 59] = { 1, 0, SEN(oldolduname), "oldolduname" },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, 0, SEN(ustat), "ustat" },
[ 63] = { 2, TD, SEN(dup2), "dup2" },
[ 64] = { 0, 0, SEN(getppid), "getppid" },
[ 64] = { 0, NF, SEN(getppid), "getppid" },
[ 65] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 66] = { 0, 0, SEN(setsid), "setsid" },
[ 67] = { 3, TS, SEN(sigaction), "sigaction" },
@ -136,7 +136,7 @@
[107] = { 2, TF, SEN(lstat), "lstat" },
[108] = { 2, TD, SEN(fstat), "fstat" },
[109] = { 1, 0, SEN(olduname), "olduname" },
[110] = { 5, 0, SEN(printargs), "iopl" },
[110] = { 1, 0, SEN(iopl), "iopl" },
[111] = { 0, 0, SEN(vhangup), "vhangup" },
[112] = { 0, 0, SEN(idle), "idle" },
[113] = { 5, 0, SEN(vm86), "vm86" },
@ -162,7 +162,7 @@
[133] = { 1, TD, SEN(fchdir), "fchdir" },
[134] = { 2, 0, SEN(bdflush), "bdflush" },
[135] = { 3, 0, SEN(sysfs), "sysfs" },
[136] = { 1, 0, SEN(personality), "personality" },
[136] = { 1, NF, SEN(personality), "personality" },
[137] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[138] = { 1, NF, SEN(setfsuid), "setfsuid" },
[139] = { 1, NF, SEN(setfsgid), "setfsgid" },
@ -205,8 +205,8 @@
[176] = { 4, TS, SEN(rt_sigtimedwait), "rt_sigtimedwait" },
[177] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" },
[178] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" },
[179] = { 6, TD, SEN(pread), "pread64" },
[180] = { 6, TD, SEN(pwrite), "pwrite64" },
[179] = { 4, TD, SEN(pread), "pread64" },
[180] = { 4, TD, SEN(pwrite), "pwrite64" },
[181] = { 3, TF, SEN(chown), "chown" },
[182] = { 2, TF, SEN(getcwd), "getcwd" },
[183] = { 2, 0, SEN(capget), "capget" },
@ -217,7 +217,7 @@
[188] = { 5, TN, SEN(putpmsg), "putpmsg" },
[189] = { 0, TP, SEN(vfork), "vfork" },
[190] = { 2, 0, SEN(getrlimit), "ugetrlimit" },
[191] = { 5, TD, SEN(readahead), "readahead" },
[191] = { 3, TD, SEN(readahead), "readahead" },
[192 ... 197] = { },
[198] = { 5, 0, SEN(printargs), "pciconfig_read" },
[199] = { 5, 0, SEN(printargs), "pciconfig_write" },
@ -228,7 +228,7 @@
[204] = { },
[205] = { 3, TM, SEN(madvise), "madvise" },
[206] = { 3, TM, SEN(mincore), "mincore" },
[207] = { 0, 0, SEN(gettid), "gettid" },
[207] = { 0, NF, SEN(gettid), "gettid" },
[208] = { 2, TS, SEN(kill), "tkill" },
[209] = { 5, TF, SEN(setxattr), "setxattr" },
[210] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -254,9 +254,9 @@
[230] = { 3, 0, SEN(io_submit), "io_submit" },
[231] = { 3, 0, SEN(io_cancel), "io_cancel" },
[232] = { 1, 0, SEN(set_tid_address), "set_tid_address" },
[233] = { 6, TD, SEN(fadvise64), "fadvise64" },
[233] = { 4, TD, SEN(fadvise64), "fadvise64" },
[234] = { 1, TP|SE, SEN(exit), "exit_group" },
[235] = { 4, 0, SEN(lookup_dcookie), "lookup_dcookie" },
[235] = { 3, 0, SEN(lookup_dcookie), "lookup_dcookie" },
[236] = { 1, TD, SEN(epoll_create), "epoll_create" },
[237] = { 4, TD, SEN(epoll_ctl), "epoll_ctl" },
[238] = { 4, TD, SEN(epoll_wait), "epoll_wait" },
@ -299,8 +299,8 @@
[275] = { 0, TD, SEN(inotify_init), "inotify_init" },
[276] = { 3, TD, SEN(inotify_add_watch), "inotify_add_watch" },
[277] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
[278] = { 5, 0, SEN(printargs), "spu_run" },
[279] = { 5, 0, SEN(printargs), "spu_create" },
[278] = { 3, 0, SEN(printargs), "spu_run" },
[279] = { 4, 0, SEN(printargs), "spu_create" },
[280] = { 6, TD, SEN(pselect6), "pselect6" },
[281] = { 5, TD, SEN(ppoll), "ppoll" },
[282] = { 1, TP, SEN(unshare), "unshare" },
@ -329,8 +329,8 @@
[305] = { 3, TD|TS, SEN(signalfd), "signalfd" },
[306] = { 2, TD, SEN(timerfd_create), "timerfd_create" },
[307] = { 1, TD, SEN(eventfd), "eventfd" },
[308] = { 6, TD, SEN(sync_file_range2), "sync_file_range2" },
[309] = { 6, TD, SEN(fallocate), "fallocate" },
[308] = { 4, TD, SEN(sync_file_range2), "sync_file_range2" },
[309] = { 4, TD, SEN(fallocate), "fallocate" },
[310] = { 3, 0, SEN(subpage_prot), "subpage_prot" },
[311] = { 4, TD, SEN(timerfd_settime), "timerfd_settime" },
[312] = { 2, TD, SEN(timerfd_gettime), "timerfd_gettime" },
@ -341,11 +341,11 @@
[317] = { 2, TD, SEN(pipe2), "pipe2" },
[318] = { 1, TD, SEN(inotify_init1), "inotify_init1" },
[319] = { 5, TD, SEN(perf_event_open), "perf_event_open" },
[320] = { 5, TD, SEN(preadv), "preadv" },
[321] = { 5, TD, SEN(pwritev), "pwritev" },
[320] = { 4, TD, SEN(preadv), "preadv" },
[321] = { 4, TD, SEN(pwritev), "pwritev" },
[322] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" },
[323] = { 2, TD, SEN(fanotify_init), "fanotify_init" },
[324] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
[324] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
[325] = { 4, 0, SEN(prlimit64), "prlimit64" },
[326] = { 3, TN, SEN(socket), "socket" },
[327] = { 3, TN, SEN(bind), "bind" },
@ -400,7 +400,9 @@
[376] = { 3, TI, SEN(shmget), "shmget" },
[377] = { 3, TI, SEN(shmctl), "shmctl" },
[378] = { 3, TM, SEN(mlock2), "mlock2" },
[379 ... 399] = { },
[379] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[380] = { 6, TD, SEN(preadv2), "preadv2" },
[381] = { 6, TD, SEN(pwritev2), "pwritev2" },
#define SYS_socket_subcall 400
#include "subcall.h"

View File

@ -7,11 +7,6 @@ arch_sigreturn(struct tcb *tcp)
if (umove(tcp, addr, &mask) < 0) {
tprintf("{mask=%#lx}", addr);
} else {
#ifdef S390
long v = mask[0];
mask[0] = mask[1];
mask[1] = v;
#endif
tprintsigmask_addr("{mask=", mask);
tprints("}");
}

View File

@ -2,6 +2,7 @@
static int
arch_get_scno(struct tcb *tcp)
{
tcp->scno = s390_regset.gprs[2];
tcp->scno = s390_regset.gprs[2] ?
s390_regset.gprs[2] : s390_regset.gprs[1];
return 1;
}

View File

@ -28,7 +28,7 @@
*
*/
[ 0] = { 0, 0, SEN(setup), "setup" },
[ 0] = {MA, 0, SEN(setup), "setup" },
[ 1] = { 1, TP|SE, SEN(exit), "exit" },
[ 2] = { 0, TP, SEN(fork), "fork" },
[ 3] = { 3, TD, SEN(read), "read" },
@ -48,7 +48,7 @@
[ 17] = { },
[ 18] = { },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 5, TF, SEN(mount), "mount" },
[ 22] = { 1, TF, SEN(umount), "umount" },
[ 23] = { 1, 0, SEN(setuid16), "setuid" },
@ -76,7 +76,7 @@
[ 45] = { 1, TM|SI, SEN(brk), "brk" },
[ 46] = { 1, 0, SEN(setgid16), "setgid" },
[ 47] = { 0, NF, SEN(getgid16), "getgid" },
[ 48] = { 3, TS, SEN(signal), "signal" },
[ 48] = { 2, TS, SEN(signal), "signal" },
[ 49] = { 0, NF, SEN(geteuid16), "geteuid" },
[ 50] = { 0, NF, SEN(getegid16), "getegid" },
[ 51] = { 1, TF, SEN(acct), "acct" },
@ -88,11 +88,11 @@
[ 57] = { 2, 0, SEN(setpgid), "setpgid" },
[ 58] = { },
[ 59] = { },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, 0, SEN(ustat), "ustat" },
[ 63] = { 2, TD, SEN(dup2), "dup2" },
[ 64] = { 0, 0, SEN(getppid), "getppid" },
[ 64] = { 0, NF, SEN(getppid), "getppid" },
[ 65] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 66] = { 0, 0, SEN(setsid), "setsid" },
[ 67] = { 3, TS, SEN(sigaction), "sigaction" },
@ -118,7 +118,7 @@
[ 87] = { 2, TF, SEN(swapon), "swapon" },
[ 88] = { 4, 0, SEN(reboot), "reboot" },
[ 89] = { 3, TD, SEN(readdir), "readdir" },
[ 90] = { 6, TD|TM|SI, SEN(old_mmap), "mmap" },
[ 90] = { 1, TD|TM|SI, SEN(old_mmap), "mmap" },
[ 91] = { 2, TM|SI, SEN(munmap), "munmap" },
[ 92] = { 2, TF, SEN(truncate), "truncate" },
[ 93] = { 2, TD, SEN(ftruncate), "ftruncate" },
@ -138,14 +138,14 @@
[107] = { 2, TF, SEN(lstat), "lstat" },
[108] = { 2, TD, SEN(fstat), "fstat" },
[109] = { },
[110] = { 3, 0, SEN(lookup_dcookie), "lookup_dcookie" },
[110] = { 4, 0, SEN(lookup_dcookie), "lookup_dcookie" },
[111] = { 0, 0, SEN(vhangup), "vhangup" },
[112] = { 0, 0, SEN(idle), "idle" },
[113] = { },
[114] = { 4, TP, SEN(wait4), "wait4" },
[115] = { 1, TF, SEN(swapoff), "swapoff" },
[116] = { 1, 0, SEN(sysinfo), "sysinfo" },
[117] = { 5, TI, SEN(ipc), "ipc" },
[117] = { 6, TI, SEN(ipc), "ipc" },
[118] = { 1, TD, SEN(fsync), "fsync" },
[119] = { 0, TS, SEN(sigreturn), "sigreturn" },
[120] = { 5, TP, SEN(clone), "clone" },
@ -164,7 +164,7 @@
[133] = { 1, TD, SEN(fchdir), "fchdir" },
[134] = { 2, 0, SEN(bdflush), "bdflush" },
[135] = { 3, 0, SEN(sysfs), "sysfs" },
[136] = { 1, 0, SEN(personality), "personality" },
[136] = { 1, NF, SEN(personality), "personality" },
[137] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[138] = { 1, NF, SEN(setfsuid16), "setfsuid" },
[139] = { 1, NF, SEN(setfsgid16), "setfsgid" },
@ -264,7 +264,7 @@
[233] = { 2, TF, SEN(removexattr), "removexattr" },
[234] = { 2, TF, SEN(removexattr), "lremovexattr" },
[235] = { 2, TD, SEN(fremovexattr), "fremovexattr" },
[236] = { 0, 0, SEN(gettid), "gettid" },
[236] = { 0, NF, SEN(gettid), "gettid" },
[237] = { 2, TS, SEN(kill), "tkill" },
[238] = { 6, 0, SEN(futex), "futex" },
[239] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" },
@ -281,7 +281,7 @@
[250] = { 4, TD, SEN(epoll_ctl), "epoll_ctl" },
[251] = { 4, TD, SEN(epoll_wait), "epoll_wait" },
[252] = { 1, 0, SEN(set_tid_address), "set_tid_address" },
[253] = { 5, TD, SEN(printargs), "fadvise64" },
[253] = { 5, TD, SEN(fadvise64), "fadvise64" },
[254] = { 3, 0, SEN(timer_create), "timer_create" },
[255] = { 4, 0, SEN(timer_settime), "timer_settime" },
[256] = { 2, 0, SEN(timer_gettime), "timer_gettime" },
@ -292,7 +292,7 @@
[261] = { 2, 0, SEN(clock_getres), "clock_getres" },
[262] = { 4, 0, SEN(clock_nanosleep), "clock_nanosleep" },
[263] = { 5, 0, SEN(vserver), "vserver" },
[264] = { 1, TD, SEN(printargs), "fadvise64_64" },
[264] = { 6, TD, SEN(fadvise64_64), "fadvise64_64" },
[265] = { 3, TF, SEN(statfs64), "statfs64" },
[266] = { 3, TD, SEN(fstatfs64), "fstatfs64" },
[267] = { 5, TM|SI, SEN(remap_file_pages), "remap_file_pages" },
@ -403,7 +403,9 @@
[372] = { 3, TN, SEN(recvmsg), "recvmsg" },
[373] = { 2, TN, SEN(shutdown), "shutdown" },
[374] = { 3, TM, SEN(mlock2), "mlock2" },
[375 ... 399] = { },
[375] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[376] = { 6, TD, SEN(preadv2), "preadv2" },
[377] = { 6, TD, SEN(pwritev2), "pwritev2" },
#define SYS_socket_subcall 400
#include "subcall.h"

View File

@ -27,7 +27,7 @@
*
*/
[ 0] = { 0, 0, SEN(setup), "setup" },
[ 0] = {MA, 0, SEN(setup), "setup" },
[ 1] = { 1, TP|SE, SEN(exit), "exit" },
[ 2] = { 0, TP, SEN(fork), "fork" },
[ 3] = { 3, TD, SEN(read), "read" },
@ -47,7 +47,7 @@
[ 17] = { },
[ 18] = { },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 5, TF, SEN(mount), "mount" },
[ 22] = { 1, TF, SEN(umount), "umount" },
[ 23] = { },
@ -75,7 +75,7 @@
[ 45] = { 1, TM|SI, SEN(brk), "brk" },
[ 46] = { },
[ 47] = { },
[ 48] = { 3, TS, SEN(signal), "signal" },
[ 48] = { 2, TS, SEN(signal), "signal" },
[ 49] = { },
[ 50] = { },
[ 51] = { 1, TF, SEN(acct), "acct" },
@ -87,11 +87,11 @@
[ 57] = { 2, 0, SEN(setpgid), "setpgid" },
[ 58] = { },
[ 59] = { },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, 0, SEN(ustat), "ustat" },
[ 63] = { 2, TD, SEN(dup2), "dup2" },
[ 64] = { 0, 0, SEN(getppid), "getppid" },
[ 64] = { 0, NF, SEN(getppid), "getppid" },
[ 65] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 66] = { 0, 0, SEN(setsid), "setsid" },
[ 67] = { 3, TS, SEN(sigaction), "sigaction" },
@ -139,7 +139,7 @@
[114] = { 4, TP, SEN(wait4), "wait4" },
[115] = { 1, TF, SEN(swapoff), "swapoff" },
[116] = { 1, 0, SEN(sysinfo), "sysinfo" },
[117] = { 5, TI, SEN(ipc), "ipc" },
[117] = { 6, TI, SEN(ipc), "ipc" },
[118] = { 1, TD, SEN(fsync), "fsync" },
[119] = { 0, TS, SEN(sigreturn), "sigreturn" },
[120] = { 5, TP, SEN(clone), "clone" },
@ -158,7 +158,7 @@
[133] = { 1, TD, SEN(fchdir), "fchdir" },
[134] = { 2, 0, SEN(bdflush), "bdflush" },
[135] = { 3, 0, SEN(sysfs), "sysfs" },
[136] = { 1, 0, SEN(personality), "personality" },
[136] = { 1, NF, SEN(personality), "personality" },
[137] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[138 ... 140] = { },
[141] = { 3, TD, SEN(getdents), "getdents" },
@ -248,7 +248,7 @@
[233] = { 2, TF, SEN(removexattr), "removexattr" },
[234] = { 2, TF, SEN(removexattr), "lremovexattr" },
[235] = { 2, TD, SEN(fremovexattr), "fremovexattr" },
[236] = { 0, 0, SEN(gettid), "gettid" },
[236] = { 0, NF, SEN(gettid), "gettid" },
[237] = { 2, TS, SEN(kill), "tkill" },
[238] = { 6, 0, SEN(futex), "futex" },
[239] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" },
@ -387,7 +387,9 @@
[372] = { 3, TN, SEN(recvmsg), "recvmsg" },
[373] = { 2, TN, SEN(shutdown), "shutdown" },
[374] = { 3, TM, SEN(mlock2), "mlock2" },
[375 ... 399] = { },
[375] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[376] = { 6, TD, SEN(preadv2), "preadv2" },
[377] = { 6, TD, SEN(pwritev2), "pwritev2" },
#define SYS_socket_subcall 400
#include "subcall.h"

View File

@ -48,7 +48,7 @@
[ 17] = { 0, TM, SEN(break), "break" },
[ 18] = { 2, TF, SEN(oldstat), "oldstat" },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 5, TF, SEN(mount), "mount" },
[ 22] = { 1, TF, SEN(umount), "umount" },
[ 23] = { 1, 0, SEN(setuid16), "setuid" },
@ -70,13 +70,13 @@
[ 39] = { 2, TF, SEN(mkdir), "mkdir" },
[ 40] = { 1, TF, SEN(rmdir), "rmdir" },
[ 41] = { 1, TD, SEN(dup), "dup" },
[ 42] = { 1, TD, SEN(pipe), "pipe" },
[ 42] = { 0, TD, SEN(pipe), "pipe" },
[ 43] = { 1, 0, SEN(times), "times" },
[ 44] = { 0, 0, SEN(prof), "prof" },
[ 45] = { 1, TM|SI, SEN(brk), "brk" },
[ 46] = { 1, 0, SEN(setgid16), "setgid" },
[ 47] = { 0, NF, SEN(getgid16), "getgid" },
[ 48] = { 3, TS, SEN(signal), "signal" },
[ 48] = { 2, TS, SEN(signal), "signal" },
[ 49] = { 0, NF, SEN(geteuid16), "geteuid" },
[ 50] = { 0, NF, SEN(getegid16), "getegid" },
[ 51] = { 1, TF, SEN(acct), "acct" },
@ -88,11 +88,11 @@
[ 57] = { 2, 0, SEN(setpgid), "setpgid" },
[ 58] = { 2, 0, SEN(ulimit), "ulimit" },
[ 59] = { 1, 0, SEN(oldolduname), "oldolduname" },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, 0, SEN(ustat), "ustat" },
[ 63] = { 2, TD, SEN(dup2), "dup2" },
[ 64] = { 0, 0, SEN(getppid), "getppid" },
[ 64] = { 0, NF, SEN(getppid), "getppid" },
[ 65] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 66] = { 0, 0, SEN(setsid), "setsid" },
[ 67] = { 3, TS, SEN(sigaction), "sigaction" },
@ -145,7 +145,7 @@
[114] = { 4, TP, SEN(wait4), "wait4" },
[115] = { 1, TF, SEN(swapoff), "swapoff" },
[116] = { 1, 0, SEN(sysinfo), "sysinfo" },
[117] = { 5, TI, SEN(ipc), "ipc" },
[117] = { 6, TI, SEN(ipc), "ipc" },
[118] = { 1, TD, SEN(fsync), "fsync" },
[119] = { 0, TS, SEN(sigreturn), "sigreturn" },
[120] = { 5, TP, SEN(clone), "clone" },
@ -164,7 +164,7 @@
[133] = { 1, TD, SEN(fchdir), "fchdir" },
[134] = { 2, 0, SEN(bdflush), "bdflush" },
[135] = { 3, 0, SEN(sysfs), "sysfs" },
[136] = { 1, 0, SEN(personality), "personality" },
[136] = { 1, NF, SEN(personality), "personality" },
[137] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[138] = { 1, NF, SEN(setfsuid16), "setfsuid" },
[139] = { 1, NF, SEN(setfsgid16), "setfsgid" },
@ -181,7 +181,7 @@
[150] = { 2, TM, SEN(mlock), "mlock" },
[151] = { 2, TM, SEN(munlock), "munlock" },
[152] = { 1, TM, SEN(mlockall), "mlockall" },
[153] = { 1, TM, SEN(munlockall), "munlockall" },
[153] = { 0, TM, SEN(munlockall), "munlockall" },
[154] = { 2, 0, SEN(sched_setparam), "sched_setparam" },
[155] = { 2, 0, SEN(sched_getparam), "sched_getparam" },
[156] = { 3, 0, SEN(sched_setscheduler), "sched_setscheduler" },
@ -228,13 +228,13 @@
[198] = { 3, TF, SEN(chown), "lchown32" },
[199] = { 0, NF, SEN(getuid), "getuid32" },
[200] = { 0, NF, SEN(getgid), "getgid32" },
[201] = { 0, 0, SEN(geteuid), "geteuid32" },
[202] = { 0, 0, SEN(getegid), "getegid32" },
[201] = { 0, NF, SEN(geteuid), "geteuid32" },
[202] = { 0, NF, SEN(getegid), "getegid32" },
[203] = { 2, 0, SEN(setreuid), "setreuid32" },
[204] = { 2, 0, SEN(setregid), "setregid32" },
[205] = { 2, 0, SEN(getgroups), "getgroups32" },
[206] = { 2, 0, SEN(setgroups), "setgroups32" },
[207] = { 3, 0, SEN(fchown), "fchown32" },
[207] = { 3, TD, SEN(fchown), "fchown32" },
[208] = { 3, 0, SEN(setresuid), "setresuid32" },
[209] = { 3, 0, SEN(getresuid), "getresuid32" },
[210] = { 3, 0, SEN(setresgid), "setresgid32" },
@ -242,15 +242,15 @@
[212] = { 3, TF, SEN(chown), "chown32" },
[213] = { 1, 0, SEN(setuid), "setuid32" },
[214] = { 1, 0, SEN(setgid), "setgid32" },
[215] = { 1, 0, SEN(setfsuid), "setfsuid32" },
[216] = { 1, 0, SEN(setfsgid), "setfsgid32" },
[215] = { 1, NF, SEN(setfsuid), "setfsuid32" },
[216] = { 1, NF, SEN(setfsgid), "setfsgid32" },
[217] = { 2, TF, SEN(pivotroot), "pivot_root" },
[218] = { 3, TM, SEN(mincore), "mincore" },
[219] = { 3, TM, SEN(madvise), "madvise" },
[220] = { 3, TD, SEN(getdents64), "getdents64" },
[221] = { 3, TD, SEN(fcntl64), "fcntl64" },
[222 ... 223] = { },
[224] = { 4, 0, SEN(gettid), "gettid" },
[224] = { 0, NF, SEN(gettid), "gettid" },
[225] = { 4, TD, SEN(readahead), "readahead" },
[226] = { 5, TF, SEN(setxattr), "setxattr" },
[227] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -294,7 +294,7 @@
[266] = { 2, 0, SEN(clock_getres), "clock_getres" },
[267] = { 4, 0, SEN(clock_nanosleep), "clock_nanosleep" },
[268] = { 3, TF, SEN(statfs64), "statfs64" },
[269] = { 2, TD, SEN(fstatfs64), "fstatfs64" },
[269] = { 3, TD, SEN(fstatfs64), "fstatfs64" },
[270] = { 3, TS, SEN(tgkill), "tgkill" },
[271] = { 2, TF, SEN(utimes), "utimes" },
[272] = { 6, TD, SEN(fadvise64_64), "fadvise64_64" },
@ -341,7 +341,7 @@
[313] = { 6, TD, SEN(splice), "splice" },
[314] = { 6, TD, SEN(sync_file_range), "sync_file_range" },
[315] = { 4, TD, SEN(tee), "tee" },
[316] = { 5, TD, SEN(vmsplice), "vmsplice" },
[316] = { 4, TD, SEN(vmsplice), "vmsplice" },
[317] = { 6, TM, SEN(move_pages), "move_pages" },
[318] = { 3, 0, SEN(getcpu), "getcpu" },
[319] = { 6, TD, SEN(epoll_pwait), "epoll_pwait" },
@ -394,6 +394,6 @@
[366] = { 6, 0, SEN(process_vm_writev), "process_vm_writev" },
[367] = { 5, 0, SEN(kcmp), "kcmp" },
[368] = { 3, TD, SEN(finit_module), "finit_module" },
[369 ... 399] = { },
#define SYS_socket_subcall 400
#include "subcall.h"

View File

@ -46,7 +46,7 @@
[ 17] = { 0, TM, SEN(break), "break" },
[ 18] = { 2, TF, SEN(oldstat), "oldstat" },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 5, TF, SEN(mount), "mount" },
[ 22] = { 1, TF, SEN(umount), "umount" },
[ 23] = { 1, 0, SEN(setuid16), "setuid" },
@ -68,13 +68,13 @@
[ 39] = { 2, TF, SEN(mkdir), "mkdir" },
[ 40] = { 1, TF, SEN(rmdir), "rmdir" },
[ 41] = { 1, TD, SEN(dup), "dup" },
[ 42] = { 1, TD, SEN(pipe), "pipe" },
[ 42] = { 0, TD, SEN(pipe), "pipe" },
[ 43] = { 1, 0, SEN(times), "times" },
[ 44] = { 0, 0, SEN(prof), "prof" },
[ 45] = { 1, TM|SI, SEN(brk), "brk" },
[ 46] = { 1, 0, SEN(setgid16), "setgid" },
[ 47] = { 0, NF, SEN(getgid16), "getgid" },
[ 48] = { 3, TS, SEN(signal), "signal" },
[ 48] = { 2, TS, SEN(signal), "signal" },
[ 49] = { 0, NF, SEN(geteuid16), "geteuid" },
[ 50] = { 0, NF, SEN(getegid16), "getegid" },
[ 51] = { 1, TF, SEN(acct), "acct" },
@ -86,11 +86,11 @@
[ 57] = { 2, 0, SEN(setpgid), "setpgid" },
[ 58] = { 2, 0, SEN(ulimit), "ulimit" },
[ 59] = { 1, 0, SEN(oldolduname), "oldolduname" },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, 0, SEN(ustat), "ustat" },
[ 63] = { 2, TD, SEN(dup2), "dup2" },
[ 64] = { 0, 0, SEN(getppid), "getppid" },
[ 64] = { 0, NF, SEN(getppid), "getppid" },
[ 65] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 66] = { 0, 0, SEN(setsid), "setsid" },
[ 67] = { 3, TS, SEN(sigaction), "sigaction" },
@ -143,7 +143,7 @@
[114] = { 4, TP, SEN(wait4), "wait4" },
[115] = { 1, TF, SEN(swapoff), "swapoff" },
[116] = { 1, 0, SEN(sysinfo), "sysinfo" },
[117] = { 5, TI, SEN(ipc), "ipc" },
[117] = { 6, TI, SEN(ipc), "ipc" },
[118] = { 1, TD, SEN(fsync), "fsync" },
[119] = { 0, TS, SEN(sigreturn), "sigreturn" },
[120] = { 5, TP, SEN(clone), "clone" },
@ -162,7 +162,7 @@
[133] = { 1, TD, SEN(fchdir), "fchdir" },
[134] = { 2, 0, SEN(bdflush), "bdflush" },
[135] = { 3, 0, SEN(sysfs), "sysfs" },
[136] = { 1, 0, SEN(personality), "personality" },
[136] = { 1, NF, SEN(personality), "personality" },
[137] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[138] = { 1, NF, SEN(setfsuid16), "setfsuid" },
[139] = { 1, NF, SEN(setfsgid16), "setfsgid" },
@ -226,13 +226,13 @@
[198] = { 3, TF, SEN(chown), "lchown32" },
[199] = { 0, NF, SEN(getuid), "getuid32" },
[200] = { 0, NF, SEN(getgid), "getgid32" },
[201] = { 0, 0, SEN(geteuid), "geteuid32" },
[202] = { 0, 0, SEN(getegid), "getegid32" },
[201] = { 0, NF, SEN(geteuid), "geteuid32" },
[202] = { 0, NF, SEN(getegid), "getegid32" },
[203] = { 2, 0, SEN(setreuid), "setreuid32" },
[204] = { 2, 0, SEN(setregid), "setregid32" },
[205] = { 2, 0, SEN(getgroups), "getgroups32" },
[206] = { 2, 0, SEN(setgroups), "setgroups32" },
[207] = { 3, 0, SEN(fchown), "fchown32" },
[207] = { 3, TD, SEN(fchown), "fchown32" },
[208] = { 3, 0, SEN(setresuid), "setresuid32" },
[209] = { 3, 0, SEN(getresuid), "getresuid32" },
[210] = { 3, 0, SEN(setresgid), "setresgid32" },
@ -240,8 +240,8 @@
[212] = { 3, TF, SEN(chown), "chown32" },
[213] = { 1, 0, SEN(setuid), "setuid32" },
[214] = { 1, 0, SEN(setgid), "setgid32" },
[215] = { 1, 0, SEN(setfsuid), "setfsuid32" },
[216] = { 1, 0, SEN(setfsgid), "setfsgid32" },
[215] = { 1, NF, SEN(setfsuid), "setfsuid32" },
[216] = { 1, NF, SEN(setfsgid), "setfsgid32" },
[217] = { 2, TF, SEN(pivotroot), "pivot_root" },
[218] = { 3, TM, SEN(mincore), "mincore" },
[219] = { 3, TM, SEN(madvise), "madvise" },
@ -266,17 +266,17 @@
[238] = { 3, TI, SEN(semget), "semget" },
[239] = { 4, TI, SEN(semctl), "semctl" },
[240] = { 4, TI, SEN(msgsnd), "msgsnd" },
[241] = { 4, TI, SEN(msgrcv), "msgrcv" },
[241] = { 5, TI, SEN(msgrcv), "msgrcv" },
[242] = { 2, TI, SEN(msgget), "msgget" },
[243] = { 4, TI, SEN(msgctl), "msgctl" },
[244] = { 4, TI|TM|SI, SEN(shmat), "shmat" },
[245] = { 4, TI|TM|SI, SEN(shmdt), "shmdt" },
[243] = { 3, TI, SEN(msgctl), "msgctl" },
[244] = { 3, TI|TM|SI, SEN(shmat), "shmat" },
[245] = { 1, TI|TM|SI, SEN(shmdt), "shmdt" },
[246] = { 3, TI, SEN(shmget), "shmget" },
[247] = { 4, TI, SEN(shmctl), "shmctl" },
[247] = { 3, TI, SEN(shmctl), "shmctl" },
[248] = { 3, TD, SEN(getdents64), "getdents64" },
[249] = { 3, TD, SEN(fcntl64), "fcntl64" },
[250 ... 251] = { },
[252] = { 4, 0, SEN(gettid), "gettid" },
[252] = { 0, NF, SEN(gettid), "gettid" },
[253] = { 3, TD, SEN(readahead), "readahead" },
[254] = { 5, TF, SEN(setxattr), "setxattr" },
[255] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -320,7 +320,7 @@
[294] = { 2, 0, SEN(clock_getres), "clock_getres" },
[295] = { 4, 0, SEN(clock_nanosleep), "clock_nanosleep" },
[296] = { 3, TF, SEN(statfs64), "statfs64" },
[297] = { 2, TD, SEN(fstatfs64), "fstatfs64" },
[297] = { 3, TD, SEN(fstatfs64), "fstatfs64" },
[298] = { 3, TS, SEN(tgkill), "tgkill" },
[299] = { 2, TF, SEN(utimes), "utimes" },
[300] = { 4, TD, SEN(fadvise64), "fadvise64_64" },
@ -367,7 +367,7 @@
[341] = { 6, TD, SEN(splice), "splice" },
[342] = { 4, TD, SEN(sync_file_range), "sync_file_range" },
[343] = { 4, TD, SEN(tee), "tee" },
[344] = { 5, TD, SEN(vmsplice), "vmsplice" },
[344] = { 4, TD, SEN(vmsplice), "vmsplice" },
[345] = { 6, TM, SEN(move_pages), "move_pages" },
[346] = { 3, 0, SEN(getcpu), "getcpu" },
[347] = { 6, TD, SEN(epoll_pwait), "epoll_pwait" },
@ -403,6 +403,6 @@
[377] = { 6, 0, SEN(process_vm_writev), "process_vm_writev" },
[378] = { 5, 0, SEN(kcmp), "kcmp" },
[379] = { 3, TD, SEN(finit_module), "finit_module" },
[380 ... 399] = { },
#define SYS_socket_subcall 400
#include "subcall.h"

View File

@ -1,7 +1,7 @@
static void
get_error(struct tcb *tcp, const bool check_errno)
{
if (check_errno && sparc_regs.psr & PSR_C) {
if (sparc_regs.psr & PSR_C) {
tcp->u_rval = -1;
tcp->u_error = sparc_regs.u_regs[U_REG_O0];
} else {

View File

@ -18,13 +18,13 @@
[ 17] = { 1, TM|SI, SEN(brk), "brk" },
[ 18] = { 4, 0, SEN(printargs), "perfctr" },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, 0, SEN(getpid), "getpid" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 2, 0, SEN(capget), "capget" },
[ 22] = { 2, 0, SEN(capset), "capset" },
[ 23] = { 1, 0, SEN(setuid16), "setuid" },
[ 24] = { 0, NF, SEN(getuid16), "getuid" },
[ 25] = { 4, TD, SEN(vmsplice), "vmsplice" },
[ 26] = { 5, 0, SEN(ptrace), "ptrace" },
[ 26] = { 4, 0, SEN(ptrace), "ptrace" },
[ 27] = { 1, 0, SEN(alarm), "alarm" },
[ 28] = { 2, TS, SEN(sigaltstack), "sigaltstack" },
[ 29] = { 0, TS, SEN(pause), "pause" },
@ -39,18 +39,18 @@
[ 38] = { 2, TF, SEN(stat), "stat" },
[ 39] = { 4, TD|TN, SEN(sendfile), "sendfile" },
[ 40] = { 2, TF, SEN(lstat), "lstat" },
[ 41] = { 2, TD, SEN(dup), "dup" },
[ 41] = { 1, TD, SEN(dup), "dup" },
[ 42] = { 0, TD, SEN(pipe), "pipe" },
[ 43] = { 1, 0, SEN(times), "times" },
[ 44] = { 0, NF, SEN(getuid), "getuid32" },
[ 45] = { 2, TF, SEN(umount2), "umount2" },
[ 46] = { 1, 0, SEN(setgid16), "setgid" },
[ 47] = { 0, NF, SEN(getgid16), "getgid" },
[ 48] = { 3, TS, SEN(signal), "signal" },
[ 48] = { 2, TS, SEN(signal), "signal" },
[ 49] = { 0, NF, SEN(geteuid16), "geteuid" },
[ 50] = { 0, NF, SEN(getegid16), "getegid" },
[ 51] = { 1, TF, SEN(acct), "acct" },
[ 52] = { 2, 0, SEN(printargs), "memory_ordering" },
[ 52] = { },
[ 53] = { 0, NF, SEN(getgid), "getgid32" },
[ 54] = { 3, TD, SEN(ioctl), "ioctl" },
[ 55] = { 4, 0, SEN(reboot), "reboot" },
@ -58,7 +58,7 @@
[ 57] = { 2, TF, SEN(symlink), "symlink" },
[ 58] = { 3, TF, SEN(readlink), "readlink" },
[ 59] = { 3, TF|TP|SE|SI, SEN(execve), "execve" },
[ 60] = { 1, 0, SEN(umask), "umask" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, TD, SEN(fstat), "fstat" },
[ 63] = { 2, TD, SEN(fstat64), "fstat64" },
@ -141,7 +141,7 @@
[140] = { 4, TD|TN, SEN(sendfile64), "sendfile64" },
[141] = { 3, TN, SEN(getpeername), "getpeername" },
[142] = { 6, 0, SEN(futex), "futex" },
[143] = { 0, 0, SEN(gettid), "gettid" },
[143] = { 0, NF, SEN(gettid), "gettid" },
[144] = { 2, 0, SEN(getrlimit), "getrlimit" },
[145] = { 2, 0, SEN(setrlimit), "setrlimit" },
[146] = { 2, TF, SEN(pivotroot), "pivot_root" },
@ -162,7 +162,7 @@
[161] = { 3, 0, SEN(sched_getaffinity), "sched_get_affinity" },
[162] = { 2, 0, SEN(printargs), "getdomainname" },
[163] = { 2, 0, SEN(setdomainname), "setdomainname" },
[164] = { 5, 0, SEN(printargs), "utrap_install" },
[164] = { },
[165] = { 4, TF, SEN(quotactl), "quotactl" },
[166] = { 1, 0, SEN(set_tid_address), "set_tid_address" },
[167] = { 5, TF, SEN(mount), "mount" },
@ -189,13 +189,13 @@
[188] = { 1, TP|SE, SEN(exit), "exit_group" },
[189] = { 1, 0, SEN(uname), "uname" },
[190] = { 3, 0, SEN(init_module), "init_module" },
[191] = { 1, 0, SEN(personality), "personality" },
[191] = { 1, NF, SEN(personality), "personality" },
[192] = { 5, TM|SI, SEN(remap_file_pages), "remap_file_pages" },
[193] = { 1, TD, SEN(epoll_create), "epoll_create" },
[194] = { 4, TD, SEN(epoll_ctl), "epoll_ctl" },
[195] = { 4, TD, SEN(epoll_wait), "epoll_wait" },
[196] = { 3, 0, SEN(ioprio_set), "ioprio_set" },
[197] = { 0, 0, SEN(getppid), "getppid" },
[197] = { 0, NF, SEN(getppid), "getppid" },
[198] = { 3, TS, SEN(sigaction), "sigaction" },
[199] = { 0, TS, SEN(siggetmask), "sgetmask" },
[200] = { 1, TS, SEN(sigsetmask), "ssetmask" },
@ -213,7 +213,7 @@
[212] = { 3, TP, SEN(waitpid), "waitpid" },
[213] = { 1, TF, SEN(swapoff), "swapoff" },
[214] = { 1, 0, SEN(sysinfo), "sysinfo" },
[215] = { 5, TI, SEN(ipc), "ipc" },
[215] = { 6, TI, SEN(ipc), "ipc" },
[216] = { 0, TS, SEN(sigreturn), "sigreturn" },
[217] = { 5, TP, SEN(clone), "clone" },
[218] = { 2, 0, SEN(ioprio_get), "ioprio_get" },
@ -351,8 +351,13 @@
[350] = { 5, TD|TF|TP|SE|SI, SEN(execveat), "execveat", },
[351] = { 2, 0, SEN(membarrier), "membarrier", },
[352] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[353] = { 3, TM, SEN(mlock2), "mlock2" },
[354 ... 399] = { },
[353] = { 3, TN, SEN(bind), "bind" },
[354] = { 2, TN, SEN(listen), "listen" },
[355] = { 5, TN, SEN(setsockopt), "setsockopt" },
[356] = { 3, TM, SEN(mlock2), "mlock2" },
[357] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[358] = { 6, TD, SEN(preadv2), "preadv2" },
[359] = { 6, TD, SEN(pwritev2), "pwritev2" },
#define SYS_socket_subcall 400
#include "subcall.h"

View File

@ -1,7 +1,7 @@
static void
get_error(struct tcb *tcp, const bool check_errno)
{
if (check_errno && sparc_regs.tstate & 0x1100000000UL) {
if (sparc_regs.tstate & 0x1100000000UL) {
tcp->u_rval = -1;
tcp->u_error = sparc_regs.u_regs[U_REG_O0];
} else {

View File

@ -1 +1,361 @@
#include "../sparc/syscallent.h"
[ 0] = { 0, 0, SEN(restart_syscall), "restart_syscall" },
[ 1] = { 1, TP|SE, SEN(exit), "exit" },
[ 2] = { 0, TP, SEN(fork), "fork" },
[ 3] = { 3, TD, SEN(read), "read" },
[ 4] = { 3, TD, SEN(write), "write" },
[ 5] = { 3, TD|TF, SEN(open), "open" },
[ 6] = { 1, TD, SEN(close), "close" },
[ 7] = { 4, TP, SEN(wait4), "wait4" },
[ 8] = { 2, TD|TF, SEN(creat), "creat" },
[ 9] = { 2, TF, SEN(link), "link" },
[ 10] = { 1, TF, SEN(unlink), "unlink" },
[ 11] = { 2, TF|TP|SE|SI, SEN(execv), "execv" },
[ 12] = { 1, TF, SEN(chdir), "chdir" },
[ 13] = { 3, TF, SEN(chown16), "chown" },
[ 14] = { 3, TF, SEN(mknod), "mknod" },
[ 15] = { 2, TF, SEN(chmod), "chmod" },
[ 16] = { 3, TF, SEN(chown16), "lchown" },
[ 17] = { 1, TM|SI, SEN(brk), "brk" },
[ 18] = { 4, 0, SEN(printargs), "perfctr" },
[ 19] = { 3, TD, SEN(lseek), "lseek" },
[ 20] = { 0, NF, SEN(getpid), "getpid" },
[ 21] = { 2, 0, SEN(capget), "capget" },
[ 22] = { 2, 0, SEN(capset), "capset" },
[ 23] = { 1, 0, SEN(setuid16), "setuid" },
[ 24] = { 0, NF, SEN(getuid16), "getuid" },
[ 25] = { 4, TD, SEN(vmsplice), "vmsplice" },
[ 26] = { 4, 0, SEN(ptrace), "ptrace" },
[ 27] = { 1, 0, SEN(alarm), "alarm" },
[ 28] = { 2, TS, SEN(sigaltstack), "sigaltstack" },
[ 29] = { 0, TS, SEN(pause), "pause" },
[ 30] = { 2, TF, SEN(utime), "utime" },
[ 31 ... 32] = { },
[ 33] = { 2, TF, SEN(access), "access" },
[ 34] = { 1, 0, SEN(nice), "nice" },
[ 35] = { },
[ 36] = { 0, 0, SEN(sync), "sync" },
[ 37] = { 2, TS, SEN(kill), "kill" },
[ 38] = { 2, TF, SEN(stat), "stat" },
[ 39] = { 4, TD|TN, SEN(sendfile), "sendfile" },
[ 40] = { 2, TF, SEN(lstat), "lstat" },
[ 41] = { 1, TD, SEN(dup), "dup" },
[ 42] = { 0, TD, SEN(pipe), "pipe" },
[ 43] = { 1, 0, SEN(times), "times" },
[ 44] = { },
[ 45] = { 2, TF, SEN(umount2), "umount2" },
[ 46] = { 1, 0, SEN(setgid16), "setgid" },
[ 47] = { 0, NF, SEN(getgid16), "getgid" },
[ 48] = { 2, TS, SEN(signal), "signal" },
[ 49] = { 0, NF, SEN(geteuid16), "geteuid" },
[ 50] = { 0, NF, SEN(getegid16), "getegid" },
[ 51] = { 1, TF, SEN(acct), "acct" },
[ 52] = { 2, 0, SEN(printargs), "memory_ordering" },
[ 53] = { },
[ 54] = { 3, TD, SEN(ioctl), "ioctl" },
[ 55] = { 4, 0, SEN(reboot), "reboot" },
[ 56] = { },
[ 57] = { 2, TF, SEN(symlink), "symlink" },
[ 58] = { 3, TF, SEN(readlink), "readlink" },
[ 59] = { 3, TF|TP|SE|SI, SEN(execve), "execve" },
[ 60] = { 1, NF, SEN(umask), "umask" },
[ 61] = { 1, TF, SEN(chroot), "chroot" },
[ 62] = { 2, TD, SEN(fstat), "fstat" },
[ 63] = { 2, TD, SEN(fstat64), "fstat64" },
[ 64] = { 0, 0, SEN(getpagesize), "getpagesize" },
[ 65] = { 3, TM, SEN(msync), "msync" },
[ 66] = { 0, TP, SEN(vfork), "vfork" },
[ 67] = { 4, TD, SEN(pread), "pread64" },
[ 68] = { 4, TD, SEN(pwrite), "pwrite64" },
[ 69 ... 70] = { },
[ 71] = { 6, TD|TM|SI, SEN(mmap), "mmap" },
[ 72] = { },
[ 73] = { 2, TM|SI, SEN(munmap), "munmap" },
[ 74] = { 3, TM|SI, SEN(mprotect), "mprotect" },
[ 75] = { 3, TM, SEN(madvise), "madvise" },
[ 76] = { 0, 0, SEN(vhangup), "vhangup" },
[ 77] = { },
[ 78] = { 3, TM, SEN(mincore), "mincore" },
[ 79] = { 2, 0, SEN(getgroups16), "getgroups" },
[ 80] = { 2, 0, SEN(setgroups16), "setgroups" },
[ 81] = { 0, 0, SEN(getpgrp), "getpgrp" },
[ 82] = { },
[ 83] = { 3, 0, SEN(setitimer), "setitimer" },
[ 84] = { },
[ 85] = { 2, TF, SEN(swapon), "swapon" },
[ 86] = { 2, 0, SEN(getitimer), "getitimer" },
[ 87] = { },
[ 88] = { 2, 0, SEN(sethostname), "sethostname" },
[ 89] = { },
[ 90] = { 2, TD, SEN(dup2), "dup2" },
[ 91] = { },
[ 92] = { 3, TD, SEN(fcntl), "fcntl" },
[ 93] = { 5, TD, SEN(select), "select" },
[ 94] = { },
[ 95] = { 1, TD, SEN(fsync), "fsync" },
[ 96] = { 3, 0, SEN(setpriority), "setpriority" },
[ 97] = { 3, TN, SEN(socket), "socket" },
[ 98] = { 3, TN, SEN(connect), "connect" },
[ 99] = { 3, TN, SEN(accept), "accept" },
[100] = { 2, 0, SEN(getpriority), "getpriority" },
[101] = { 0, TS, SEN(rt_sigreturn), "rt_sigreturn" },
[102] = { 5, TS, SEN(rt_sigaction), "rt_sigaction" },
[103] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" },
[104] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" },
[105] = { 4, TS, SEN(rt_sigtimedwait), "rt_sigtimedwait" },
[106] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" },
[107] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" },
[108] = { 3, 0, SEN(setresuid), "setresuid" },
[109] = { 3, 0, SEN(getresuid), "getresuid" },
[110] = { 3, 0, SEN(setresgid), "setresgid" },
[111] = { 3, 0, SEN(getresgid), "getresgid" },
[112] = { },
[113] = { 3, TN, SEN(recvmsg), "recvmsg" },
[114] = { 3, TN, SEN(sendmsg), "sendmsg" },
[115] = { },
[116] = { 2, 0, SEN(gettimeofday), "gettimeofday" },
[117] = { 2, 0, SEN(getrusage), "getrusage" },
[118] = { 5, TN, SEN(getsockopt), "getsockopt" },
[119] = { 2, TF, SEN(getcwd), "getcwd" },
[120] = { 3, TD, SEN(readv), "readv" },
[121] = { 3, TD, SEN(writev), "writev" },
[122] = { 2, 0, SEN(settimeofday), "settimeofday" },
[123] = { 3, TD, SEN(fchown16), "fchown" },
[124] = { 2, TD, SEN(fchmod), "fchmod" },
[125] = { 6, TN, SEN(recvfrom), "recvfrom" },
[126] = { 2, 0, SEN(setreuid16), "setreuid" },
[127] = { 2, 0, SEN(setregid16), "setregid" },
[128] = { 2, TF, SEN(rename), "rename" },
[129] = { 2, TF, SEN(truncate), "truncate" },
[130] = { 2, TD, SEN(ftruncate), "ftruncate" },
[131] = { 2, TD, SEN(flock), "flock" },
[132] = { 2, TF, SEN(lstat64), "lstat64" },
[133] = { 6, TN, SEN(sendto), "sendto" },
[134] = { 2, TN, SEN(shutdown), "shutdown" },
[135] = { 4, TN, SEN(socketpair), "socketpair" },
[136] = { 2, TF, SEN(mkdir), "mkdir" },
[137] = { 1, TF, SEN(rmdir), "rmdir" },
[138] = { 2, TF, SEN(utimes), "utimes" },
[139] = { 2, TF, SEN(stat64), "stat64" },
[140] = { 4, TD|TN, SEN(sendfile64), "sendfile64" },
[141] = { 3, TN, SEN(getpeername), "getpeername" },
[142] = { 6, 0, SEN(futex), "futex" },
[143] = { 0, NF, SEN(gettid), "gettid" },
[144] = { 2, 0, SEN(getrlimit), "getrlimit" },
[145] = { 2, 0, SEN(setrlimit), "setrlimit" },
[146] = { 2, TF, SEN(pivotroot), "pivot_root" },
[147] = { 5, 0, SEN(prctl), "prctl" },
[148] = { 5, 0, SEN(printargs), "pciconfig_read" },
[149] = { 5, 0, SEN(printargs), "pciconfig_write" },
[150] = { 3, TN, SEN(getsockname), "getsockname" },
[151] = { 0, TD, SEN(inotify_init), "inotify_init" },
[152] = { 3, TD, SEN(inotify_add_watch), "inotify_add_watch" },
[153] = { 3, TD, SEN(poll), "poll" },
[154] = { 3, TD, SEN(getdents64), "getdents64" },
[155] = { },
[156] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
[157] = { 2, TF, SEN(statfs), "statfs" },
[158] = { 2, TD, SEN(fstatfs), "fstatfs" },
[159] = { 1, TF, SEN(umount), "umount" },
[160] = { 3, 0, SEN(sched_setaffinity), "sched_set_affinity" },
[161] = { 3, 0, SEN(sched_getaffinity), "sched_get_affinity" },
[162] = { 2, 0, SEN(printargs), "getdomainname" },
[163] = { 2, 0, SEN(setdomainname), "setdomainname" },
[164] = { 5, 0, SEN(printargs), "utrap_install" },
[165] = { 4, TF, SEN(quotactl), "quotactl" },
[166] = { 1, 0, SEN(set_tid_address), "set_tid_address" },
[167] = { 5, TF, SEN(mount), "mount" },
[168] = { 2, 0, SEN(ustat), "ustat" },
[169] = { 5, TF, SEN(setxattr), "setxattr" },
[170] = { 5, TF, SEN(setxattr), "lsetxattr" },
[171] = { 5, TD, SEN(fsetxattr), "fsetxattr" },
[172] = { 4, TF, SEN(getxattr), "getxattr" },
[173] = { 4, TF, SEN(getxattr), "lgetxattr" },
[174] = { 3, TD, SEN(getdents), "getdents" },
[175] = { 0, 0, SEN(setsid), "setsid" },
[176] = { 1, TD, SEN(fchdir), "fchdir" },
[177] = { 4, TD, SEN(fgetxattr), "fgetxattr" },
[178] = { 3, TF, SEN(listxattr), "listxattr" },
[179] = { 3, TF, SEN(listxattr), "llistxattr" },
[180] = { 3, TD, SEN(flistxattr), "flistxattr" },
[181] = { 2, TF, SEN(removexattr), "removexattr" },
[182] = { 2, TF, SEN(removexattr), "lremovexattr" },
[183] = { 1, TS, SEN(sigpending), "sigpending" },
[184] = { 5, 0, SEN(query_module), "query_module" },
[185] = { 2, 0, SEN(setpgid), "setpgid" },
[186] = { 2, TD, SEN(fremovexattr), "fremovexattr" },
[187] = { 2, TS, SEN(kill), "tkill" },
[188] = { 1, TP|SE, SEN(exit), "exit_group" },
[189] = { 1, 0, SEN(uname), "uname" },
[190] = { 3, 0, SEN(init_module), "init_module" },
[191] = { 1, NF, SEN(personality), "personality" },
[192] = { 5, TM|SI, SEN(remap_file_pages), "remap_file_pages" },
[193] = { 1, TD, SEN(epoll_create), "epoll_create" },
[194] = { 4, TD, SEN(epoll_ctl), "epoll_ctl" },
[195] = { 4, TD, SEN(epoll_wait), "epoll_wait" },
[196] = { 3, 0, SEN(ioprio_set), "ioprio_set" },
[197] = { 0, NF, SEN(getppid), "getppid" },
[198] = { 3, TS, SEN(sigaction), "sigaction" },
[199] = { 0, TS, SEN(siggetmask), "sgetmask" },
[200] = { 1, TS, SEN(sigsetmask), "ssetmask" },
[201] = { 3, TS, SEN(sigsuspend), "sigsuspend" },
[202] = { 2, TF, SEN(lstat), "oldlstat" },
[203] = { 1, TF, SEN(uselib), "uselib" },
[204] = { 3, TD, SEN(readdir), "readdir" },
[205] = { 3, TD, SEN(readahead), "readahead" },
[206] = { 2, TD, SEN(socketcall), "socketcall" },
[207] = { 3, 0, SEN(syslog), "syslog" },
[208] = { 3, 0, SEN(lookup_dcookie), "lookup_dcookie" },
[209] = { 4, TD, SEN(fadvise64), "fadvise64" },
[210] = { 4, TD, SEN(fadvise64), "fadvise64_64" },
[211] = { 3, TS, SEN(tgkill), "tgkill" },
[212] = { 3, TP, SEN(waitpid), "waitpid" },
[213] = { 1, TF, SEN(swapoff), "swapoff" },
[214] = { 1, 0, SEN(sysinfo), "sysinfo" },
[215] = { 6, TI, SEN(ipc), "ipc" },
[216] = { 0, TS, SEN(sigreturn), "sigreturn" },
[217] = { 5, TP, SEN(clone), "clone" },
[218] = { 2, 0, SEN(ioprio_get), "ioprio_get" },
[219] = { 1, 0, SEN(adjtimex), "adjtimex" },
[220] = { 3, TS, SEN(sigprocmask), "sigprocmask" },
[221] = { 2, 0, SEN(create_module), "create_module" },
[222] = { 2, 0, SEN(delete_module), "delete_module" },
[223] = { 1, 0, SEN(get_kernel_syms), "get_kernel_syms" },
[224] = { 1, 0, SEN(getpgid), "getpgid" },
[225] = { 2, 0, SEN(bdflush), "bdflush" },
[226] = { 3, 0, SEN(sysfs), "sysfs" },
[227] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[228] = { 1, NF, SEN(setfsuid16), "setfsuid" },
[229] = { 1, NF, SEN(setfsgid16), "setfsgid" },
[230] = { 5, TD, SEN(select), "_newselect" },
[231] = { },
[232] = { 6, TD, SEN(splice), "splice" },
[233] = { 1, 0, SEN(stime), "stime" },
[234] = { 3, TF, SEN(statfs64), "statfs64" },
[235] = { 3, TD, SEN(fstatfs64), "fstatfs64" },
[236] = { 5, TD, SEN(llseek), "_llseek" },
[237] = { 2, TM, SEN(mlock), "mlock" },
[238] = { 2, TM, SEN(munlock), "munlock" },
[239] = { 1, TM, SEN(mlockall), "mlockall" },
[240] = { 0, TM, SEN(munlockall), "munlockall" },
[241] = { 2, 0, SEN(sched_setparam), "sched_setparam" },
[242] = { 2, 0, SEN(sched_getparam), "sched_getparam" },
[243] = { 3, 0, SEN(sched_setscheduler), "sched_setscheduler" },
[244] = { 1, 0, SEN(sched_getscheduler), "sched_getscheduler" },
[245] = { 0, 0, SEN(sched_yield), "sched_yield" },
[246] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"},
[247] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"},
[248] = { 2, 0, SEN(sched_rr_get_interval), "sched_rr_get_interval" },
[249] = { 2, 0, SEN(nanosleep), "nanosleep" },
[250] = { 5, TM|SI, SEN(mremap), "mremap" },
[251] = { 1, 0, SEN(sysctl), "_sysctl" },
[252] = { 1, 0, SEN(getsid), "getsid" },
[253] = { 1, TD, SEN(fdatasync), "fdatasync" },
[254] = { 3, 0, SEN(nfsservctl), "nfsservctl" },
[255] = { 4, TD, SEN(sync_file_range), "sync_file_range" },
[256] = { 2, 0, SEN(clock_settime), "clock_settime" },
[257] = { 2, 0, SEN(clock_gettime), "clock_gettime" },
[258] = { 2, 0, SEN(clock_getres), "clock_getres" },
[259] = { 4, 0, SEN(clock_nanosleep), "clock_nanosleep" },
[260] = { 3, 0, SEN(sched_getaffinity), "sched_getaffinity" },
[261] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" },
[262] = { 4, 0, SEN(timer_settime), "timer_settime" },
[263] = { 2, 0, SEN(timer_gettime), "timer_gettime" },
[264] = { 1, 0, SEN(timer_getoverrun), "timer_getoverrun" },
[265] = { 1, 0, SEN(timer_delete), "timer_delete" },
[266] = { 3, 0, SEN(timer_create), "timer_create" },
[267] = { },
[268] = { 2, 0, SEN(io_setup), "io_setup" },
[269] = { 1, 0, SEN(io_destroy), "io_destroy" },
[270] = { 3, 0, SEN(io_submit), "io_submit" },
[271] = { 3, 0, SEN(io_cancel), "io_cancel" },
[272] = { 5, 0, SEN(io_getevents), "io_getevents" },
[273] = { 4, 0, SEN(mq_open), "mq_open" },
[274] = { 1, 0, SEN(mq_unlink), "mq_unlink" },
[275] = { 5, 0, SEN(mq_timedsend), "mq_timedsend" },
[276] = { 5, 0, SEN(mq_timedreceive), "mq_timedreceive" },
[277] = { 2, 0, SEN(mq_notify), "mq_notify" },
[278] = { 3, 0, SEN(mq_getsetattr), "mq_getsetattr" },
[279] = { 5, TP, SEN(waitid), "waitid" },
[280] = { 4, TD, SEN(tee), "tee" },
[281] = { 5, 0, SEN(add_key), "add_key" },
[282] = { 4, 0, SEN(request_key), "request_key" },
[283] = { 5, 0, SEN(keyctl), "keyctl" },
[284] = { 4, TD|TF, SEN(openat), "openat" },
[285] = { 3, TD|TF, SEN(mkdirat), "mkdirat" },
[286] = { 4, TD|TF, SEN(mknodat), "mknodat" },
[287] = { 5, TD|TF, SEN(fchownat), "fchownat" },
[288] = { 3, TD|TF, SEN(futimesat), "futimesat" },
[289] = { 4, TD|TF, SEN(newfstatat), "fstatat64" },
[290] = { 3, TD|TF, SEN(unlinkat), "unlinkat" },
[291] = { 4, TD|TF, SEN(renameat), "renameat" },
[292] = { 5, TD|TF, SEN(linkat), "linkat" },
[293] = { 3, TD|TF, SEN(symlinkat), "symlinkat" },
[294] = { 4, TD|TF, SEN(readlinkat), "readlinkat" },
[295] = { 3, TD|TF, SEN(fchmodat), "fchmodat" },
[296] = { 3, TD|TF, SEN(faccessat), "faccessat" },
[297] = { 6, TD, SEN(pselect6), "pselect6" },
[298] = { 5, TD, SEN(ppoll), "ppoll" },
[299] = { 1, TP, SEN(unshare), "unshare" },
[300] = { 2, 0, SEN(set_robust_list), "set_robust_list" },
[301] = { 3, 0, SEN(get_robust_list), "get_robust_list" },
[302] = { 4, TM, SEN(migrate_pages), "migrate_pages" },
[303] = { 6, TM, SEN(mbind), "mbind" },
[304] = { 5, TM, SEN(get_mempolicy), "get_mempolicy" },
[305] = { 3, TM, SEN(set_mempolicy), "set_mempolicy" },
[306] = { 4, 0, SEN(kexec_load), "kexec_load" },
[307] = { 6, TM, SEN(move_pages), "move_pages" },
[308] = { 3, 0, SEN(getcpu), "getcpu" },
[309] = { 6, TD, SEN(epoll_pwait), "epoll_pwait" },
[310] = { 4, TD|TF, SEN(utimensat), "utimensat" },
[311] = { 3, TD|TS, SEN(signalfd), "signalfd" },
[312] = { 2, TD, SEN(timerfd_create), "timerfd_create" },
[313] = { 1, TD, SEN(eventfd), "eventfd" },
[314] = { 4, TD, SEN(fallocate), "fallocate" },
[315] = { 4, TD, SEN(timerfd_settime), "timerfd_settime" },
[316] = { 2, TD, SEN(timerfd_gettime), "timerfd_gettime" },
[317] = { 4, TD|TS, SEN(signalfd4), "signalfd4" },
[318] = { 2, TD, SEN(eventfd2), "eventfd2" },
[319] = { 1, TD, SEN(epoll_create1), "epoll_create1" },
[320] = { 3, TD, SEN(dup3), "dup3" },
[321] = { 2, TD, SEN(pipe2), "pipe2" },
[322] = { 1, TD, SEN(inotify_init1), "inotify_init1" },
[323] = { 4, TN, SEN(accept4), "accept4" },
[324] = { 4, TD, SEN(preadv), "preadv" },
[325] = { 4, TD, SEN(pwritev), "pwritev" },
[326] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" },
[327] = { 5, TD, SEN(perf_event_open), "perf_event_open" },
[328] = { 5, TN, SEN(recvmmsg), "recvmmsg" },
[329] = { 2, TD, SEN(fanotify_init), "fanotify_init" },
[330] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" },
[331] = { 4, 0, SEN(prlimit64), "prlimit64" },
[332] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" },
[333] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" },
[334] = { 2, 0, SEN(clock_adjtime), "clock_adjtime" },
[335] = { 1, TD, SEN(syncfs), "syncfs" },
[336] = { 4, TN, SEN(sendmmsg), "sendmmsg" },
[337] = { 2, TD, SEN(setns), "setns" },
[338] = { 6, 0, SEN(process_vm_readv), "process_vm_readv" },
[339] = { 6, 0, SEN(process_vm_writev), "process_vm_writev" },
[340] = { 0, NF, SEN(printargs), "kern_features" },
[341] = { 5, 0, SEN(kcmp), "kcmp" },
[342] = { 3, TD, SEN(finit_module), "finit_module" },
[343] = { 3, 0, SEN(sched_setattr), "sched_setattr" },
[344] = { 4, 0, SEN(sched_getattr), "sched_getattr" },
[345] = { 5, TD|TF, SEN(renameat2), "renameat2" },
[346] = { 3, 0, SEN(seccomp), "seccomp", },
[347] = { 3, 0, SEN(getrandom), "getrandom", },
[348] = { 2, TD, SEN(memfd_create), "memfd_create", },
[349] = { 3, TD, SEN(bpf), "bpf", },
[350] = { 5, TD|TF|TP|SE|SI, SEN(execveat), "execveat", },
[351] = { 2, 0, SEN(membarrier), "membarrier", },
[352] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[353] = { 3, TN, SEN(bind), "bind" },
[354] = { 2, TN, SEN(listen), "listen" },
[355] = { 5, TN, SEN(setsockopt), "setsockopt" },
[356] = { 3, TM, SEN(mlock2), "mlock2" },
[357] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[358] = { 6, TD, SEN(preadv2), "preadv2" },
[359] = { 6, TD, SEN(pwritev2), "pwritev2" },
#define SYS_socket_subcall 400
#include "subcall.h"

View File

@ -1,4 +1,4 @@
#include "64/syscallent.h"
/* [244 ... 259] are arch specific */
[244] = { 1, 0, SEN(printargs), "cmpxchg_badaddr" },
[245] = { 3, 0, SEN(printargs), "cacheflush" },
[246 ... 259] = { },

View File

@ -1,6 +1,6 @@
#define ARCH_mmap mmap_4koff
#define sys_ARCH_mmap sys_mmap_4koff
#define ARCH_WANT_SYNC_FILE_RANGE2 1
#include "32/syscallent.h"
/* [244 ... 259] are arch specific */
[244] = { 1, 0, SEN(printargs), "cmpxchg_badaddr" },
[245] = { 3, 0, SEN(printargs), "cacheflush" },
[246 ... 259] = { },

View File

@ -81,6 +81,18 @@
{ "asm-generic/sockios.h", "SIOCGSTAMP", 0, 0x8906, 0 },
{ "asm-generic/sockios.h", "SIOCGSTAMPNS", 0, 0x8907, 0 },
{ "asm-generic/sockios.h", "SIOCSPGRP", 0, 0x8902, 0 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CTX", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x20 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_METADATA", _IOC_READ|_IOC_WRITE, 0x6446, 0x120 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_OP", _IOC_READ|_IOC_WRITE, 0x6450, 0x10 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6451, 0x18 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_VA", _IOC_WRITE, 0x6448, 0x28 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_INFO", _IOC_WRITE, 0x6445, 0x20 },
{ "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x6449, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_ADD_BUFS", _IOC_READ|_IOC_WRITE, 0x6416, 0x18 },
{ "drm/drm.h", "DRM_IOCTL_ADD_CTX", _IOC_READ|_IOC_WRITE, 0x6420, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_ADD_DRAW", _IOC_READ|_IOC_WRITE, 0x6427, 0x04 },
@ -118,11 +130,14 @@
{ "drm/drm.h", "DRM_IOCTL_MARK_BUFS", _IOC_WRITE, 0x6417, 0x18 },
{ "drm/drm.h", "DRM_IOCTL_MODESET_CTL", _IOC_WRITE, 0x6408, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB", _IOC_READ|_IOC_WRITE, 0x64ae, 0x1c },
{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB2", _IOC_READ|_IOC_WRITE, 0x64b8, 0x44 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ADDFB2", _IOC_READ|_IOC_WRITE, 0x64b8, 0x68 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ATOMIC", _IOC_READ|_IOC_WRITE, 0x64bc, 0x38 },
{ "drm/drm.h", "DRM_IOCTL_MODE_ATTACHMODE", _IOC_READ|_IOC_WRITE, 0x64a8, 0x48 },
{ "drm/drm.h", "DRM_IOCTL_MODE_CREATEPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64bd, 0x10 },
{ "drm/drm.h", "DRM_IOCTL_MODE_CREATE_DUMB", _IOC_READ|_IOC_WRITE, 0x64b2, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_MODE_CURSOR", _IOC_READ|_IOC_WRITE, 0x64a3, 0x1c },
{ "drm/drm.h", "DRM_IOCTL_MODE_CURSOR2", _IOC_READ|_IOC_WRITE, 0x64bb, 0x24 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DESTROYPROPBLOB", _IOC_READ|_IOC_WRITE, 0x64be, 0x04 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DESTROY_DUMB", _IOC_READ|_IOC_WRITE, 0x64b4, 0x04 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DETACHMODE", _IOC_READ|_IOC_WRITE, 0x64a9, 0x48 },
{ "drm/drm.h", "DRM_IOCTL_MODE_DIRTYFB", _IOC_READ|_IOC_WRITE, 0x64b1, 0x18 },
@ -166,11 +181,21 @@
{ "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x18 },
{ "drm/drm.h", "DRM_IOCTL_VERSION", _IOC_READ|_IOC_WRITE, 0x6400, 0x24 },
{ "drm/drm.h", "DRM_IOCTL_WAIT_VBLANK", _IOC_READ|_IOC_WRITE, 0x643a, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_FINI", _IOC_WRITE, 0x6445, 0x08 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_CPU_PREP", _IOC_WRITE, 0x6444, 0x18 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x30 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6448, 0x18 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GEM_WAIT", _IOC_WRITE, 0x6449, 0x20 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
{ "drm/etnaviv_drm.h", "DRM_IOCTL_ETNAVIV_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_EXEC", _IOC_READ|_IOC_WRITE, 0x6462, 0x08 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_GET_VER", _IOC_READ|_IOC_WRITE, 0x6460, 0x08 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST", _IOC_READ|_IOC_WRITE, 0x6461, 0x28 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_GET", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_GEM_MAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_CMD_CTRL", _IOC_READ|_IOC_WRITE, 0x6473, 0x08 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_GET_PROPERTY", _IOC_READ|_IOC_WRITE, 0x6470, 0x50 },
{ "drm/exynos_drm.h", "DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF", _IOC_READ|_IOC_WRITE, 0x6472, 0x28 },
@ -201,6 +226,8 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_BUSY", _IOC_READ|_IOC_WRITE, 0x6457, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE", _IOC_READ|_IOC_WRITE, 0x646d, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", _IOC_WRITE, 0x646e, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6474, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM", _IOC_READ|_IOC_WRITE, 0x6475, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x645b, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_ENTERVT", _IOC_NONE, 0x6459, 0x00 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_EXECBUFFER", _IOC_WRITE, 0x6454, 0x28 },
@ -211,7 +238,7 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_INIT", _IOC_WRITE, 0x6453, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_LEAVEVT", _IOC_NONE, 0x645a, 0x00 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6466, 0x0c },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x20 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x28 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_GTT", _IOC_READ|_IOC_WRITE, 0x6464, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PIN", _IOC_READ|_IOC_WRITE, 0x6455, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PREAD", _IOC_WRITE, 0x645c, 0x20 },
@ -227,7 +254,7 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6446, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID", _IOC_READ|_IOC_WRITE, 0x6465, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_RESET_STATS", _IOC_READ|_IOC_WRITE, 0x6472, 0x18 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646a, 0x14 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_GET_VBLANK_PIPE", _IOC_READ, 0x644e, 0x04 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_HWS_ADDR", _IOC_WRITE, 0x6451, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_INIT", _IOC_WRITE, 0x6440, 0x44 },
@ -352,7 +379,7 @@
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_GET_FLAGS", _IOC_READ|_IOC_WRITE, 0x644d, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_GET_TILING", _IOC_READ|_IOC_WRITE, 0x644b, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_SET_FLAGS", _IOC_READ|_IOC_WRITE, 0x644c, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GEM_SET_TILING", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_GET_SYNCPT", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
@ -362,6 +389,13 @@
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_INCR", _IOC_READ|_IOC_WRITE, 0x6443, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_READ", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
{ "drm/tegra_drm.h", "DRM_IOCTL_TEGRA_SYNCPT_WAIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_SHADER_BO", _IOC_READ|_IOC_WRITE, 0x6445, 0x18 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_WAIT_SEQNO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_AGP_INIT", _IOC_READ|_IOC_WRITE, 0x6442, 0x08 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_ALLOCMEM", _IOC_READ|_IOC_WRITE, 0x6440, 0x14 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_BLIT_SYNC", _IOC_WRITE, 0x644f, 0x08 },
@ -376,6 +410,15 @@
{ "drm/via_drm.h", "DRM_IOCTL_VIA_MAP_INIT", _IOC_READ|_IOC_WRITE, 0x6444, 0x14 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_PCICMD", _IOC_WRITE, 0x644a, 0x08 },
{ "drm/via_drm.h", "DRM_IOCTL_VIA_WAIT_IRQ", _IOC_READ|_IOC_WRITE, 0x644d, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_EXECBUFFER", _IOC_WRITE, 0x6442, 0x20 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_GET_CAPS", _IOC_READ|_IOC_WRITE, 0x6449, 0x18 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_MAP", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_RESOURCE_CREATE", _IOC_READ|_IOC_WRITE, 0x6444, 0x38 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_RESOURCE_INFO", _IOC_READ|_IOC_WRITE, 0x6445, 0x10 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_TRANSFER_FROM_HOST", _IOC_READ|_IOC_WRITE, 0x6446, 0x24 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_TRANSFER_TO_HOST", _IOC_READ|_IOC_WRITE, 0x6447, 0x24 },
{ "drm/virtgpu_drm.h", "DRM_IOCTL_VIRTGPU_WAIT", _IOC_READ|_IOC_WRITE, 0x6448, 0x08 },
{ "linux/agpgart.h", "AGPIOC_ACQUIRE", _IOC_NONE, 0x4101, 0x00 },
{ "linux/agpgart.h", "AGPIOC_ALLOCATE", _IOC_READ|_IOC_WRITE, 0x4106, 0x04 },
{ "linux/agpgart.h", "AGPIOC_BIND", _IOC_WRITE, 0x4108, 0x04 },
@ -387,6 +430,7 @@
{ "linux/agpgart.h", "AGPIOC_RESERVE", _IOC_WRITE, 0x4104, 0x04 },
{ "linux/agpgart.h", "AGPIOC_SETUP", _IOC_WRITE, 0x4103, 0x04 },
{ "linux/agpgart.h", "AGPIOC_UNBIND", _IOC_WRITE, 0x4109, 0x04 },
{ "linux/am437x-vpfe.h", "VIDIOC_AM437X_CCDC_CFG", _IOC_WRITE, 0x56c1, 0x04 },
{ "linux/android/binder.h", "BC_ACQUIRE", _IOC_WRITE, 0x6305, 0x04 },
{ "linux/android/binder.h", "BC_ACQUIRE_DONE", _IOC_WRITE, 0x6309, 0x10 },
{ "linux/android/binder.h", "BC_ACQUIRE_RESULT", _IOC_WRITE, 0x6302, 0x04 },
@ -672,6 +716,7 @@
{ "linux/dm-ioctl.h", "DM_TABLE_STATUS", _IOC_READ|_IOC_WRITE, 0xfd0c, 0x138 },
{ "linux/dm-ioctl.h", "DM_TARGET_MSG", _IOC_READ|_IOC_WRITE, 0xfd0e, 0x138 },
{ "linux/dm-ioctl.h", "DM_VERSION", _IOC_READ|_IOC_WRITE, 0xfd00, 0x138 },
{ "linux/dma-buf.h", "DMA_BUF_IOCTL_SYNC", _IOC_WRITE, 0x6200, 0x08 },
{ "linux/dn.h", "OSIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
{ "linux/dn.h", "OSIOCSNETADDR", _IOC_WRITE, 0x89e0, 0x04 },
{ "linux/dn.h", "SIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
@ -840,6 +885,7 @@
{ "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 },
{ "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x04 },
{ "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x04 },
{ "linux/fs.h", "BLKDAXGET", _IOC_NONE, 0x1281, 0x00 },
{ "linux/fs.h", "BLKDISCARD", _IOC_NONE, 0x1277, 0x00 },
{ "linux/fs.h", "BLKDISCARDZEROES", _IOC_NONE, 0x127c, 0x00 },
{ "linux/fs.h", "BLKFLSBUF", _IOC_NONE, 0x1261, 0x00 },
@ -866,6 +912,9 @@
{ "linux/fs.h", "BLKTRACETEARDOWN", _IOC_NONE, 0x1276, 0x00 },
{ "linux/fs.h", "BLKZEROOUT", _IOC_NONE, 0x127f, 0x00 },
{ "linux/fs.h", "FIBMAP", _IOC_NONE, 0x0001, 0x00 },
{ "linux/fs.h", "FICLONE", _IOC_WRITE, 0x9409, 0x04 },
{ "linux/fs.h", "FICLONERANGE", _IOC_WRITE, 0x940d, 0x20 },
{ "linux/fs.h", "FIDEDUPERANGE", _IOC_READ|_IOC_WRITE, 0x9436, 0x18 },
{ "linux/fs.h", "FIFREEZE", _IOC_READ|_IOC_WRITE, 0x5877, 0x04 },
{ "linux/fs.h", "FIGETBSZ", _IOC_NONE, 0x0002, 0x00 },
{ "linux/fs.h", "FITHAW", _IOC_READ|_IOC_WRITE, 0x5878, 0x04 },
@ -875,10 +924,15 @@
{ "linux/fs.h", "FS_IOC32_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
{ "linux/fs.h", "FS_IOC32_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
{ "linux/fs.h", "FS_IOC_FIEMAP", _IOC_READ|_IOC_WRITE, 0x660b, 0x20 },
{ "linux/fs.h", "FS_IOC_FSGETXATTR", _IOC_READ, 0x581f, 0x1c },
{ "linux/fs.h", "FS_IOC_FSSETXATTR", _IOC_WRITE, 0x5820, 0x1c },
{ "linux/fs.h", "FS_IOC_GETFLAGS", _IOC_READ, 0x6601, 0x04 },
{ "linux/fs.h", "FS_IOC_GETVERSION", _IOC_READ, 0x7601, 0x04 },
{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
{ "linux/fs.h", "FS_IOC_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
{ "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
{ "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
{ "linux/fsl-diu-fb.h", "MFB_GET_ALPHA", _IOC_READ, 0x4d00, 0x01 },
{ "linux/fsl-diu-fb.h", "MFB_GET_AOID", _IOC_READ, 0x4d04, 0x08 },
{ "linux/fsl-diu-fb.h", "MFB_GET_GAMMA", _IOC_READ, 0x4d01, 0x01 },
@ -897,6 +951,7 @@
{ "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_START", _IOC_READ|_IOC_WRITE, 0xaf03, 0x10 },
{ "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_STOP", _IOC_READ|_IOC_WRITE, 0xaf04, 0x08 },
{ "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_SETPROP", _IOC_READ|_IOC_WRITE, 0xaf08, 0x28 },
{ "linux/fuse.h", "FUSE_DEV_IOC_CLONE", _IOC_READ, 0xe500, 0x04 },
{ "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_DDCB", _IOC_READ|_IOC_WRITE, 0xa532, 0xe8 },
{ "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_RAW_DDCB", _IOC_READ|_IOC_WRITE, 0xa533, 0xe8 },
{ "linux/genwqe/genwqe_card.h", "GENWQE_GET_CARD_STATE", _IOC_READ, 0xa524, 0x04 },
@ -914,6 +969,8 @@
{ "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
{ "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
{ "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
{ "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
{ "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
{ "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
{ "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
{ "linux/gsmmux.h", "GSMIOC_GETCONF", _IOC_READ, 0x4700, 0x4c },
@ -982,6 +1039,10 @@
{ "linux/hpet.h", "HPET_IE_ON", _IOC_NONE, 0x6801, 0x00 },
{ "linux/hpet.h", "HPET_INFO", _IOC_READ, 0x6803, 0x0c },
{ "linux/hpet.h", "HPET_IRQFREQ", _IOC_WRITE, 0x6806, 0x04 },
{ "linux/hsi/cs-protocol.h", "CS_CONFIG_BUFS", _IOC_WRITE, 0x431f, 0x20 },
{ "linux/hsi/cs-protocol.h", "CS_GET_IF_VERSION", _IOC_READ, 0x431e, 0x04 },
{ "linux/hsi/cs-protocol.h", "CS_GET_STATE", _IOC_READ, 0x4315, 0x04 },
{ "linux/hsi/cs-protocol.h", "CS_SET_WAKELINE", _IOC_WRITE, 0x4317, 0x04 },
{ "linux/hsi/hsi_char.h", "HSC_GET_RX", _IOC_WRITE, 0x6b14, 0x0c },
{ "linux/hsi/hsi_char.h", "HSC_GET_TX", _IOC_WRITE, 0x6b16, 0x10 },
{ "linux/hsi/hsi_char.h", "HSC_RESET", _IOC_NONE, 0x6b10, 0x00 },
@ -1003,10 +1064,6 @@
{ "linux/i2o-dev.h", "I2OSWDL", _IOC_READ|_IOC_WRITE, 0x6905, 0x1c },
{ "linux/i2o-dev.h", "I2OSWUL", _IOC_READ|_IOC_WRITE, 0x6906, 0x1c },
{ "linux/i2o-dev.h", "I2OVALIDATE", _IOC_READ, 0x6908, 0x04 },
{ "linux/i2o.h", "BLKI2OGRSTRAT", _IOC_READ, 0x3201, 0x04 },
{ "linux/i2o.h", "BLKI2OGWSTRAT", _IOC_READ, 0x3202, 0x04 },
{ "linux/i2o.h", "BLKI2OSRSTRAT", _IOC_WRITE, 0x3203, 0x04 },
{ "linux/i2o.h", "BLKI2OSWSTRAT", _IOC_WRITE, 0x3204, 0x04 },
{ "linux/i8k.h", "I8K_BIOS_VERSION", _IOC_READ, 0x6980, 0x04 },
{ "linux/i8k.h", "I8K_FN_STATUS", _IOC_READ, 0x6983, 0x04 },
{ "linux/i8k.h", "I8K_GET_FAN", _IOC_READ|_IOC_WRITE, 0x6986, 0x04 },
@ -1023,6 +1080,7 @@
{ "linux/if_tun.h", "TUNGETFILTER", _IOC_READ, 0x54db, 0x08 },
{ "linux/if_tun.h", "TUNGETIFF", _IOC_READ, 0x54d2, 0x04 },
{ "linux/if_tun.h", "TUNGETSNDBUF", _IOC_READ, 0x54d3, 0x04 },
{ "linux/if_tun.h", "TUNGETVNETBE", _IOC_READ, 0x54df, 0x04 },
{ "linux/if_tun.h", "TUNGETVNETHDRSZ", _IOC_READ, 0x54d7, 0x04 },
{ "linux/if_tun.h", "TUNGETVNETLE", _IOC_READ, 0x54dd, 0x04 },
{ "linux/if_tun.h", "TUNSETDEBUG", _IOC_WRITE, 0x54c9, 0x04 },
@ -1037,6 +1095,7 @@
{ "linux/if_tun.h", "TUNSETQUEUE", _IOC_WRITE, 0x54d9, 0x04 },
{ "linux/if_tun.h", "TUNSETSNDBUF", _IOC_WRITE, 0x54d4, 0x04 },
{ "linux/if_tun.h", "TUNSETTXFILTER", _IOC_WRITE, 0x54d1, 0x04 },
{ "linux/if_tun.h", "TUNSETVNETBE", _IOC_WRITE, 0x54de, 0x04 },
{ "linux/if_tun.h", "TUNSETVNETHDRSZ", _IOC_WRITE, 0x54d8, 0x04 },
{ "linux/if_tun.h", "TUNSETVNETLE", _IOC_WRITE, 0x54dc, 0x04 },
{ "linux/iio/events.h", "IIO_GET_EVENT_FD_IOCTL", _IOC_READ, 0x6990, 0x04 },
@ -1044,6 +1103,7 @@
{ "linux/input.h", "EVIOCGID", _IOC_READ, 0x4502, 0x08 },
{ "linux/input.h", "EVIOCGKEYCODE", _IOC_READ, 0x4504, 0x08 },
{ "linux/input.h", "EVIOCGKEYCODE_V2", _IOC_READ, 0x4504, 0x28 },
{ "linux/input.h", "EVIOCGMASK", _IOC_READ, 0x4592, 0x10 },
{ "linux/input.h", "EVIOCGRAB", _IOC_WRITE, 0x4590, 0x04 },
{ "linux/input.h", "EVIOCGREP", _IOC_READ, 0x4503, 0x08 },
{ "linux/input.h", "EVIOCGVERSION", _IOC_READ, 0x4501, 0x04 },
@ -1053,6 +1113,7 @@
{ "linux/input.h", "EVIOCSFF", _IOC_WRITE, 0x4580, 0x2c },
{ "linux/input.h", "EVIOCSKEYCODE", _IOC_WRITE, 0x4504, 0x08 },
{ "linux/input.h", "EVIOCSKEYCODE_V2", _IOC_WRITE, 0x4504, 0x28 },
{ "linux/input.h", "EVIOCSMASK", _IOC_WRITE, 0x4593, 0x10 },
{ "linux/input.h", "EVIOCSREP", _IOC_WRITE, 0x4503, 0x08 },
{ "linux/ipmi.h", "IPMICTL_GET_MAINTENANCE_MODE_CMD", _IOC_READ, 0x691e, 0x04 },
{ "linux/ipmi.h", "IPMICTL_GET_MY_ADDRESS_CMD", _IOC_READ, 0x6912, 0x04 },
@ -1167,6 +1228,9 @@
{ "linux/joystick.h", "JSIOCSAXMAP", _IOC_WRITE, 0x6a31, 0x40 },
{ "linux/joystick.h", "JSIOCSBTNMAP", _IOC_WRITE, 0x6a33, 0x400 },
{ "linux/joystick.h", "JSIOCSCORR", _IOC_WRITE, 0x6a21, 0x24 },
{ "linux/kcov.h", "KCOV_DISABLE", _IOC_NONE, 0x6365, 0x00 },
{ "linux/kcov.h", "KCOV_ENABLE", _IOC_NONE, 0x6364, 0x00 },
{ "linux/kcov.h", "KCOV_INIT_TRACE", _IOC_READ, 0x6301, 0x04 },
{ "linux/kd.h", "GIO_CMAP", 0, 0x4B70, 0 },
{ "linux/kd.h", "GIO_FONT", 0, 0x4B60, 0 },
{ "linux/kd.h", "GIO_FONTX", 0, 0x4B6B, 0 },
@ -1213,13 +1277,22 @@
{ "linux/kd.h", "PIO_UNIMAP", 0, 0x4B67, 0 },
{ "linux/kd.h", "PIO_UNIMAPCLR", 0, 0x4B68, 0 },
{ "linux/kd.h", "PIO_UNISCRNMAP", 0, 0x4B6A, 0 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_EVENT", _IOC_READ|_IOC_WRITE, 0x4b08, 0x20 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b02, 0x58 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_ADDRESS_WATCH", _IOC_WRITE, 0x4b0f, 0x10 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_REGISTER", _IOC_WRITE, 0x4b0d, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_UNREGISTER", _IOC_WRITE, 0x4b0e, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_WAVE_CONTROL", _IOC_WRITE, 0x4b10, 0x10 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_EVENT", _IOC_WRITE, 0x4b09, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
{ "linux/kvm.h", "KVM_ALLOCATE_RMA", _IOC_READ, 0xaea9, 0x08 },
{ "linux/kvm.h", "KVM_ARM_PREFERRED_TARGET", _IOC_READ, 0xaeaf, 0x20 },
{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
@ -1235,6 +1308,7 @@
{ "linux/kvm.h", "KVM_CREATE_PIT", _IOC_NONE, 0xae64, 0x00 },
{ "linux/kvm.h", "KVM_CREATE_PIT2", _IOC_WRITE, 0xae77, 0x40 },
{ "linux/kvm.h", "KVM_CREATE_SPAPR_TCE", _IOC_WRITE, 0xaea8, 0x0c },
{ "linux/kvm.h", "KVM_CREATE_SPAPR_TCE_64", _IOC_WRITE, 0xaea8, 0x20 },
{ "linux/kvm.h", "KVM_CREATE_VCPU", _IOC_NONE, 0xae41, 0x00 },
{ "linux/kvm.h", "KVM_CREATE_VM", _IOC_NONE, 0xae01, 0x00 },
{ "linux/kvm.h", "KVM_DEASSIGN_DEV_IRQ", _IOC_WRITE, 0xae75, 0x40 },
@ -1284,9 +1358,15 @@
{ "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
{ "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
{ "linux/kvm.h", "KVM_S390_ENABLE_SIE", _IOC_NONE, 0xae06, 0x00 },
{ "linux/kvm.h", "KVM_S390_GET_IRQ_STATE", _IOC_WRITE, 0xaeb6, 0x20 },
{ "linux/kvm.h", "KVM_S390_GET_SKEYS", _IOC_WRITE, 0xaeb2, 0x40 },
{ "linux/kvm.h", "KVM_S390_INITIAL_RESET", _IOC_NONE, 0xae97, 0x00 },
{ "linux/kvm.h", "KVM_S390_INTERRUPT", _IOC_WRITE, 0xae94, 0x10 },
{ "linux/kvm.h", "KVM_S390_IRQ", _IOC_WRITE, 0xaeb4, 0x48 },
{ "linux/kvm.h", "KVM_S390_MEM_OP", _IOC_WRITE, 0xaeb1, 0x40 },
{ "linux/kvm.h", "KVM_S390_SET_INITIAL_PSW", _IOC_WRITE, 0xae96, 0x10 },
{ "linux/kvm.h", "KVM_S390_SET_IRQ_STATE", _IOC_WRITE, 0xaeb5, 0x20 },
{ "linux/kvm.h", "KVM_S390_SET_SKEYS", _IOC_WRITE, 0xaeb3, 0x40 },
{ "linux/kvm.h", "KVM_S390_STORE_STATUS", _IOC_WRITE, 0xae95, 0x04 },
{ "linux/kvm.h", "KVM_S390_UCAS_MAP", _IOC_WRITE, 0xae50, 0x18 },
{ "linux/kvm.h", "KVM_S390_UCAS_UNMAP", _IOC_WRITE, 0xae51, 0x18 },
@ -1322,6 +1402,7 @@
{ "linux/kvm.h", "KVM_SET_XCRS", _IOC_WRITE, 0xaea7, 0x188 },
{ "linux/kvm.h", "KVM_SET_XSAVE", _IOC_WRITE, 0xaea5, 0x1000 },
{ "linux/kvm.h", "KVM_SIGNAL_MSI", _IOC_WRITE, 0xaea5, 0x20 },
{ "linux/kvm.h", "KVM_SMI", _IOC_NONE, 0xaeb7, 0x00 },
{ "linux/kvm.h", "KVM_TPR_ACCESS_REPORTING", _IOC_READ|_IOC_WRITE, 0xae92, 0x28 },
{ "linux/kvm.h", "KVM_TRANSLATE", _IOC_READ|_IOC_WRITE, 0xae85, 0x18 },
{ "linux/kvm.h", "KVM_UNREGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae68, 0x10 },
@ -1329,6 +1410,46 @@
{ "linux/kvm.h", "KVM_X86_SETUP_MCE", _IOC_WRITE, 0xae9c, 0x08 },
{ "linux/kvm.h", "KVM_X86_SET_MCE", _IOC_WRITE, 0xae9e, 0x40 },
{ "linux/kvm.h", "KVM_XEN_HVM_CONFIG", _IOC_WRITE, 0xae7a, 0x38 },
{ "linux/lightnvm.h", "NVM_DEV_CREATE", _IOC_WRITE, 0x4c22, 0x80 },
{ "linux/lightnvm.h", "NVM_DEV_FACTORY", _IOC_WRITE, 0x4c25, 0x24 },
{ "linux/lightnvm.h", "NVM_DEV_INIT", _IOC_WRITE, 0x4c24, 0x2c },
{ "linux/lightnvm.h", "NVM_DEV_REMOVE", _IOC_WRITE, 0x4c23, 0x24 },
{ "linux/lightnvm.h", "NVM_GET_DEVICES", _IOC_READ, 0x4c21, 0x1000 },
{ "linux/lightnvm.h", "NVM_INFO", _IOC_READ|_IOC_WRITE, 0x4c20, 0x1000 },
{ "linux/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
{ "linux/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
{ "linux/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
{ "linux/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
{ "linux/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
{ "linux/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
{ "linux/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
{ "linux/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
{ "linux/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
{ "linux/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
{ "linux/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
{ "linux/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
{ "linux/lirc.h", "LIRC_SET_SEND_CARRIER", _IOC_WRITE, 0x6913, 0x04 },
{ "linux/lirc.h", "LIRC_SET_SEND_DUTY_CYCLE", _IOC_WRITE, 0x6915, 0x04 },
{ "linux/lirc.h", "LIRC_SET_SEND_MODE", _IOC_WRITE, 0x6911, 0x04 },
{ "linux/lirc.h", "LIRC_SET_TRANSMITTER_MASK", _IOC_WRITE, 0x6917, 0x04 },
{ "linux/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
{ "linux/loop.h", "LOOP_CHANGE_FD", 0, 0x4C06, 0 },
{ "linux/loop.h", "LOOP_CLR_FD", 0, 0x4C01, 0 },
{ "linux/loop.h", "LOOP_CTL_ADD", 0, 0x4C80, 0 },
@ -1337,6 +1458,7 @@
{ "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 },
{ "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 },
{ "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 },
{ "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 },
{ "linux/loop.h", "LOOP_SET_STATUS", 0, 0x4C02, 0 },
{ "linux/loop.h", "LOOP_SET_STATUS64", 0, 0x4C04, 0 },
@ -1358,8 +1480,11 @@
{ "linux/media.h", "MEDIA_IOC_DEVICE_INFO", _IOC_READ|_IOC_WRITE, 0x7c00, 0x100 },
{ "linux/media.h", "MEDIA_IOC_ENUM_ENTITIES", _IOC_READ|_IOC_WRITE, 0x7c01, 0x100 },
{ "linux/media.h", "MEDIA_IOC_ENUM_LINKS", _IOC_READ|_IOC_WRITE, 0x7c02, 0x1c },
{ "linux/media.h", "MEDIA_IOC_G_TOPOLOGY", _IOC_READ|_IOC_WRITE, 0x7c04, 0x48 },
{ "linux/media.h", "MEDIA_IOC_SETUP_LINK", _IOC_READ|_IOC_WRITE, 0x7c03, 0x34 },
{ "linux/mei.h", "IOCTL_MEI_CONNECT_CLIENT", _IOC_READ|_IOC_WRITE, 0x4801, 0x10 },
{ "linux/mei.h", "IOCTL_MEI_NOTIFY_GET", _IOC_READ, 0x4803, 0x04 },
{ "linux/mei.h", "IOCTL_MEI_NOTIFY_SET", _IOC_WRITE, 0x4802, 0x04 },
{ "linux/meye.h", "MEYEIOC_G_PARAMS", _IOC_READ, 0x76c0, 0x06 },
{ "linux/meye.h", "MEYEIOC_QBUF_CAPT", _IOC_WRITE, 0x76c2, 0x04 },
{ "linux/meye.h", "MEYEIOC_STILLCAPT", _IOC_NONE, 0x76c4, 0x00 },
@ -1370,6 +1495,7 @@
{ "linux/mic_ioctl.h", "MIC_VIRTIO_CONFIG_CHANGE", _IOC_READ|_IOC_WRITE, 0x7305, 0x04 },
{ "linux/mic_ioctl.h", "MIC_VIRTIO_COPY_DESC", _IOC_READ|_IOC_WRITE, 0x7302, 0x04 },
{ "linux/mmc/ioctl.h", "MMC_IOC_CMD", _IOC_READ|_IOC_WRITE, 0xb300, 0x48 },
{ "linux/mmc/ioctl.h", "MMC_IOC_MULTI_CMD", _IOC_READ|_IOC_WRITE, 0xb301, 0x08 },
{ "linux/mmtimer.h", "MMTIMER_GETBITS", _IOC_NONE, 0x6d04, 0x00 },
{ "linux/mmtimer.h", "MMTIMER_GETCOUNTER", _IOC_READ, 0x6d09, 0x04 },
{ "linux/mmtimer.h", "MMTIMER_GETFREQ", _IOC_READ, 0x6d02, 0x04 },
@ -1381,8 +1507,6 @@
{ "linux/msdos_fs.h", "FAT_IOCTL_SET_ATTRIBUTES", _IOC_WRITE, 0x7211, 0x04 },
{ "linux/msdos_fs.h", "VFAT_IOCTL_READDIR_BOTH", _IOC_READ, 0x7201, 0x230 },
{ "linux/msdos_fs.h", "VFAT_IOCTL_READDIR_SHORT", _IOC_READ, 0x7202, 0x230 },
{ "linux/msm_mdp.h", "MSMFB_BLIT", _IOC_WRITE, 0x6d02, 0x04 },
{ "linux/msm_mdp.h", "MSMFB_GRP_DISP", _IOC_WRITE, 0x6d01, 0x04 },
{ "linux/mtio.h", "MTIOCGET", _IOC_READ, 0x6d02, 0x1c },
{ "linux/mtio.h", "MTIOCPOS", _IOC_READ, 0x6d03, 0x04 },
{ "linux/mtio.h", "MTIOCTOP", _IOC_WRITE, 0x6d01, 0x08 },
@ -1417,6 +1541,17 @@
{ "linux/ncp_fs.h", "NCP_IOC_SET_SIGN_WANTED", _IOC_WRITE, 0x6e06, 0x04 },
{ "linux/ncp_fs.h", "NCP_IOC_SIGN_INIT", _IOC_READ, 0x6e05, 0x18 },
{ "linux/ncp_fs.h", "NCP_IOC_SIGN_WANTED", _IOC_READ, 0x6e06, 0x04 },
{ "linux/ndctl.h", "ND_IOCTL_ARS_CAP", _IOC_READ|_IOC_WRITE, 0x4e01, 0x20 },
{ "linux/ndctl.h", "ND_IOCTL_ARS_START", _IOC_READ|_IOC_WRITE, 0x4e02, 0x20 },
{ "linux/ndctl.h", "ND_IOCTL_ARS_STATUS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x30 },
{ "linux/ndctl.h", "ND_IOCTL_CLEAR_ERROR", _IOC_READ|_IOC_WRITE, 0x4e04, 0x20 },
{ "linux/ndctl.h", "ND_IOCTL_DIMM_FLAGS", _IOC_READ|_IOC_WRITE, 0x4e03, 0x08 },
{ "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_DATA", _IOC_READ|_IOC_WRITE, 0x4e05, 0x0c },
{ "linux/ndctl.h", "ND_IOCTL_GET_CONFIG_SIZE", _IOC_READ|_IOC_WRITE, 0x4e04, 0x0c },
{ "linux/ndctl.h", "ND_IOCTL_SET_CONFIG_DATA", _IOC_READ|_IOC_WRITE, 0x4e06, 0x08 },
{ "linux/ndctl.h", "ND_IOCTL_SMART", _IOC_READ|_IOC_WRITE, 0x4e01, 0x84 },
{ "linux/ndctl.h", "ND_IOCTL_SMART_THRESHOLD", _IOC_READ|_IOC_WRITE, 0x4e02, 0x0c },
{ "linux/ndctl.h", "ND_IOCTL_VENDOR", _IOC_READ|_IOC_WRITE, 0x4e09, 0x08 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CHANGE_CPMODE", _IOC_WRITE, 0x6e80, 0x10 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_CLEAN_SEGMENTS", _IOC_WRITE, 0x6e88, 0x78 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_DELETE_CHECKPOINT", _IOC_WRITE, 0x6e81, 0x08 },
@ -1430,10 +1565,12 @@
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
{ "linux/nilfs2_fs.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
{ "linux/nvme.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
{ "linux/nvme.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
{ "linux/nvme.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
{ "linux/nvme.h", "NVME_IOCTL_SUBMIT_IO", _IOC_WRITE, 0x4e42, 0x30 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_RESET", _IOC_NONE, 0x4e44, 0x00 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_SUBMIT_IO", _IOC_WRITE, 0x4e42, 0x30 },
{ "linux/nvme_ioctl.h", "NVME_IOCTL_SUBSYS_RESET", _IOC_NONE, 0x4e45, 0x00 },
{ "linux/nvram.h", "NVRAM_INIT", _IOC_NONE, 0x7040, 0x00 },
{ "linux/nvram.h", "NVRAM_SETCKS", _IOC_NONE, 0x7041, 0x00 },
{ "linux/omap3isp.h", "VIDIOC_OMAP3ISP_AEWB_CFG", _IOC_READ|_IOC_WRITE, 0x56c3, 0x20 },
@ -1472,6 +1609,7 @@
{ "linux/perf_event.h", "PERF_EVENT_IOC_PERIOD", _IOC_WRITE, 0x2404, 0x08 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_REFRESH", _IOC_NONE, 0x2402, 0x00 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_RESET", _IOC_NONE, 0x2403, 0x00 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_SET_BPF", _IOC_WRITE, 0x2408, 0x04 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_SET_FILTER", _IOC_WRITE, 0x2406, 0x04 },
{ "linux/perf_event.h", "PERF_EVENT_IOC_SET_OUTPUT", _IOC_NONE, 0x2405, 0x00 },
{ "linux/phantom.h", "PHN_GETREG", _IOC_READ|_IOC_WRITE, 0x7005, 0x08 },
@ -1484,6 +1622,7 @@
{ "linux/phantom.h", "PHN_SET_REG", _IOC_WRITE, 0x7001, 0x04 },
{ "linux/phantom.h", "PHN_SET_REGS", _IOC_WRITE, 0x7003, 0x04 },
{ "linux/pktcdvd.h", "PACKET_CTRL_CMD", _IOC_READ|_IOC_WRITE, 0x5801, 0x18 },
{ "linux/platform_data/media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
{ "linux/pmu.h", "PMU_IOC_CAN_SLEEP", _IOC_READ, 0x4205, 0x04 },
{ "linux/pmu.h", "PMU_IOC_GET_BACKLIGHT", _IOC_READ, 0x4201, 0x04 },
{ "linux/pmu.h", "PMU_IOC_GET_MODEL", _IOC_READ, 0x4203, 0x04 },
@ -1549,6 +1688,12 @@
{ "linux/pps.h", "PPS_GETPARAMS", _IOC_READ, 0x70a1, 0x04 },
{ "linux/pps.h", "PPS_KC_BIND", _IOC_WRITE, 0x70a5, 0x04 },
{ "linux/pps.h", "PPS_SETPARAMS", _IOC_WRITE, 0x70a2, 0x04 },
{ "linux/pr.h", "IOC_PR_CLEAR", _IOC_WRITE, 0x70cd, 0x10 },
{ "linux/pr.h", "IOC_PR_PREEMPT", _IOC_WRITE, 0x70cb, 0x18 },
{ "linux/pr.h", "IOC_PR_PREEMPT_ABORT", _IOC_WRITE, 0x70cc, 0x18 },
{ "linux/pr.h", "IOC_PR_REGISTER", _IOC_WRITE, 0x70c8, 0x18 },
{ "linux/pr.h", "IOC_PR_RELEASE", _IOC_WRITE, 0x70ca, 0x10 },
{ "linux/pr.h", "IOC_PR_RESERVE", _IOC_WRITE, 0x70c9, 0x10 },
{ "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS", _IOC_READ, 0x3d01, 0x50 },
{ "linux/ptp_clock.h", "PTP_ENABLE_PPS", _IOC_WRITE, 0x3d04, 0x04 },
{ "linux/ptp_clock.h", "PTP_EXTTS_REQUEST", _IOC_WRITE, 0x3d02, 0x10 },
@ -1556,10 +1701,12 @@
{ "linux/ptp_clock.h", "PTP_PIN_GETFUNC", _IOC_READ|_IOC_WRITE, 0x3d06, 0x60 },
{ "linux/ptp_clock.h", "PTP_PIN_SETFUNC", _IOC_WRITE, 0x3d07, 0x60 },
{ "linux/ptp_clock.h", "PTP_SYS_OFFSET", _IOC_WRITE, 0x3d05, 0x340 },
{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE", _IOC_READ|_IOC_WRITE, 0x3d08, 0x40 },
{ "linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", _IOC_READ, 0x4003, 0x04 },
{ "linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", _IOC_WRITE, 0x4004, 0x04 },
{ "linux/raid/md_u.h", "ADD_NEW_DISK", _IOC_WRITE, 0x0921, 0x14 },
{ "linux/raid/md_u.h", "CLEAR_ARRAY", _IOC_NONE, 0x0920, 0x00 },
{ "linux/raid/md_u.h", "CLUSTERED_DISK_NACK", _IOC_NONE, 0x0935, 0x00 },
{ "linux/raid/md_u.h", "GET_ARRAY_INFO", _IOC_READ, 0x0911, 0x48 },
{ "linux/raid/md_u.h", "GET_BITMAP_FILE", _IOC_READ, 0x0915, 0x1000 },
{ "linux/raid/md_u.h", "GET_DISK_INFO", _IOC_READ, 0x0912, 0x14 },
@ -1589,6 +1736,30 @@
{ "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
{ "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x04 },
{ "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
{ "linux/rio_mport_cdev.h", "RIO_ALLOC_DMA", _IOC_READ|_IOC_WRITE, 0x6d13, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_DEV_ADD", _IOC_WRITE, 0x6d17, 0x20 },
{ "linux/rio_mport_cdev.h", "RIO_DEV_DEL", _IOC_WRITE, 0x6d18, 0x20 },
{ "linux/rio_mport_cdev.h", "RIO_DISABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d0a, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_DISABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0c, 0x10 },
{ "linux/rio_mport_cdev.h", "RIO_ENABLE_DOORBELL_RANGE", _IOC_WRITE, 0x6d09, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_ENABLE_PORTWRITE_RANGE", _IOC_WRITE, 0x6d0b, 0x10 },
{ "linux/rio_mport_cdev.h", "RIO_FREE_DMA", _IOC_WRITE, 0x6d14, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_GET_EVENT_MASK", _IOC_READ, 0x6d0e, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_MAP_INBOUND", _IOC_READ|_IOC_WRITE, 0x6d11, 0x28 },
{ "linux/rio_mport_cdev.h", "RIO_MAP_OUTBOUND", _IOC_READ|_IOC_WRITE, 0x6d0f, 0x28 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_GET_PROPERTIES", _IOC_READ, 0x6d04, 0x30 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_COMPTAG_SET", _IOC_WRITE, 0x6d02, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_HDID_SET", _IOC_WRITE, 0x6d01, 0x02 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_PORT_IDX_GET", _IOC_READ, 0x6d03, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_LOCAL", _IOC_READ, 0x6d05, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_READ_REMOTE", _IOC_READ, 0x6d07, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_LOCAL", _IOC_WRITE, 0x6d06, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_MPORT_MAINT_WRITE_REMOTE", _IOC_WRITE, 0x6d08, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_SET_EVENT_MASK", _IOC_WRITE, 0x6d0d, 0x04 },
{ "linux/rio_mport_cdev.h", "RIO_TRANSFER", _IOC_READ|_IOC_WRITE, 0x6d15, 0x18 },
{ "linux/rio_mport_cdev.h", "RIO_UNMAP_INBOUND", _IOC_WRITE, 0x6d12, 0x08 },
{ "linux/rio_mport_cdev.h", "RIO_UNMAP_OUTBOUND", _IOC_WRITE, 0x6d10, 0x28 },
{ "linux/rio_mport_cdev.h", "RIO_WAIT_FOR_ASYNC", _IOC_WRITE, 0x6d16, 0x08 },
{ "linux/rtc.h", "RTC_AIE_OFF", _IOC_NONE, 0x7002, 0x00 },
{ "linux/rtc.h", "RTC_AIE_ON", _IOC_NONE, 0x7001, 0x00 },
{ "linux/rtc.h", "RTC_ALM_READ", _IOC_READ, 0x7008, 0x24 },
@ -1611,6 +1782,23 @@
{ "linux/rtc.h", "RTC_WIE_ON", _IOC_NONE, 0x700f, 0x00 },
{ "linux/rtc.h", "RTC_WKALM_RD", _IOC_READ, 0x7010, 0x28 },
{ "linux/rtc.h", "RTC_WKALM_SET", _IOC_WRITE, 0x700f, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_ACCEPTREG", _IOC_READ|_IOC_WRITE, 0x7305, 0x08 },
{ "linux/scif_ioctl.h", "SCIF_ACCEPTREQ", _IOC_READ|_IOC_WRITE, 0x7304, 0x10 },
{ "linux/scif_ioctl.h", "SCIF_BIND", _IOC_READ|_IOC_WRITE, 0x7301, 0x08 },
{ "linux/scif_ioctl.h", "SCIF_CONNECT", _IOC_READ|_IOC_WRITE, 0x7303, 0x08 },
{ "linux/scif_ioctl.h", "SCIF_FENCE_MARK", _IOC_READ|_IOC_WRITE, 0x730f, 0x10 },
{ "linux/scif_ioctl.h", "SCIF_FENCE_SIGNAL", _IOC_READ|_IOC_WRITE, 0x7311, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_FENCE_WAIT", _IOC_READ|_IOC_WRITE, 0x7310, 0x04 },
{ "linux/scif_ioctl.h", "SCIF_GET_NODEIDS", _IOC_READ|_IOC_WRITE, 0x730e, 0x18 },
{ "linux/scif_ioctl.h", "SCIF_LISTEN", _IOC_WRITE, 0x7302, 0x04 },
{ "linux/scif_ioctl.h", "SCIF_READFROM", _IOC_READ|_IOC_WRITE, 0x730a, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_RECV", _IOC_READ|_IOC_WRITE, 0x7307, 0x18 },
{ "linux/scif_ioctl.h", "SCIF_REG", _IOC_READ|_IOC_WRITE, 0x7308, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_SEND", _IOC_READ|_IOC_WRITE, 0x7306, 0x18 },
{ "linux/scif_ioctl.h", "SCIF_UNREG", _IOC_READ|_IOC_WRITE, 0x7309, 0x10 },
{ "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x28 },
{ "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x28 },
{ "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x04 },
{ "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
{ "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
@ -1805,6 +1993,9 @@
{ "linux/spi/spidev.h", "SPI_IOC_WR_MAX_SPEED_HZ", _IOC_WRITE, 0x6b04, 0x04 },
{ "linux/spi/spidev.h", "SPI_IOC_WR_MODE", _IOC_WRITE, 0x6b01, 0x01 },
{ "linux/spi/spidev.h", "SPI_IOC_WR_MODE32", _IOC_WRITE, 0x6b05, 0x04 },
{ "linux/stm.h", "STP_POLICY_ID_GET", _IOC_READ, 0x2501, 0x10 },
{ "linux/stm.h", "STP_POLICY_ID_SET", _IOC_READ|_IOC_WRITE, 0x2500, 0x10 },
{ "linux/stm.h", "STP_SET_OPTIONS", _IOC_WRITE, 0x2502, 0x08 },
{ "linux/suspend_ioctls.h", "SNAPSHOT_ALLOC_SWAP_PAGE", _IOC_READ, 0x3314, 0x08 },
{ "linux/suspend_ioctls.h", "SNAPSHOT_ATOMIC_RESTORE", _IOC_NONE, 0x3304, 0x00 },
{ "linux/suspend_ioctls.h", "SNAPSHOT_AVAIL_SWAP_SIZE", _IOC_READ, 0x3313, 0x08 },
@ -1887,15 +2078,18 @@
{ "linux/telephony.h", "PHONE_WINK", _IOC_WRITE, 0x71aa, 0x04 },
{ "linux/telephony.h", "PHONE_WINK_DURATION", _IOC_WRITE, 0x71a6, 0x04 },
{ "linux/timerfd.h", "TFD_IOC_SET_TICKS", _IOC_WRITE, 0x5400, 0x08 },
{ "linux/toshiba.h", "TOSH_SMM", _IOC_READ|_IOC_WRITE, 0x7490, 0x04 },
{ "linux/toshiba.h", "TOSHIBA_ACPI_SCI", _IOC_READ|_IOC_WRITE, 0x7491, 0x18 },
{ "linux/toshiba.h", "TOSH_SMM", _IOC_READ|_IOC_WRITE, 0x7490, 0x18 },
{ "linux/udf_fs_i.h", "UDF_GETEABLOCK", _IOC_READ, 0x6c41, 0x04 },
{ "linux/udf_fs_i.h", "UDF_GETEASIZE", _IOC_READ, 0x6c40, 0x04 },
{ "linux/udf_fs_i.h", "UDF_GETVOLIDENT", _IOC_READ, 0x6c42, 0x04 },
{ "linux/udf_fs_i.h", "UDF_RELOCATE_BLOCKS", _IOC_READ|_IOC_WRITE, 0x6c43, 0x04 },
{ "linux/uinput.h", "UI_ABS_SETUP", _IOC_WRITE, 0x5504, 0x1c },
{ "linux/uinput.h", "UI_BEGIN_FF_ERASE", _IOC_READ|_IOC_WRITE, 0x55ca, 0x0c },
{ "linux/uinput.h", "UI_BEGIN_FF_UPLOAD", _IOC_READ|_IOC_WRITE, 0x55c8, 0x60 },
{ "linux/uinput.h", "UI_DEV_CREATE", _IOC_NONE, 0x5501, 0x00 },
{ "linux/uinput.h", "UI_DEV_DESTROY", _IOC_NONE, 0x5502, 0x00 },
{ "linux/uinput.h", "UI_DEV_SETUP", _IOC_WRITE, 0x5503, 0x5c },
{ "linux/uinput.h", "UI_END_FF_ERASE", _IOC_WRITE, 0x55cb, 0x0c },
{ "linux/uinput.h", "UI_END_FF_UPLOAD", _IOC_WRITE, 0x55c9, 0x60 },
{ "linux/uinput.h", "UI_GET_VERSION", _IOC_READ, 0x552d, 0x04 },
@ -1925,6 +2119,11 @@
{ "linux/usb/iowarrior.h", "IOW_GETINFO", _IOC_READ, 0xc003, 0x28 },
{ "linux/usb/iowarrior.h", "IOW_READ", _IOC_WRITE, 0xc002, 0x04 },
{ "linux/usb/iowarrior.h", "IOW_WRITE", _IOC_WRITE, 0xc001, 0x04 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GET_CAPS", _IOC_READ, 0x5b11, 0x01 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_GOTO_LOCAL", _IOC_NONE, 0x5b14, 0x00 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_READ_STB", _IOC_READ, 0x5b12, 0x01 },
{ "linux/usb/tmc.h", "USBTMC488_IOCTL_REN_CONTROL", _IOC_WRITE, 0x5b13, 0x01 },
{ "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_IN", _IOC_NONE, 0x5b04, 0x00 },
{ "linux/usb/tmc.h", "USBTMC_IOCTL_ABORT_BULK_OUT", _IOC_NONE, 0x5b03, 0x00 },
{ "linux/usb/tmc.h", "USBTMC_IOCTL_CLEAR", _IOC_NONE, 0x5b02, 0x00 },
@ -1946,6 +2145,7 @@
{ "linux/usbdevice_fs.h", "USBDEVFS_DISCONNECT_CLAIM", _IOC_READ, 0x551b, 0x108 },
{ "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL", _IOC_READ, 0x550e, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL32", _IOC_READ, 0x550e, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_DROP_PRIVILEGES", _IOC_WRITE, 0x551e, 0x04 },
{ "linux/usbdevice_fs.h", "USBDEVFS_FREE_STREAMS", _IOC_READ, 0x551d, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_GETDRIVER", _IOC_WRITE, 0x5508, 0x104 },
{ "linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", _IOC_READ, 0x551a, 0x04 },
@ -1964,6 +2164,12 @@
{ "linux/usbdevice_fs.h", "USBDEVFS_SETINTERFACE", _IOC_READ, 0x5504, 0x08 },
{ "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB", _IOC_READ, 0x550a, 0x2c },
{ "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB32", _IOC_READ, 0x550a, 0x2a },
{ "linux/userfaultfd.h", "UFFDIO_API", _IOC_READ|_IOC_WRITE, 0xaa3f, 0x18 },
{ "linux/userfaultfd.h", "UFFDIO_COPY", _IOC_READ|_IOC_WRITE, 0xaa03, 0x28 },
{ "linux/userfaultfd.h", "UFFDIO_REGISTER", _IOC_READ|_IOC_WRITE, 0xaa00, 0x20 },
{ "linux/userfaultfd.h", "UFFDIO_UNREGISTER", _IOC_READ, 0xaa01, 0x10 },
{ "linux/userfaultfd.h", "UFFDIO_WAKE", _IOC_READ, 0xaa02, 0x10 },
{ "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 },
{ "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x58 },
{ "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x0c },
{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_DV_TIMINGS_CAP", _IOC_READ|_IOC_WRITE, 0x5664, 0x90 },
@ -2002,11 +2208,17 @@
{ "linux/vfio.h", "VFIO_IOMMU_ENABLE", _IOC_NONE, 0x3b73, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_MAP_DMA", _IOC_NONE, 0x3b71, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_REGISTER_MEMORY", _IOC_NONE, 0x3b75, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_CREATE", _IOC_NONE, 0x3b77, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_TCE_REMOVE", _IOC_NONE, 0x3b78, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY", _IOC_NONE, 0x3b76, 0x00 },
{ "linux/vfio.h", "VFIO_IOMMU_UNMAP_DMA", _IOC_NONE, 0x3b72, 0x00 },
{ "linux/vfio.h", "VFIO_SET_IOMMU", _IOC_NONE, 0x3b66, 0x00 },
{ "linux/vhost.h", "VHOST_GET_FEATURES", _IOC_READ, 0xaf00, 0x08 },
{ "linux/vhost.h", "VHOST_GET_VRING_BASE", _IOC_READ|_IOC_WRITE, 0xaf12, 0x08 },
{ "linux/vhost.h", "VHOST_GET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf24, 0x08 },
{ "linux/vhost.h", "VHOST_GET_VRING_ENDIAN", _IOC_WRITE, 0xaf14, 0x08 },
{ "linux/vhost.h", "VHOST_NET_SET_BACKEND", _IOC_WRITE, 0xaf30, 0x08 },
{ "linux/vhost.h", "VHOST_RESET_OWNER", _IOC_NONE, 0xaf02, 0x00 },
{ "linux/vhost.h", "VHOST_SCSI_CLEAR_ENDPOINT", _IOC_WRITE, 0xaf41, 0xe8 },
@ -2021,7 +2233,9 @@
{ "linux/vhost.h", "VHOST_SET_OWNER", _IOC_NONE, 0xaf01, 0x00 },
{ "linux/vhost.h", "VHOST_SET_VRING_ADDR", _IOC_WRITE, 0xaf11, 0x28 },
{ "linux/vhost.h", "VHOST_SET_VRING_BASE", _IOC_WRITE, 0xaf12, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_BUSYLOOP_TIMEOUT", _IOC_WRITE, 0xaf23, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_CALL", _IOC_WRITE, 0xaf21, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_ENDIAN", _IOC_WRITE, 0xaf13, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
{ "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
@ -2211,55 +2425,24 @@
{ "linux/wireless.h", "SIOCSIWSTATS", 0, 0x8B0E, 0 },
{ "linux/wireless.h", "SIOCSIWTHRSPY", 0, 0x8B12, 0 },
{ "linux/wireless.h", "SIOCSIWTXPOW", 0, 0x8B26, 0 },
{ "media/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
{ "media/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
{ "media/bt819.h", "BT819_FIFO_RESET_LOW", _IOC_NONE, 0x6200, 0x00 },
{ "media/davinci/vpfe_capture.h", "VPFE_CMD_S_CCDC_RAW_PARAMS", _IOC_WRITE, 0x56c1, 0x04 },
{ "media/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
{ "media/lirc.h", "LIRC_GET_FEATURES", _IOC_READ, 0x6900, 0x04 },
{ "media/lirc.h", "LIRC_GET_LENGTH", _IOC_READ, 0x690f, 0x04 },
{ "media/lirc.h", "LIRC_GET_MAX_FILTER_PULSE", _IOC_READ, 0x690b, 0x04 },
{ "media/lirc.h", "LIRC_GET_MAX_FILTER_SPACE", _IOC_READ, 0x690d, 0x04 },
{ "media/lirc.h", "LIRC_GET_MAX_TIMEOUT", _IOC_READ, 0x6909, 0x04 },
{ "media/lirc.h", "LIRC_GET_MIN_FILTER_PULSE", _IOC_READ, 0x690a, 0x04 },
{ "media/lirc.h", "LIRC_GET_MIN_FILTER_SPACE", _IOC_READ, 0x690c, 0x04 },
{ "media/lirc.h", "LIRC_GET_MIN_TIMEOUT", _IOC_READ, 0x6908, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_CARRIER", _IOC_READ, 0x6904, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_DUTY_CYCLE", _IOC_READ, 0x6906, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_MODE", _IOC_READ, 0x6902, 0x04 },
{ "media/lirc.h", "LIRC_GET_REC_RESOLUTION", _IOC_READ, 0x6907, 0x04 },
{ "media/lirc.h", "LIRC_GET_SEND_CARRIER", _IOC_READ, 0x6903, 0x04 },
{ "media/lirc.h", "LIRC_GET_SEND_DUTY_CYCLE", _IOC_READ, 0x6905, 0x04 },
{ "media/lirc.h", "LIRC_GET_SEND_MODE", _IOC_READ, 0x6901, 0x04 },
{ "media/lirc.h", "LIRC_NOTIFY_DECODE", _IOC_NONE, 0x6920, 0x00 },
{ "media/lirc.h", "LIRC_SETUP_END", _IOC_NONE, 0x6922, 0x00 },
{ "media/lirc.h", "LIRC_SETUP_START", _IOC_NONE, 0x6921, 0x00 },
{ "media/lirc.h", "LIRC_SET_MEASURE_CARRIER_MODE", _IOC_WRITE, 0x691d, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_CARRIER", _IOC_WRITE, 0x6914, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_CARRIER_RANGE", _IOC_WRITE, 0x691f, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_DUTY_CYCLE", _IOC_WRITE, 0x6916, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_DUTY_CYCLE_RANGE", _IOC_WRITE, 0x691e, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_FILTER", _IOC_WRITE, 0x691c, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_FILTER_PULSE", _IOC_WRITE, 0x691a, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_FILTER_SPACE", _IOC_WRITE, 0x691b, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_MODE", _IOC_WRITE, 0x6912, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_TIMEOUT", _IOC_WRITE, 0x6918, 0x04 },
{ "media/lirc.h", "LIRC_SET_REC_TIMEOUT_REPORTS", _IOC_WRITE, 0x6919, 0x04 },
{ "media/lirc.h", "LIRC_SET_SEND_CARRIER", _IOC_WRITE, 0x6913, 0x04 },
{ "media/lirc.h", "LIRC_SET_SEND_DUTY_CYCLE", _IOC_WRITE, 0x6915, 0x04 },
{ "media/lirc.h", "LIRC_SET_SEND_MODE", _IOC_WRITE, 0x6911, 0x04 },
{ "media/lirc.h", "LIRC_SET_TRANSMITTER_MASK", _IOC_WRITE, 0x6917, 0x04 },
{ "media/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
{ "media/saa6588.h", "SAA6588_CMD_CLOSE", _IOC_WRITE, 0x5202, 0x04 },
{ "media/saa6588.h", "SAA6588_CMD_POLL", _IOC_READ, 0x5204, 0x04 },
{ "media/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
{ "media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
{ "media/drv-intf/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
{ "media/i2c/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
{ "media/i2c/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
{ "media/i2c/bt819.h", "BT819_FIFO_RESET_LOW", _IOC_NONE, 0x6200, 0x00 },
{ "media/i2c/saa6588.h", "SAA6588_CMD_CLOSE", _IOC_WRITE, 0x5202, 0x04 },
{ "media/i2c/saa6588.h", "SAA6588_CMD_POLL", _IOC_READ, 0x5204, 0x04 },
{ "media/i2c/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
{ "media/v4l2-common.h", "TUNER_SET_CONFIG", _IOC_WRITE, 0x645c, 0x08 },
{ "media/v4l2-common.h", "VIDIOC_INT_RESET", _IOC_WRITE, 0x6466, 0x04 },
{ "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x88 },
{ "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY", _IOC_WRITE, 0x7600, 0x04 },
{ "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY", _IOC_WRITE, 0x7601, 0x04 },
{ "misc/cxl.h", "CXL_IOCTL_DOWNLOAD_IMAGE", _IOC_WRITE, 0xca0a, 0x40 },
{ "misc/cxl.h", "CXL_IOCTL_GET_AFU_ID", _IOC_READ, 0xca02, 0x40 },
{ "misc/cxl.h", "CXL_IOCTL_GET_PROCESS_ELEMENT", _IOC_READ, 0xca01, 0x04 },
{ "misc/cxl.h", "CXL_IOCTL_START_WORK", _IOC_WRITE, 0xca00, 0x40 },
{ "misc/cxl.h", "CXL_IOCTL_VALIDATE_IMAGE", _IOC_WRITE, 0xca0b, 0x40 },
{ "mtd/mtd-abi.h", "ECCGETLAYOUT", _IOC_READ, 0x4d11, 0x148 },
{ "mtd/mtd-abi.h", "ECCGETSTATS", _IOC_READ, 0x4d12, 0x10 },
{ "mtd/mtd-abi.h", "MEMERASE", _IOC_WRITE, 0x4d02, 0x08 },
@ -2324,10 +2507,21 @@
{ "net/bluetooth/rfcomm.h", "RFCOMMGETDEVLIST", _IOC_READ, 0x52d2, 0x04 },
{ "net/bluetooth/rfcomm.h", "RFCOMMRELEASEDEV", _IOC_WRITE, 0x52c9, 0x04 },
{ "net/bluetooth/rfcomm.h", "RFCOMMSTEALDLC", _IOC_WRITE, 0x52dc, 0x04 },
{ "net/nfc/nci_core.h", "NCIUARTSETDRIVER", _IOC_WRITE, 0x5500, 0x04 },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
{ "rdma/ib_user_mad.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_RECOVER_AFU", _IOC_READ|_IOC_WRITE, 0xca85, 0x78 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_RELEASE", _IOC_READ|_IOC_WRITE, 0xca82, 0x68 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_USER_DIRECT", _IOC_READ|_IOC_WRITE, 0xca81, 0x70 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_USER_VIRTUAL", _IOC_READ|_IOC_WRITE, 0xca87, 0x78 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VERIFY", _IOC_READ|_IOC_WRITE, 0xca84, 0x90 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VLUN_CLONE", _IOC_READ|_IOC_WRITE, 0xca89, 0x70 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_VLUN_RESIZE", _IOC_READ|_IOC_WRITE, 0xca88, 0x78 },
{ "scsi/scsi.h", "SCSI_IOCTL_GET_BUS_NUMBER", 0, 0x5386, 0 },
{ "scsi/scsi.h", "SCSI_IOCTL_GET_IDLUN", 0, 0x5382, 0 },
{ "scsi/scsi.h", "SCSI_IOCTL_GET_PCI", 0, 0x5387, 0 },
@ -2370,7 +2564,6 @@
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_PORT_INFO", _IOC_READ|_IOC_WRITE, 0x5322, 0xa4 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", _IOC_READ|_IOC_WRITE, 0x5349, 0x4c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5334, 0x8c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER", _IOC_READ|_IOC_WRITE, 0x5343, 0x00 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS", _IOC_READ|_IOC_WRITE, 0x5340, 0x5c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO", _IOC_READ|_IOC_WRITE, 0x5341, 0x2c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER", _IOC_READ|_IOC_WRITE, 0x5345, 0x60 },
@ -2386,7 +2579,6 @@
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_PORT_INFO", _IOC_WRITE, 0x5323, 0xa4 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", _IOC_WRITE, 0x534a, 0x4c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_INFO", _IOC_READ|_IOC_WRITE, 0x5335, 0x8c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER", _IOC_WRITE, 0x5344, 0x00 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", _IOC_WRITE, 0x5342, 0x2c },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER", _IOC_WRITE, 0x5346, 0x60 },
{ "sound/asequencer.h", "SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT", _IOC_WRITE, 0x5330, 0x50 },
@ -2442,6 +2634,7 @@
{ "sound/asound.h", "SNDRV_PCM_IOCTL_REWIND", _IOC_WRITE, 0x4146, 0x04 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_START", _IOC_NONE, 0x4142, 0x00 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_STATUS", _IOC_READ, 0x4120, 0x80 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_STATUS_EXT", _IOC_READ|_IOC_WRITE, 0x4124, 0x80 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_SW_PARAMS", _IOC_READ|_IOC_WRITE, 0x4113, 0x68 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_SYNC_PTR", _IOC_READ|_IOC_WRITE, 0x4123, 0x88 },
{ "sound/asound.h", "SNDRV_PCM_IOCTL_TSTAMP", _IOC_WRITE, 0x4102, 0x04 },
@ -2539,8 +2732,7 @@
{ "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES", _IOC_NONE, 0x4883, 0x00 },
{ "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_RESET_SAMPLES", _IOC_NONE, 0x4882, 0x00 },
{ "sound/sfnt_info.h", "SNDRV_EMUX_IOCTL_VERSION", _IOC_READ, 0x4880, 0x04 },
{ "staging/android/android_alarm.h", "ANDROID_ALARM_SET_RTC", _IOC_WRITE, 0x6105, 0x10 },
{ "staging/android/android_alarm.h", "ANDROID_ALARM_WAIT", _IOC_NONE, 0x6101, 0x00 },
{ "sound/usb_stream.h", "SNDRV_USB_STREAM_IOCTL_SET_PARAMS", _IOC_WRITE, 0x4890, 0x10 },
{ "staging/android/ashmem.h", "ASHMEM_GET_NAME", _IOC_READ, 0x7702, 0x100 },
{ "staging/android/ashmem.h", "ASHMEM_GET_PIN_STATUS", _IOC_NONE, 0x7709, 0x00 },
{ "staging/android/ashmem.h", "ASHMEM_GET_PROT_MASK", _IOC_NONE, 0x7706, 0x00 },
@ -2561,17 +2753,10 @@
{ "staging/android/ion_test.h", "ION_IOC_TEST_DMA_MAPPING", _IOC_WRITE, 0x49f1, 0x20 },
{ "staging/android/ion_test.h", "ION_IOC_TEST_KERNEL_MAPPING", _IOC_WRITE, 0x49f2, 0x20 },
{ "staging/android/ion_test.h", "ION_IOC_TEST_SET_FD", _IOC_NONE, 0x49f0, 0x00 },
{ "staging/android/logger.h", "LOGGER_FLUSH_LOG", _IOC_NONE, 0xae04, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_LOG_BUF_SIZE", _IOC_NONE, 0xae01, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_LOG_LEN", _IOC_NONE, 0xae02, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_NEXT_ENTRY_LEN", _IOC_NONE, 0xae03, 0x00 },
{ "staging/android/logger.h", "LOGGER_GET_VERSION", _IOC_NONE, 0xae05, 0x00 },
{ "staging/android/logger.h", "LOGGER_SET_VERSION", _IOC_NONE, 0xae06, 0x00 },
{ "staging/android/sw_sync.h", "SW_SYNC_IOC_CREATE_FENCE", _IOC_READ|_IOC_WRITE, 0x5700, 0x28 },
{ "staging/android/sw_sync.h", "SW_SYNC_IOC_INC", _IOC_WRITE, 0x5701, 0x04 },
{ "staging/android/sync.h", "SYNC_IOC_FENCE_INFO", _IOC_READ|_IOC_WRITE, 0x3e02, 0x28 },
{ "staging/android/sync.h", "SYNC_IOC_MERGE", _IOC_READ|_IOC_WRITE, 0x3e01, 0x28 },
{ "staging/android/sync.h", "SYNC_IOC_WAIT", _IOC_WRITE, 0x3e00, 0x04 },
{ "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
{ "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
{ "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
@ -2613,5 +2798,11 @@
{ "xen/evtchn.h", "IOCTL_EVTCHN_NOTIFY", _IOC_NONE, 0x4504, 0x04 },
{ "xen/evtchn.h", "IOCTL_EVTCHN_RESET", _IOC_NONE, 0x4505, 0x00 },
{ "xen/evtchn.h", "IOCTL_EVTCHN_UNBIND", _IOC_NONE, 0x4503, 0x04 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_GET_OFFSET_FOR_VADDR", _IOC_NONE, 0x4702, 0x18 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_GRANT_COPY", _IOC_NONE, 0x4708, 0x08 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_MAP_GRANT_REF", _IOC_NONE, 0x4700, 0x18 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_SET_MAX_GRANTS", _IOC_NONE, 0x4703, 0x04 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_SET_UNMAP_NOTIFY", _IOC_NONE, 0x4707, 0x10 },
{ "xen/gntdev.h", "IOCTL_GNTDEV_UNMAP_GRANT_REF", _IOC_NONE, 0x4701, 0x10 },
{ "xen/xenbus_dev.h", "IOCTL_XENBUS_BACKEND_EVTCHN", _IOC_NONE, 0x4200, 0x00 },
{ "xen/xenbus_dev.h", "IOCTL_XENBUS_BACKEND_SETUP", _IOC_NONE, 0x4201, 0x00 },

View File

@ -37,7 +37,7 @@
[ 36] = { 2, 0, SEN(getitimer), "getitimer" },
[ 37] = { 1, 0, SEN(alarm), "alarm" },
[ 38] = { 3, 0, SEN(setitimer), "setitimer" },
[ 39] = { 0, 0, SEN(getpid), "getpid" },
[ 39] = { 0, NF, SEN(getpid), "getpid" },
[ 40] = { 4, TD|TN, SEN(sendfile64), "sendfile" },
[ 41] = { 3, TN, SEN(socket), "socket" },
[ 42] = { 3, TN, SEN(connect), "connect" },
@ -45,7 +45,7 @@
[ 44] = { 6, TN, SEN(sendto), "sendto" },
[ 45] = { 6, TN, SEN(printargs), "64:recvfrom" },
[ 46] = { 3, TN, SEN(printargs), "64:sendmsg" },
[ 47] = { 5, TN, SEN(printargs), "64:recvmsg" },
[ 47] = { 3, TN, SEN(printargs), "64:recvmsg" },
[ 48] = { 2, TN, SEN(shutdown), "shutdown" },
[ 49] = { 3, TN, SEN(bind), "bind" },
[ 50] = { 2, TN, SEN(listen), "listen" },
@ -93,7 +93,7 @@
[ 92] = { 3, TF, SEN(chown), "chown" },
[ 93] = { 3, TD, SEN(fchown), "fchown" },
[ 94] = { 3, TF, SEN(chown), "lchown" },
[ 95] = { 1, 0, SEN(umask), "umask" },
[ 95] = { 1, NF, SEN(umask), "umask" },
[ 96] = { 2, 0, SEN(gettimeofday), "gettimeofday" },
[ 97] = { 2, 0, SEN(getrlimit), "getrlimit" },
[ 98] = { 2, 0, SEN(getrusage), "getrusage" },
@ -108,7 +108,7 @@
[107] = { 0, NF, SEN(geteuid), "geteuid" },
[108] = { 0, NF, SEN(getegid), "getegid" },
[109] = { 2, 0, SEN(setpgid), "setpgid" },
[110] = { 0, 0, SEN(getppid), "getppid" },
[110] = { 0, NF, SEN(getppid), "getppid" },
[111] = { 0, 0, SEN(getpgrp), "getpgrp" },
[112] = { 0, 0, SEN(setsid), "setsid" },
[113] = { 2, 0, SEN(setreuid), "setreuid" },
@ -133,7 +133,7 @@
[132] = { 2, TF, SEN(utime), "utime" },
[133] = { 3, TF, SEN(mknod), "mknod" },
[134] = { 1, TF, SEN(printargs), "64:uselib" },
[135] = { 1, 0, SEN(personality), "personality" },
[135] = { 1, NF, SEN(personality), "personality" },
[136] = { 2, 0, SEN(ustat), "ustat" },
[137] = { 2, TF, SEN(statfs), "statfs" },
[138] = { 2, TD, SEN(fstatfs), "fstatfs" },
@ -184,7 +184,7 @@
[183] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[184] = { 3, 0, SEN(tuxcall), "tuxcall" },
[185] = { 3, 0, SEN(security), "security" },
[186] = { 0, 0, SEN(gettid), "gettid" },
[186] = { 0, NF, SEN(gettid), "gettid" },
[187] = { 3, TD, SEN(readahead), "readahead" },
[188] = { 5, TF, SEN(setxattr), "setxattr" },
[189] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -324,7 +324,10 @@
[323] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[324] = { 2, 0, SEN(membarrier), "membarrier", },
[325] = { 3, TM, SEN(mlock2), "mlock2" },
[326 ... 511] = { },
[326] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[327] = { 6, TD, SEN(printargs), "64:preadv2" },
[328] = { 6, TD, SEN(printargs), "64:pwritev2" },
[327 ... 511] = { },
/*
* x32-specific system call numbers start at 512 to avoid cache impact
* for native 64-bit operation.

View File

@ -37,7 +37,7 @@
[ 36] = { 2, 0, SEN(getitimer), "getitimer" },
[ 37] = { 1, 0, SEN(alarm), "alarm" },
[ 38] = { 3, 0, SEN(setitimer), "setitimer" },
[ 39] = { 0, 0, SEN(getpid), "getpid" },
[ 39] = { 0, NF, SEN(getpid), "getpid" },
[ 40] = { 4, TD|TN, SEN(sendfile64), "sendfile" },
[ 41] = { 3, TN, SEN(socket), "socket" },
[ 42] = { 3, TN, SEN(connect), "connect" },
@ -93,7 +93,7 @@
[ 92] = { 3, TF, SEN(chown), "chown" },
[ 93] = { 3, TD, SEN(fchown), "fchown" },
[ 94] = { 3, TF, SEN(chown), "lchown" },
[ 95] = { 1, 0, SEN(umask), "umask" },
[ 95] = { 1, NF, SEN(umask), "umask" },
[ 96] = { 2, 0, SEN(gettimeofday), "gettimeofday" },
[ 97] = { 2, 0, SEN(getrlimit), "getrlimit" },
[ 98] = { 2, 0, SEN(getrusage), "getrusage" },
@ -108,7 +108,7 @@
[107] = { 0, NF, SEN(geteuid), "geteuid" },
[108] = { 0, NF, SEN(getegid), "getegid" },
[109] = { 2, 0, SEN(setpgid), "setpgid" },
[110] = { 0, 0, SEN(getppid), "getppid" },
[110] = { 0, NF, SEN(getppid), "getppid" },
[111] = { 0, 0, SEN(getpgrp), "getpgrp" },
[112] = { 0, 0, SEN(setsid), "setsid" },
[113] = { 2, 0, SEN(setreuid), "setreuid" },
@ -133,7 +133,7 @@
[132] = { 2, TF, SEN(utime), "utime" },
[133] = { 3, TF, SEN(mknod), "mknod" },
[134] = { 1, TF, SEN(uselib), "uselib" },
[135] = { 1, 0, SEN(personality), "personality" },
[135] = { 1, NF, SEN(personality), "personality" },
[136] = { 2, 0, SEN(ustat), "ustat" },
[137] = { 2, TF, SEN(statfs), "statfs" },
[138] = { 2, TD, SEN(fstatfs), "fstatfs" },
@ -184,7 +184,7 @@
[183] = { 5, 0, SEN(afs_syscall), "afs_syscall" },
[184] = { 3, 0, SEN(tuxcall), "tuxcall" },
[185] = { 3, 0, SEN(security), "security" },
[186] = { 0, 0, SEN(gettid), "gettid" },
[186] = { 0, NF, SEN(gettid), "gettid" },
[187] = { 3, TD, SEN(readahead), "readahead" },
[188] = { 5, TF, SEN(setxattr), "setxattr" },
[189] = { 5, TF, SEN(setxattr), "lsetxattr" },
@ -324,3 +324,6 @@
[323] = { 1, TD, SEN(userfaultfd), "userfaultfd", },
[324] = { 2, 0, SEN(membarrier), "membarrier", },
[325] = { 3, TM, SEN(mlock2), "mlock2" },
[326] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[327] = { 6, TD, SEN(preadv2), "preadv2" },
[328] = { 6, TD, SEN(pwritev2), "pwritev2" },

View File

@ -51,7 +51,7 @@
[ 55] = { 2, TD, SEN(fstat64), "fstat64" },
[ 56] = { 2, TD, SEN(flock), "flock" },
[ 57] = { 2, TF, SEN(access), "access" },
[ 58] = { 1, 0, SEN(umask), "umask" },
[ 58] = { 1, NF, SEN(umask), "umask" },
[ 59] = { 3, TD, SEN(getdents), "getdents" },
[ 60] = { 3, TD, SEN(getdents64), "getdents64" },
[ 61] = { 3, TD, SEN(fcntl64), "fcntl64" },
@ -81,7 +81,7 @@
[ 85] = { 2, TM, SEN(munlock), "munlock" },
[ 86] = { 1, TM, SEN(mlockall), "mlockall" },
[ 87] = { 0, TM, SEN(munlockall), "munlockall" },
[ 88] = { 4, TM|SI, SEN(mremap), "mremap" },
[ 88] = { 5, TM|SI, SEN(mremap), "mremap" },
[ 89] = { 3, TM, SEN(msync), "msync" },
[ 90] = { 3, TM, SEN(mincore), "mincore" },
[ 91] = { 3, TM, SEN(madvise), "madvise" },
@ -113,18 +113,18 @@
[117] = { 3, TF|TP|SE|SI, SEN(execve), "execve" },
[118] = { 1, TP|SE, SEN(exit), "exit" },
[119] = { 1, TP|SE, SEN(exit), "exit_group" },
[120] = { 0, 0, SEN(getpid), "getpid" },
[120] = { 0, NF, SEN(getpid), "getpid" },
[121] = { 4, TP, SEN(wait4), "wait4" },
[122] = { 5, TP, SEN(waitid), "waitid" },
[123] = { 2, TS, SEN(kill), "kill" },
[124] = { 2, TS, SEN(kill), "tkill" },
[125] = { 3, TS, SEN(tgkill), "tgkill" },
[126] = { 1, 0, SEN(set_tid_address), "set_tid_address" },
[127] = { 0, 0, SEN(gettid), "gettid" },
[127] = { 0, NF, SEN(gettid), "gettid" },
[128] = { 0, 0, SEN(setsid), "setsid" },
[129] = { 1, 0, SEN(getsid), "getsid" },
[130] = { 5, 0, SEN(prctl), "prctl" },
[131] = { 1, 0, SEN(personality), "personality" },
[131] = { 1, NF, SEN(personality), "personality" },
[132] = { 2, 0, SEN(getpriority), "getpriority" },
[133] = { 3, 0, SEN(setpriority), "setpriority" },
[134] = { 3, 0, SEN(setitimer), "setitimer" },
@ -143,7 +143,7 @@
[147] = { 3, 0, SEN(getresgid), "getresgid" },
[148] = { 2, 0, SEN(setpgid), "setpgid" },
[149] = { 1, 0, SEN(getpgid), "getpgid" },
[150] = { 0, 0, SEN(getppid), "getppid" },
[150] = { 0, NF, SEN(getppid), "getppid" },
[151] = { 0, 0, SEN(getpgrp), "getpgrp" },
[152 ... 153] = { },
[154] = { 1, 0, SEN(times), "times" },
@ -183,7 +183,7 @@
[188] = { 2, 0, SEN(setrlimit), "setrlimit" },
[189] = { 2, 0, SEN(getrlimit), "getrlimit" },
[190] = { 2, 0, SEN(getrusage), "getrusage" },
[191] = { 5, 0, SEN(futex), "futex" },
[191] = { 6, 0, SEN(futex), "futex" },
[192] = { 2, 0, SEN(gettimeofday), "gettimeofday" },
[193] = { 2, 0, SEN(settimeofday), "settimeofday" },
[194] = { 1, 0, SEN(adjtimex), "adjtimex" },
@ -195,15 +195,15 @@
[200] = { 3, 0, SEN(syslog), "syslog" },
[201] = { 0, 0, SEN(vhangup), "vhangup" },
[202] = { 1, TF, SEN(uselib), "uselib" },
[203] = { 3, 0, SEN(reboot), "reboot" },
[203] = { 4, 0, SEN(reboot), "reboot" },
[204] = { 4, TF, SEN(quotactl), "quotactl" },
[205] = { 3, 0, SEN(nfsservctl), "nfsservctl" },
[206] = { 1, 0, SEN(sysctl), "_sysctl" },
[207] = { 2, 0, SEN(bdflush), "bdflush" },
[208] = { 1, 0, SEN(uname), "uname" },
[209] = { 1, 0, SEN(sysinfo), "sysinfo" },
[210] = { 2, 0, SEN(init_module), "init_module" },
[211] = { 1, 0, SEN(delete_module), "delete_module" },
[210] = { 3, 0, SEN(init_module), "init_module" },
[211] = { 2, 0, SEN(delete_module), "delete_module" },
[212] = { 2, 0, SEN(sched_setparam), "sched_setparam" },
[213] = { 2, 0, SEN(sched_getparam), "sched_getparam" },
[214] = { 3, 0, SEN(sched_setscheduler), "sched_setscheduler" },
@ -247,7 +247,7 @@
[254] = { 4, 0, SEN(lookup_dcookie), "lookup_dcookie" },
[255] = { },
[256] = { 5, 0, SEN(add_key), "add_key" },
[257] = { 5, 0, SEN(request_key), "request_key" },
[257] = { 4, 0, SEN(request_key), "request_key" },
[258] = { 5, 0, SEN(keyctl), "keyctl" },
[259] = { },
[260] = { 5, TD, SEN(readahead), "readahead" },
@ -270,10 +270,10 @@
[277] = { 3, TD, SEN(inotify_add_watch), "inotify_add_watch" },
[278] = { 2, TD, SEN(inotify_rm_watch), "inotify_rm_watch" },
[279] = { 1, TD, SEN(inotify_init1), "inotify_init1" },
[280] = { 0, 0, SEN(getcpu), "getcpu" },
[280] = { 3, 0, SEN(getcpu), "getcpu" },
[281] = { 4, 0, SEN(kexec_load), "kexec_load" },
[282] = { 2, 0, SEN(ioprio_set), "ioprio_set" },
[283] = { 3, 0, SEN(ioprio_get), "ioprio_get" },
[282] = { 3, 0, SEN(ioprio_set), "ioprio_set" },
[283] = { 2, 0, SEN(ioprio_get), "ioprio_get" },
[284] = { 2, 0, SEN(set_robust_list), "set_robust_list" },
[285] = { 3, 0, SEN(get_robust_list), "get_robust_list" },
[286 ... 287] = { },
@ -285,12 +285,12 @@
[293] = { 5, TD|TF, SEN(linkat), "linkat" },
[294] = { 3, TD|TF, SEN(symlinkat), "symlinkat" },
[295] = { 4, TD|TF, SEN(readlinkat), "readlinkat" },
[296] = { 0, TD|TF, SEN(utimensat), "utimensat" },
[296] = { 4, TD|TF, SEN(utimensat), "utimensat" },
[297] = { 5, TD|TF, SEN(fchownat), "fchownat" },
[298] = { 4, TD|TF, SEN(futimesat), "futimesat" },
[298] = { 3, TD|TF, SEN(futimesat), "futimesat" },
[299] = { 4, TD|TF, SEN(newfstatat), "fstatat64" },
[300] = { 4, TD|TF, SEN(fchmodat), "fchmodat" },
[301] = { 4, TD|TF, SEN(faccessat), "faccessat" },
[300] = { 3, TD|TF, SEN(fchmodat), "fchmodat" },
[301] = { 3, TD|TF, SEN(faccessat), "faccessat" },
[302 ... 303] = { },
[304] = { 3, TD|TS, SEN(signalfd), "signalfd" },
[305] = { },

60
loop.c
View File

@ -41,40 +41,40 @@ decode_loop_info(struct tcb *tcp, const long addr)
if (umove_or_printaddr(tcp, addr, &info))
return;
tprintf("{number=%d", info.lo_number);
tprintf("{lo_number=%d", info.lo_number);
if (!abbrev(tcp)) {
tprintf(", device=%#lx, inode=%lu, rdevice=%#lx",
tprintf(", lo_device=%#lx, lo_inode=%lu, lo_rdevice=%#lx",
(unsigned long) info.lo_device,
info.lo_inode,
(unsigned long) info.lo_rdevice);
}
tprintf(", offset=%#x", info.lo_offset);
tprintf(", lo_offset=%#x", info.lo_offset);
if (!abbrev(tcp) || info.lo_encrypt_type != LO_CRYPT_NONE) {
tprints(", encrypt_type=");
tprints(", lo_encrypt_type=");
printxval(loop_crypt_type_options, info.lo_encrypt_type,
"LO_CRYPT_???");
tprintf(", encrypt_key_size=%d", info.lo_encrypt_key_size);
tprintf(", lo_encrypt_key_size=%d", info.lo_encrypt_key_size);
}
tprints(", flags=");
tprints(", lo_flags=");
printflags(loop_flags_options, info.lo_flags, "LO_FLAGS_???");
tprints(", name=");
tprints(", lo_name=");
print_quoted_string(info.lo_name, LO_NAME_SIZE,
QUOTE_0_TERMINATED);
if (!abbrev(tcp) || info.lo_encrypt_type != LO_CRYPT_NONE) {
tprints(", encrypt_key=");
tprints(", lo_encrypt_key=");
print_quoted_string((void *) info.lo_encrypt_key,
LO_KEY_SIZE, 0);
}
if (!abbrev(tcp))
tprintf(", init={%#lx, %#lx}"
", reserved={%#x, %#x, %#x, %#x}}",
tprintf(", lo_init=[%#lx, %#lx]"
", reserved=[%#x, %#x, %#x, %#x]}",
info.lo_init[0], info.lo_init[1],
info.reserved[0], info.reserved[1],
info.reserved[2], info.reserved[3]);
@ -92,9 +92,9 @@ decode_loop_info64(struct tcb *tcp, const long addr)
return;
if (!abbrev(tcp)) {
tprintf("{device=%" PRIu64 ", inode=%" PRIu64 ", "
"rdevice=%" PRIu64 ", offset=%#" PRIx64 ", "
"sizelimit=%" PRIu64 ", number=%" PRIu32,
tprintf("{lo_device=%" PRIu64 ", lo_inode=%" PRIu64
", lo_rdevice=%" PRIu64 ", lo_offset=%#" PRIx64
", lo_sizelimit=%" PRIu64 ", lo_number=%" PRIu32,
(uint64_t) info64.lo_device,
(uint64_t) info64.lo_inode,
(uint64_t) info64.lo_rdevice,
@ -102,37 +102,37 @@ decode_loop_info64(struct tcb *tcp, const long addr)
(uint64_t) info64.lo_sizelimit,
(uint32_t) info64.lo_number);
} else {
tprintf("{offset=%#" PRIx64 ", number=%" PRIu32,
tprintf("{lo_offset=%#" PRIx64 ", lo_number=%" PRIu32,
(uint64_t) info64.lo_offset,
(uint32_t) info64.lo_number);
}
if (!abbrev(tcp) || info64.lo_encrypt_type != LO_CRYPT_NONE) {
tprints(", encrypt_type=");
tprints(", lo_encrypt_type=");
printxval(loop_crypt_type_options, info64.lo_encrypt_type,
"LO_CRYPT_???");
tprintf(", encrypt_key_size=%" PRIu32,
tprintf(", lo_encrypt_key_size=%" PRIu32,
info64.lo_encrypt_key_size);
}
tprints(", flags=");
tprints(", lo_flags=");
printflags(loop_flags_options, info64.lo_flags, "LO_FLAGS_???");
tprints(", file_name=");
tprints(", lo_file_name=");
print_quoted_string((void *) info64.lo_file_name,
LO_NAME_SIZE, QUOTE_0_TERMINATED);
if (!abbrev(tcp) || info64.lo_encrypt_type != LO_CRYPT_NONE) {
tprints(", crypt_name=");
tprints(", lo_crypt_name=");
print_quoted_string((void *) info64.lo_crypt_name,
LO_NAME_SIZE, QUOTE_0_TERMINATED);
tprints(", encrypt_key=");
tprints(", lo_encrypt_key=");
print_quoted_string((void *) info64.lo_encrypt_key,
LO_KEY_SIZE, 0);
}
if (!abbrev(tcp))
tprintf(", init={%#" PRIx64 ", %#" PRIx64 "}}",
tprintf(", lo_init=[%#" PRIx64 ", %#" PRIx64 "]}",
(uint64_t) info64.lo_init[0],
(uint64_t) info64.lo_init[1]);
else
@ -146,23 +146,19 @@ loop_ioctl(struct tcb *tcp, const unsigned int code, long arg)
return RVAL_DECODED;
switch (code) {
case LOOP_SET_STATUS:
decode_loop_info(tcp, arg);
break;
case LOOP_GET_STATUS:
if (entering(tcp))
return 0;
/* fall through */
case LOOP_SET_STATUS:
decode_loop_info(tcp, arg);
break;
case LOOP_SET_STATUS64:
decode_loop_info64(tcp, arg);
break;
case LOOP_GET_STATUS64:
if (entering(tcp))
return 0;
/* fall through */
case LOOP_SET_STATUS64:
decode_loop_info64(tcp, arg);
break;
@ -191,6 +187,12 @@ loop_ioctl(struct tcb *tcp, const unsigned int code, long arg)
break;
#endif
#ifdef LOOP_SET_DIRECT_IO
case LOOP_SET_DIRECT_IO:
tprintf(", %lu", arg);
break;
#endif
default:
return RVAL_DECODED;
}

51
lseek.c
View File

@ -7,7 +7,7 @@
* Copyright (c) 2009 Andreas Schwab <schwab@redhat.com>
* Copyright (c) 2012 H.J. Lu <hongjiu.lu@intel.com>
* Copyright (c) 2013 Denys Vlasenko <vda.linux@googlemail.com>
* Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
* Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -47,10 +47,9 @@
#if defined(LINUX_MIPSN32) || defined(X32)
SYS_FUNC(lseek)
{
long long offset;
int whence;
printfd(tcp, tcp->u_arg[0]);
long long offset;
# ifdef X32
/* tcp->ext_arg is not initialized for i386 personality */
if (current_personality == 1)
@ -58,11 +57,9 @@ SYS_FUNC(lseek)
else
# endif
offset = tcp->ext_arg[1];
whence = tcp->u_arg[2];
if (whence == SEEK_SET)
tprintf(", %llu, ", offset);
else
tprintf(", %lld, ", offset);
int whence = tcp->u_arg[2];
tprintf(", %lld, ", offset);
printxval(whence_codes, whence, "SEEK_???");
return RVAL_DECODED | RVAL_LUDECIMAL;
@ -70,16 +67,23 @@ SYS_FUNC(lseek)
#else
SYS_FUNC(lseek)
{
long offset;
int whence;
printfd(tcp, tcp->u_arg[0]);
offset = tcp->u_arg[1];
whence = tcp->u_arg[2];
if (whence == SEEK_SET)
tprintf(", %lu, ", offset);
else
tprintf(", %ld, ", offset);
long offset =
# if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
# ifdef X86_64
current_personality == 1 ?
(long)(int) tcp->u_arg[1] : tcp->u_arg[1];
# else
current_wordsize == 4 ?
(long)(int) tcp->u_arg[1] : tcp->u_arg[1];
# endif
# else
tcp->u_arg[1];
# endif
int whence = tcp->u_arg[2];
tprintf(", %ld, ", offset);
printxval(whence_codes, whence, "SEEK_???");
return RVAL_DECODED | RVAL_UDECIMAL;
@ -103,14 +107,9 @@ SYS_FUNC(llseek)
{
if (entering(tcp)) {
printfd(tcp, tcp->u_arg[0]);
if (tcp->u_arg[4] == SEEK_SET)
tprintf(", %llu, ",
((long long) tcp->u_arg[1]) << 32 |
(unsigned long long) (unsigned) tcp->u_arg[2]);
else
tprintf(", %lld, ",
((long long) tcp->u_arg[1]) << 32 |
(unsigned long long) (unsigned) tcp->u_arg[2]);
tprintf(", %lld, ",
(widen_to_ull(tcp->u_arg[1]) << 32)
| widen_to_ull(tcp->u_arg[2]));
} else {
printnum_int64(tcp, tcp->u_arg[3], "%" PRIu64);
tprints(", ");

274
m4/ax_code_coverage.m4 Normal file
View File

@ -0,0 +1,274 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_code_coverage.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_CODE_COVERAGE()
#
# DESCRIPTION
#
# Defines CODE_COVERAGE_CPPFLAGS, CODE_COVERAGE_CFLAGS,
# CODE_COVERAGE_CXXFLAGS and CODE_COVERAGE_LDFLAGS which should be
# included in the CPPFLAGS, CFLAGS CXXFLAGS and LIBS/LDFLAGS variables of
# every build target (program or library) which should be built with code
# coverage support. Also defines CODE_COVERAGE_RULES which should be
# substituted in your Makefile; and $enable_code_coverage which can be
# used in subsequent configure output. CODE_COVERAGE_ENABLED is defined
# and substituted, and corresponds to the value of the
# --enable-code-coverage option, which defaults to being disabled.
#
# Test also for gcov program and create GCOV variable that could be
# substituted.
#
# Note that all optimisation flags in CFLAGS must be disabled when code
# coverage is enabled.
#
# Usage example:
#
# configure.ac:
#
# AX_CODE_COVERAGE
#
# Makefile.am:
#
# @CODE_COVERAGE_RULES@
# my_program_LIBS = ... $(CODE_COVERAGE_LDFLAGS) ...
# my_program_CPPFLAGS = ... $(CODE_COVERAGE_CPPFLAGS) ...
# my_program_CFLAGS = ... $(CODE_COVERAGE_CFLAGS) ...
# my_program_CXXFLAGS = ... $(CODE_COVERAGE_CXXFLAGS) ...
#
# This results in a "check-code-coverage" rule being added to any
# Makefile.am which includes "@CODE_COVERAGE_RULES@" (assuming the module
# has been configured with --enable-code-coverage). Running `make
# check-code-coverage` in that directory will run the module's test suite
# (`make check`) and build a code coverage report detailing the code which
# was touched, then print the URI for the report.
#
# This code was derived from Makefile.decl in GLib, originally licenced
# under LGPLv2.1+.
#
# LICENSE
#
# Copyright (c) 2012, 2016 Philip Withnall
# Copyright (c) 2012 Xan Lopez
# Copyright (c) 2012 Christian Persch
# Copyright (c) 2012 Paolo Borelli
# Copyright (c) 2012 Dan Winship
# Copyright (c) 2015 Bastien ROUCARIES
#
# This library is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or (at
# your option) any later version.
#
# This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#serial 16
AC_DEFUN([AX_CODE_COVERAGE],[
dnl Check for --enable-code-coverage
AC_REQUIRE([AC_PROG_SED])
# allow to override gcov location
AC_ARG_WITH([gcov],
[AS_HELP_STRING([--with-gcov[=GCOV]], [use given GCOV for coverage (GCOV=gcov).])],
[_AX_CODE_COVERAGE_GCOV_PROG_WITH=$with_gcov],
[_AX_CODE_COVERAGE_GCOV_PROG_WITH=gcov])
AC_MSG_CHECKING([whether to build with code coverage support])
AC_ARG_ENABLE([code-coverage],
AS_HELP_STRING([--enable-code-coverage],
[Whether to enable code coverage support]),,
enable_code_coverage=no)
AM_CONDITIONAL([CODE_COVERAGE_ENABLED], [test x$enable_code_coverage = xyes])
AC_SUBST([CODE_COVERAGE_ENABLED], [$enable_code_coverage])
AC_MSG_RESULT($enable_code_coverage)
AS_IF([ test "$enable_code_coverage" = "yes" ], [
# check for gcov
AC_CHECK_TOOL([GCOV],
[$_AX_CODE_COVERAGE_GCOV_PROG_WITH],
[:])
AS_IF([test "X$GCOV" = "X:"],
[AC_MSG_ERROR([gcov is needed to do coverage])])
AC_SUBST([GCOV])
dnl Check if gcc is being used
AS_IF([ test "$GCC" = "no" ], [
AC_MSG_ERROR([not compiling with gcc, which is required for gcov code coverage])
])
# List of supported lcov versions.
lcov_version_list="1.6 1.7 1.8 1.9 1.10 1.11 1.12"
AC_CHECK_PROG([LCOV], [lcov], [lcov])
AC_CHECK_PROG([GENHTML], [genhtml], [genhtml])
AS_IF([ test "$LCOV" ], [
AC_CACHE_CHECK([for lcov version], ax_cv_lcov_version, [
ax_cv_lcov_version=invalid
lcov_version=`$LCOV -v 2>/dev/null | $SED -e 's/^.* //'`
for lcov_check_version in $lcov_version_list; do
if test "$lcov_version" = "$lcov_check_version"; then
ax_cv_lcov_version="$lcov_check_version (ok)"
fi
done
])
], [
lcov_msg="To enable code coverage reporting you must have one of the following lcov versions installed: $lcov_version_list"
AC_MSG_ERROR([$lcov_msg])
])
case $ax_cv_lcov_version in
""|invalid[)]
lcov_msg="You must have one of the following versions of lcov: $lcov_version_list (found: $lcov_version)."
AC_MSG_ERROR([$lcov_msg])
LCOV="exit 0;"
;;
esac
AS_IF([ test -z "$GENHTML" ], [
AC_MSG_ERROR([Could not find genhtml from the lcov package])
])
dnl Build the code coverage flags
CODE_COVERAGE_CPPFLAGS="-DNDEBUG"
CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
CODE_COVERAGE_LDFLAGS="-lgcov"
AC_SUBST([CODE_COVERAGE_CPPFLAGS])
AC_SUBST([CODE_COVERAGE_CFLAGS])
AC_SUBST([CODE_COVERAGE_CXXFLAGS])
AC_SUBST([CODE_COVERAGE_LDFLAGS])
])
[CODE_COVERAGE_RULES='
# Code coverage
#
# Optional:
# - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage reporting.
# Multiple directories may be specified, separated by whitespace.
# (Default: $(top_builddir))
# - CODE_COVERAGE_OUTPUT_FILE: Filename and path for the .info file generated
# by lcov for code coverage. (Default:
# $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info)
# - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage
# reports to be created. (Default:
# $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage)
# - CODE_COVERAGE_BRANCH_COVERAGE: Set to 1 to enforce branch coverage,
# set to 0 to disable it and leave empty to stay with the default.
# (Default: empty)
# - CODE_COVERAGE_LCOV_SHOPTS_DEFAULT: Extra options shared between both lcov
# instances. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
# - CODE_COVERAGE_LCOV_SHOPTS: Extra options to shared between both lcov
# instances. (Default: $CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
# - CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH: --gcov-tool pathtogcov
# - CODE_COVERAGE_LCOV_OPTIONS_DEFAULT: Extra options to pass to the
# collecting lcov instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
# - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the collecting lcov
# instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
# - CODE_COVERAGE_LCOV_RMOPTS_DEFAULT: Extra options to pass to the filtering
# lcov instance. (Default: empty)
# - CODE_COVERAGE_LCOV_RMOPTS: Extra options to pass to the filtering lcov
# instance. (Default: $CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
# - CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT: Extra options to pass to the
# genhtml instance. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
# - CODE_COVERAGE_GENHTML_OPTIONS: Extra options to pass to the genhtml
# instance. (Default: $CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
# - CODE_COVERAGE_IGNORE_PATTERN: Extra glob pattern of files to ignore
#
# The generated report will be titled using the $(PACKAGE_NAME) and
# $(PACKAGE_VERSION). In order to add the current git hash to the title,
# use the git-version-gen script, available online.
# Optional variables
CODE_COVERAGE_DIRECTORY ?= $(top_builddir)
CODE_COVERAGE_OUTPUT_FILE ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info
CODE_COVERAGE_OUTPUT_DIRECTORY ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage
CODE_COVERAGE_BRANCH_COVERAGE ?=
CODE_COVERAGE_LCOV_SHOPTS_DEFAULT ?= $(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
--rc lcov_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
CODE_COVERAGE_LCOV_SHOPTS ?= $(CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH ?= --gcov-tool "$(GCOV)"
CODE_COVERAGE_LCOV_OPTIONS_DEFAULT ?= $(CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
CODE_COVERAGE_LCOV_OPTIONS ?= $(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
CODE_COVERAGE_LCOV_RMOPTS_DEFAULT ?=
CODE_COVERAGE_LCOV_RMOPTS ?= $(CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT ?=\
$(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
--rc genhtml_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
CODE_COVERAGE_GENHTML_OPTIONS ?= $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULTS)
CODE_COVERAGE_IGNORE_PATTERN ?=
code_coverage_v_lcov_cap = $(code_coverage_v_lcov_cap_$(V))
code_coverage_v_lcov_cap_ = $(code_coverage_v_lcov_cap_$(AM_DEFAULT_VERBOSITY))
code_coverage_v_lcov_cap_0 = @echo " LCOV --capture"\
$(CODE_COVERAGE_OUTPUT_FILE);
code_coverage_v_lcov_ign = $(code_coverage_v_lcov_ign_$(V))
code_coverage_v_lcov_ign_ = $(code_coverage_v_lcov_ign_$(AM_DEFAULT_VERBOSITY))
code_coverage_v_lcov_ign_0 = @echo " LCOV --remove /tmp/*"\
$(CODE_COVERAGE_IGNORE_PATTERN);
code_coverage_v_genhtml = $(code_coverage_v_genhtml_$(V))
code_coverage_v_genhtml_ = $(code_coverage_v_genhtml_$(AM_DEFAULT_VERBOSITY))
code_coverage_v_genhtml_0 = @echo " GEN " $(CODE_COVERAGE_OUTPUT_DIRECTORY);
code_coverage_quiet = $(code_coverage_quiet_$(V))
code_coverage_quiet_ = $(code_coverage_quiet_$(AM_DEFAULT_VERBOSITY))
code_coverage_quiet_0 = --quiet
# sanitizes the test-name: replaces with underscores: dashes and dots
code_coverage_sanitize = $(subst -,_,$(subst .,_,$(1)))
# Use recursive makes in order to ignore errors during check
check-code-coverage:
ifeq ($(CODE_COVERAGE_ENABLED),yes)
-$(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k check
$(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) code-coverage-capture
else
@echo "Need to reconfigure with --enable-code-coverage"
endif
# Capture code coverage data
code-coverage-capture: code-coverage-capture-hook
ifeq ($(CODE_COVERAGE_ENABLED),yes)
$(code_coverage_v_lcov_cap)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(call code_coverage_sanitize,$(PACKAGE_NAME)-$(PACKAGE_VERSION))" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_OPTIONS)
$(code_coverage_v_lcov_ign)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" $(CODE_COVERAGE_IGNORE_PATTERN) --output-file "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_RMOPTS)
-@rm -f $(CODE_COVERAGE_OUTPUT_FILE).tmp
$(code_coverage_v_genhtml)LANG=C $(GENHTML) $(code_coverage_quiet) $(addprefix --prefix ,$(CODE_COVERAGE_DIRECTORY)) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS)
@echo "file://$(abs_builddir)/$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html"
else
@echo "Need to reconfigure with --enable-code-coverage"
endif
# Hook rule executed before code-coverage-capture, overridable by the user
code-coverage-capture-hook:
ifeq ($(CODE_COVERAGE_ENABLED),yes)
clean: code-coverage-clean
distclean: code-coverage-clean
code-coverage-clean:
-$(LCOV) --directory $(top_builddir) -z
-rm -rf $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_FILE).tmp $(CODE_COVERAGE_OUTPUT_DIRECTORY)
-find . \( -name "*.gcda" -o -name "*.gcno" -o -name "*.gcov" \) -delete
endif
GITIGNOREFILES ?=
GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY)
A''M_DISTCHECK_CONFIGURE_FLAGS ?=
A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage
.PHONY: check-code-coverage code-coverage-capture code-coverage-capture-hook code-coverage-clean
']
AC_SUBST([CODE_COVERAGE_RULES])
m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([CODE_COVERAGE_RULES])])
])

View File

@ -177,9 +177,12 @@ __EOF__
#include <linux/serial.h>
__EOF__
;;
*drm/*_drm.h)
drm/sis_drm.h)
echo '#include <drm/drm.h>'
;;
*drm/*_drm.h)
echo '#include <drm/drm.h>' > "$tmpdir/drm.h"
;;
fbio.h|*/fbio.h)
cat <<'__EOF__'
#include <linux/fb.h>
@ -228,7 +231,7 @@ __EOF__
*linux/isdn_ppp.h|*linux/gsmmux.h)
echo '#include <linux/if.h>'
;;
*media/saa6588.h)
*media*/saa6588.h)
echo 'typedef struct poll_table_struct poll_table;'
;;
*linux/ivtvfb.h|*linux/meye.h|*media/*.h)
@ -236,26 +239,28 @@ __EOF__
;;
*linux/kvm.h)
cat <<'__EOF__'
#if defined __x86_64__ || defined __i386__
#if !(defined __powerpc__)
struct kvm_allocate_rma { __u32 unused[2]; };
struct kvm_create_spapr_tce { __u32 unused[3]; };
struct kvm_create_spapr_tce_64 { __u32 unused[8]; };
struct kvm_get_htab_fd { __u32 unused[8]; };
struct kvm_rtas_token_args { __u8 unused[128]; };
#endif
#if !(defined __arm64__ || defined __arm__)
struct kvm_vcpu_init { __u32 unused[8]; };
#elif defined __arm64__ || defined __arm__
struct kvm_allocate_rma { __u32 unused[2]; };
#endif
#if !(defined __x86_64__ || defined __i386__)
struct kvm_cpuid { __u32 unused[2]; };
struct kvm_cpuid2 { __u32 unused[2]; };
struct kvm_create_spapr_tce { __u32 unused[3]; };
struct kvm_debugregs { __u32 unused[32]; };
struct kvm_get_htab_fd { __u32 unused[8]; };
struct kvm_lapic_state { __u32 unused[256]; };
struct kvm_memory_alias { __u32 unused[8]; };
struct kvm_msr_list { __u32 unused[1]; };
struct kvm_msrs { __u32 unused[2]; };
struct kvm_pit_state { __u32 unused[18]; };
struct kvm_pit_state2 { __u32 unused[28]; };
struct kvm_rtas_token_args { __u32 unused[128]; };
struct kvm_vcpu_events { __u32 unused[16]; };
struct kvm_x86_mce { __u32 unused[16]; };
struct kvm_xcrs { __u32 unused[98]; };
@ -298,6 +303,12 @@ __EOF__
*video/sstfb.h)
echo 'struct fb_info;'
;;
*xen/gntdev.h)
cat <<'__EOF__'
typedef uint32_t grant_ref_t;
typedef uint16_t domid_t;
__EOF__
;;
*xen/interface/*.h)
return 0 # false positives
;;
@ -327,7 +338,7 @@ __EOF__
mkdir -p "$tmpdir/${f%/*}"
# Hard workarounds for some processed files. Very fragile.
case "$f" in
*acpi/*|*linux/i2o.h|*media/exynos-fimc.h|*media/v4l2-subdev.h|*net/bluetooth/*)
*acpi/*|*linux/i2o.h|*media*/exynos-fimc.h|*media/v4l2-subdev.h|*net/bluetooth/*|net/nfc/nci_core.h)
# Fetch macros only.
grep "${r_define}${r_cmd_name}" < "$s" > "$tmpdir/$f"
;;

337
mem.c
View File

@ -57,24 +57,24 @@ SYS_FUNC(brk)
static void
print_mmap(struct tcb *tcp, long *u_arg, unsigned long long offset)
{
/* addr */
printaddr(u_arg[0]);
/* len */
tprintf(", %lu, ", u_arg[1]);
/* prot */
printflags(mmap_prot, u_arg[2], "PROT_???");
const unsigned long addr = u_arg[0];
const unsigned long len = u_arg[1];
const unsigned long prot = u_arg[2];
const unsigned long flags = u_arg[3];
const int fd = u_arg[4];
printaddr(addr);
tprintf(", %lu, ", len);
printflags_long(mmap_prot, prot, "PROT_???");
tprints(", ");
/* flags */
#ifdef MAP_TYPE
printxval(mmap_flags, u_arg[3] & MAP_TYPE, "MAP_???");
addflags(mmap_flags, u_arg[3] & ~MAP_TYPE);
printxval_long(mmap_flags, flags & MAP_TYPE, "MAP_???");
addflags(mmap_flags, flags & ~MAP_TYPE);
#else
printflags(mmap_flags, u_arg[3], "MAP_???");
printflags_long(mmap_flags, flags, "MAP_???");
#endif
tprints(", ");
/* fd */
printfd(tcp, u_arg[4]);
/* offset */
printfd(tcp, fd);
tprintf(", %#llx", offset);
}
@ -86,37 +86,31 @@ print_mmap(struct tcb *tcp, long *u_arg, unsigned long long offset)
* Confused? Me too!
*/
#if defined AARCH64 || defined ARM \
|| defined I386 || defined X86_64 || defined X32 \
|| defined M68K \
|| defined S390 || defined S390X
/* Params are pointed to by u_arg[0], offset is in bytes */
SYS_FUNC(old_mmap)
{
long u_arg[6];
#if defined(IA64)
/*
* IA64 processes never call this routine, they only use the
* new 'sys_mmap' interface. Only IA32 processes come here.
*/
int i;
unsigned narrow_arg[6];
if (umoven(tcp, tcp->u_arg[0], sizeof(narrow_arg), narrow_arg) == -1)
return 0;
# if defined AARCH64 || defined X86_64
/* We are here only in a 32-bit personality. */
unsigned int narrow_arg[6];
if (umove_or_printaddr(tcp, tcp->u_arg[0], &narrow_arg))
return RVAL_DECODED | RVAL_HEX;
unsigned int i;
for (i = 0; i < 6; i++)
u_arg[i] = (unsigned long) narrow_arg[i];
#elif defined(X86_64)
/* We are here only in personality 1 (i386) */
int i;
unsigned narrow_arg[6];
if (umoven(tcp, tcp->u_arg[0], sizeof(narrow_arg), narrow_arg) == -1)
return 0;
for (i = 0; i < 6; ++i)
u_arg[i] = (unsigned long) narrow_arg[i];
#else
if (umoven(tcp, tcp->u_arg[0], sizeof(u_arg), u_arg) == -1)
return 0;
#endif
u_arg[i] = narrow_arg[i];
# else
if (umove_or_printaddr(tcp, tcp->u_arg[0], &u_arg))
return RVAL_DECODED | RVAL_HEX;
# endif
print_mmap(tcp, u_arg, (unsigned long) u_arg[5]);
return RVAL_DECODED | RVAL_HEX;
}
#endif /* old_mmap architectures */
#if defined(S390)
/* Params are pointed to by u_arg[0], offset is in pages */
@ -191,7 +185,7 @@ SYS_FUNC(mprotect)
{
printaddr(tcp->u_arg[0]);
tprintf(", %lu, ", tcp->u_arg[1]);
printflags(mmap_prot, tcp->u_arg[2], "PROT_???");
printflags_long(mmap_prot, tcp->u_arg[2], "PROT_???");
return RVAL_DECODED;
}
@ -202,7 +196,7 @@ SYS_FUNC(mremap)
{
printaddr(tcp->u_arg[0]);
tprintf(", %lu, %lu, ", tcp->u_arg[1], tcp->u_arg[2]);
printflags(mremap_flags, tcp->u_arg[3], "MREMAP_???");
printflags_long(mremap_flags, tcp->u_arg[3], "MREMAP_???");
#ifdef MREMAP_FIXED
if ((tcp->u_arg[3] & (MREMAP_MAYMOVE | MREMAP_FIXED)) ==
(MREMAP_MAYMOVE | MREMAP_FIXED)) {
@ -264,15 +258,18 @@ SYS_FUNC(mincore)
printaddr(tcp->u_arg[0]);
tprintf(", %lu, ", tcp->u_arg[1]);
} else {
unsigned long i, len;
char *vec = NULL;
const unsigned long page_size = get_pagesize();
const unsigned long page_mask = page_size - 1;
unsigned long len = tcp->u_arg[1];
unsigned char *vec = NULL;
len = tcp->u_arg[1];
len = len / page_size + (len & page_mask ? 1 : 0);
if (syserror(tcp) || !verbose(tcp) ||
!tcp->u_arg[2] || !(vec = malloc(len)) ||
umoven(tcp, tcp->u_arg[2], len, vec) < 0)
printaddr(tcp->u_arg[2]);
else {
unsigned long i;
tprints("[");
for (i = 0; i < len; i++) {
if (abbrev(tcp) && i >= max_strlen) {
@ -292,250 +289,54 @@ SYS_FUNC(mincore)
|| defined SPARC || defined SPARC64
SYS_FUNC(getpagesize)
{
if (exiting(tcp))
return RVAL_HEX;
return 0;
return RVAL_DECODED | RVAL_HEX;
}
#endif
SYS_FUNC(remap_file_pages)
{
printaddr(tcp->u_arg[0]);
tprintf(", %lu, ", tcp->u_arg[1]);
printflags(mmap_prot, tcp->u_arg[2], "PROT_???");
tprintf(", %lu, ", tcp->u_arg[3]);
const unsigned long addr = tcp->u_arg[0];
const unsigned long size = tcp->u_arg[1];
const unsigned long prot = tcp->u_arg[2];
const unsigned long pgoff = tcp->u_arg[3];
const unsigned long flags = tcp->u_arg[4];
printaddr(addr);
tprintf(", %lu, ", size);
printflags_long(mmap_prot, prot, "PROT_???");
tprintf(", %lu, ", pgoff);
#ifdef MAP_TYPE
printxval(mmap_flags, tcp->u_arg[4] & MAP_TYPE, "MAP_???");
addflags(mmap_flags, tcp->u_arg[4] & ~MAP_TYPE);
printxval_long(mmap_flags, flags & MAP_TYPE, "MAP_???");
addflags(mmap_flags, flags & ~MAP_TYPE);
#else
printflags(mmap_flags, tcp->u_arg[4], "MAP_???");
printflags_long(mmap_flags, flags, "MAP_???");
#endif
return RVAL_DECODED;
}
#define MPOL_DEFAULT 0
#define MPOL_PREFERRED 1
#define MPOL_BIND 2
#define MPOL_INTERLEAVE 3
#define MPOL_F_NODE (1<<0)
#define MPOL_F_ADDR (1<<1)
#define MPOL_MF_STRICT (1<<0)
#define MPOL_MF_MOVE (1<<1)
#define MPOL_MF_MOVE_ALL (1<<2)
#include "xlat/policies.h"
#include "xlat/mbindflags.h"
#include "xlat/mempolicyflags.h"
#include "xlat/move_pages_flags.h"
static void
get_nodes(struct tcb *tcp, unsigned long ptr, unsigned long maxnodes, int err)
{
unsigned long nlongs, size, end;
nlongs = (maxnodes + 8 * sizeof(long) - 1) / (8 * sizeof(long));
size = nlongs * sizeof(long);
end = ptr + size;
if (nlongs == 0 || ((err || verbose(tcp)) && (size * 8 == maxnodes)
&& (end > ptr))) {
unsigned long n, cur, abbrev_end;
int failed = 0;
if (abbrev(tcp)) {
abbrev_end = ptr + max_strlen * sizeof(long);
if (abbrev_end < ptr)
abbrev_end = end;
} else {
abbrev_end = end;
}
tprints(", {");
for (cur = ptr; cur < end; cur += sizeof(long)) {
if (cur > ptr)
tprints(", ");
if (cur >= abbrev_end) {
tprints("...");
break;
}
if (umoven(tcp, cur, sizeof(n), &n) < 0) {
tprints("?");
failed = 1;
break;
}
tprintf("%#0*lx", (int) sizeof(long) * 2 + 2, n);
}
tprints("}");
if (failed) {
tprints(" ");
printaddr(ptr);
}
} else {
tprints(" ");
printaddr(ptr);
}
tprintf(", %lu", maxnodes);
}
SYS_FUNC(mbind)
{
printaddr(tcp->u_arg[0]);
tprintf(", %lu, ", tcp->u_arg[1]);
printxval(policies, tcp->u_arg[2], "MPOL_???");
get_nodes(tcp, tcp->u_arg[3], tcp->u_arg[4], 0);
tprints(", ");
printflags(mbindflags, tcp->u_arg[5], "MPOL_???");
return RVAL_DECODED;
}
SYS_FUNC(set_mempolicy)
{
printxval(policies, tcp->u_arg[0], "MPOL_???");
get_nodes(tcp, tcp->u_arg[1], tcp->u_arg[2], 0);
return RVAL_DECODED;
}
SYS_FUNC(get_mempolicy)
{
if (exiting(tcp)) {
int pol;
if (!umove_or_printaddr(tcp, tcp->u_arg[0], &pol))
printxval(policies, pol, "MPOL_???");
get_nodes(tcp, tcp->u_arg[1], tcp->u_arg[2], syserror(tcp));
tprints(", ");
printaddr(tcp->u_arg[3]);
tprints(", ");
printflags(mempolicyflags, tcp->u_arg[4], "MPOL_???");
}
return 0;
}
SYS_FUNC(migrate_pages)
{
tprintf("%ld, ", (long) (pid_t) tcp->u_arg[0]);
get_nodes(tcp, tcp->u_arg[2], tcp->u_arg[1], 0);
tprints(", ");
get_nodes(tcp, tcp->u_arg[3], tcp->u_arg[1], 0);
return RVAL_DECODED;
}
SYS_FUNC(move_pages)
{
if (entering(tcp)) {
unsigned long npages = tcp->u_arg[1];
tprintf("%ld, %lu, ", tcp->u_arg[0], npages);
if (tcp->u_arg[2] == 0)
tprints("NULL, ");
else {
unsigned int i;
long puser = tcp->u_arg[2];
tprints("{");
for (i = 0; i < npages; ++i) {
void *p;
if (i > 0)
tprints(", ");
if (umove(tcp, puser, &p) < 0) {
tprints("???");
break;
}
tprintf("%p", p);
puser += sizeof(void *);
}
tprints("}, ");
}
if (tcp->u_arg[3] == 0)
tprints("NULL, ");
else {
unsigned int i;
long nodeuser = tcp->u_arg[3];
tprints("{");
for (i = 0; i < npages; ++i) {
int node;
if (i > 0)
tprints(", ");
if (umove(tcp, nodeuser, &node) < 0) {
tprints("???");
break;
}
tprintf("%#x", node);
nodeuser += sizeof(int);
}
tprints("}, ");
}
} else {
unsigned long npages = tcp->u_arg[1];
if (tcp->u_arg[4] == 0)
tprints("NULL, ");
else {
unsigned int i;
long statususer = tcp->u_arg[4];
tprints("{");
for (i = 0; i < npages; ++i) {
int status;
if (i > 0)
tprints(", ");
if (umove(tcp, statususer, &status) < 0) {
tprints("???");
break;
}
tprintf("%#x", status);
statususer += sizeof(int);
}
tprints("}, ");
}
printflags(move_pages_flags, tcp->u_arg[5], "MPOL_???");
}
return 0;
}
#if defined(POWERPC)
static bool
print_protmap_entry(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
{
tprintf("%#08x", * (unsigned int *) elem_buf);
return true;
}
SYS_FUNC(subpage_prot)
{
unsigned long cur, end, abbrev_end, entries;
unsigned int entry;
unsigned long addr = tcp->u_arg[0];
unsigned long len = tcp->u_arg[1];
unsigned long nmemb = len >> 16;
unsigned long map = tcp->u_arg[2];
printaddr(tcp->u_arg[0]);
tprints(", ");
printaddr(tcp->u_arg[1]);
tprints(", ");
entries = tcp->u_arg[1] >> 16;
if (!entries || !tcp->u_arg[2]) {
tprints("{}");
return 0;
}
cur = tcp->u_arg[2];
end = cur + (sizeof(int) * entries);
if (!verbose(tcp) || end < (unsigned long) tcp->u_arg[2]) {
printaddr(tcp->u_arg[2]);
return 0;
}
if (abbrev(tcp)) {
abbrev_end = cur + (sizeof(int) * max_strlen);
if (abbrev_end > end)
abbrev_end = end;
}
else
abbrev_end = end;
tprints("{");
for (; cur < end; cur += sizeof(int)) {
if (cur > (unsigned long) tcp->u_arg[2])
tprints(", ");
if (cur >= abbrev_end) {
tprints("...");
break;
}
if (umove(tcp, cur, &entry) < 0) {
tprintf("??? [%#lx]", cur);
break;
}
else
tprintf("%#08x", entry);
}
tprints("}");
printaddr(addr);
tprintf(", %lu, ", len);
unsigned int entry;
print_array(tcp, map, nmemb, &entry, sizeof(entry),
umoven_or_printaddr, print_protmap_entry, 0);
return RVAL_DECODED;
}

View File

@ -43,6 +43,7 @@ SYS_FUNC(membarrier)
if (syserror(tcp) || !tcp->u_rval)
return 0;
tcp->auxstr = sprintflags("", membarrier_cmds, tcp->u_rval);
tcp->auxstr = sprintflags("", membarrier_cmds,
(unsigned long) tcp->u_rval);
return RVAL_HEX | RVAL_STR;
}

13
mknod.c
View File

@ -48,22 +48,15 @@ static void
decode_mknod(struct tcb *tcp, int offset)
{
int mode = tcp->u_arg[offset + 1];
unsigned int dev;
printpath(tcp, tcp->u_arg[offset]);
tprintf(", %s", sprintmode(mode));
switch (mode & S_IFMT) {
case S_IFCHR:
case S_IFBLK:
#if defined(SPARC) || defined(SPARC64)
if (current_personality == 1)
tprintf(", makedev(%lu, %lu)",
(unsigned long) ((tcp->u_arg[offset + 2] >> 18) & 0x3fff),
(unsigned long) (tcp->u_arg[offset + 2] & 0x3ffff));
else
#endif /* SPARC || SPARC64 */
tprintf(", makedev(%lu, %lu)",
(unsigned long) major(tcp->u_arg[offset + 2]),
(unsigned long) minor(tcp->u_arg[offset + 2]));
dev = tcp->u_arg[offset + 2];
tprintf(", makedev(%u, %u)", major(dev), minor(dev));
break;
}
}

Some files were not shown because too many files have changed in this diff Show More