aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux
diff options
context:
space:
mode:
authorSablin Viacheslav <sjava1902@gmail.com>2024-11-05 01:42:48 +0300
committerAleksandr Nogikh <nogikh@google.com>2024-11-13 08:55:55 +0000
commit8acebd3f596375b3c8c34ee8f9000a344064295a (patch)
treec88ca114db9c0f7875a6b79be0c2588f9257e829 /sys/linux
parentc352ddf895e4f5a5b7e8f7caa37f476c6926326f (diff)
sys/linux: add new ioctls for io_uring, dev_block and fs
Diffstat (limited to 'sys/linux')
-rw-r--r--sys/linux/dev_block.txt1
-rw-r--r--sys/linux/dev_block.txt.const1
-rw-r--r--sys/linux/fs_ioctl.txt25
-rw-r--r--sys/linux/fs_ioctl.txt.const2
-rw-r--r--sys/linux/io_uring.txt56
-rw-r--r--sys/linux/io_uring.txt.const11
6 files changed, 89 insertions, 7 deletions
diff --git a/sys/linux/dev_block.txt b/sys/linux/dev_block.txt
index 34e283164..f08fcac06 100644
--- a/sys/linux/dev_block.txt
+++ b/sys/linux/dev_block.txt
@@ -42,6 +42,7 @@ ioctl$BLKPG(fd fd_block, cmd const[BLKPG], arg ptr[in, blkpg_ioctl_arg])
ioctl$BLKRRPART(fd fd_block, cmd const[BLKRRPART], arg const[0])
ioctl$BLKGETSIZE(fd fd_block, cmd const[BLKGETSIZE], arg ptr[out, intptr])
ioctl$BLKGETSIZE64(fd fd_block, cmd const[BLKGETSIZE64], arg ptr[out, int64])
+ioctl$BLKGETDISKSEQ(fd fd_block, cmd const[BLKGETDISKSEQ], arg ptr[out, int64])
ioctl$HDIO_GETGEO(fd fd_block, cmd const[HDIO_GETGEO], arg ptr[out, hd_geometry])
diff --git a/sys/linux/dev_block.txt.const b/sys/linux/dev_block.txt.const
index fd9879645..889c850b7 100644
--- a/sys/linux/dev_block.txt.const
+++ b/sys/linux/dev_block.txt.const
@@ -7,6 +7,7 @@ BLKBSZSET = 1074270833, 386:arm:1074008689, mips64le:ppc64le:2148012657
BLKDISCARD = 4727, mips64le:ppc64le:536875639
BLKFLSBUF = 4705, mips64le:ppc64le:536875617
BLKFRASET = 4708, mips64le:ppc64le:536875620
+BLKGETDISKSEQ = 2148012672, mips64le:ppc64le:1074270848
BLKGETSIZE = 4704, mips64le:ppc64le:536875616
BLKGETSIZE64 = 2148012658, 386:arm:2147750514, mips64le:ppc64le:1074270834
BLKIOMIN = 4728, mips64le:ppc64le:536875640
diff --git a/sys/linux/fs_ioctl.txt b/sys/linux/fs_ioctl.txt
index 54b367232..a74b96a16 100644
--- a/sys/linux/fs_ioctl.txt
+++ b/sys/linux/fs_ioctl.txt
@@ -25,6 +25,8 @@ ioctl$FS_IOC_FSSETXATTR(fd fd, cmd const[FS_IOC_FSSETXATTR], arg ptr[in, fsxattr
ioctl$FS_IOC_GETFSLABEL(fd fd, cmd const[FS_IOC_GETFSLABEL], arg ptr[out, array[const[0, int8], FSLABEL_MAX]])
ioctl$FS_IOC_SETFSLABEL(fd fd, cmd const[FS_IOC_SETFSLABEL], arg ptr[in, array[int8, FSLABEL_MAX]])
ioctl$FS_IOC_GETFSMAP(fd fd, cmd const[FS_IOC_GETFSMAP], arg ptr[in, fsmap_head])
+ioctl$FS_IOC_GETFSUUID(fd fd, cmd const[FS_IOC_GETFSUUID], arg ptr[out, fsuuid2])
+ioctl$FS_IOC_GETFSSYSFSPATH(fd fd, cmd const[FS_IOC_GETFSSYSFSPATH], arg ptr[out, fs_sysfs_path])
space_resv {
l_type const[0, int16]
@@ -76,12 +78,13 @@ fsxattr {
}
fiemap {
- start int64
- len int64
- flags flags[fiemap_flags, int32]
- mapped int32
- count len[extent, int32]
- extent array[fiemap_extent]
+ start int64
+ len int64
+ flags flags[fiemap_flags, int32]
+ mapped int32
+ count len[extent, int32]
+ reserved const[0, int32]
+ extent array[fiemap_extent]
}
fiemap_extent {
@@ -116,3 +119,13 @@ fsmap {
fs_flags = FS_SECRM_FL, FS_UNRM_FL, FS_COMPR_FL, FS_SYNC_FL, FS_IMMUTABLE_FL, FS_APPEND_FL, FS_NODUMP_FL, FS_NOATIME_FL, FS_DIRTY_FL, FS_COMPRBLK_FL, FS_NOCOMP_FL, FS_ENCRYPT_FL, FS_BTREE_FL, FS_INDEX_FL, FS_IMAGIC_FL, FS_JOURNAL_DATA_FL, FS_NOTAIL_FL, FS_DIRSYNC_FL, FS_TOPDIR_FL, FS_HUGE_FILE_FL, FS_EXTENT_FL, FS_VERITY_FL, FS_EA_INODE_FL, FS_EOFBLOCKS_FL, FS_NOCOW_FL, FS_DAX_FL, FS_INLINE_DATA_FL, FS_PROJINHERIT_FL, FS_CASEFOLD_FL, FS_RESERVED_FL
define FSMAP_SIZE sizeof(struct fsmap)
+
+fsuuid2 {
+ len const[16, int8]
+ uuid array[int8, 16]
+}
+
+fs_sysfs_path {
+ len len[name, int8]
+ name array[int8, 128]
+}
diff --git a/sys/linux/fs_ioctl.txt.const b/sys/linux/fs_ioctl.txt.const
index 65b7da969..5564972f3 100644
--- a/sys/linux/fs_ioctl.txt.const
+++ b/sys/linux/fs_ioctl.txt.const
@@ -31,6 +31,8 @@ FS_IOC_FSSETXATTR = 1075599392, mips64le:ppc64le:2149341216
FS_IOC_GETFLAGS = 2148034049, 386:arm:2147771905, mips64le:ppc64le:1074292225
FS_IOC_GETFSLABEL = 2164298801, mips64le:ppc64le:1090556977
FS_IOC_GETFSMAP = 3233830971
+FS_IOC_GETFSSYSFSPATH = 2155943169, mips64le:ppc64le:1082201345
+FS_IOC_GETFSUUID = 2148603136, mips64le:ppc64le:1074861312
FS_IOC_GETVERSION = 2148038145, 386:arm:2147776001, mips64le:ppc64le:1074296321
FS_IOC_RESVSP = 1076910120, 386:1076647976, mips64le:ppc64le:2150651944
FS_IOC_SETFLAGS = 1074292226, 386:arm:1074030082, mips64le:ppc64le:2148034050
diff --git a/sys/linux/io_uring.txt b/sys/linux/io_uring.txt
index cf2a46d88..0d63c0f50 100644
--- a/sys/linux/io_uring.txt
+++ b/sys/linux/io_uring.txt
@@ -57,8 +57,15 @@ io_uring_register$IORING_UNREGISTER_RING_FDS(fd fd_io_uring, opcode const[IORING
io_uring_register$IORING_REGISTER_PBUF_RING(fd fd_io_uring, opcode const[IORING_REGISTER_PBUF_RING], arg ptr[in, io_uring_buf_reg], nr_args const[1])
io_uring_register$IORING_UNREGISTER_PBUF_RING(fd fd_io_uring, opcode const[IORING_UNREGISTER_PBUF_RING], arg ptr[in, io_uring_buf_reg], nr_args const[1])
# IORING_REGISTER_PBUF_RING, IORING_UNREGISTER_PBUF_RING >= 5.19
+io_uring_register$IORING_REGISTER_SYNC_CANCEL(fd fd_io_uring, opcode const[IORING_REGISTER_SYNC_CANCEL], arg ptr[in, io_uring_sync_cancel_reg], nr_args const[1])
+io_uring_register$IORING_REGISTER_FILE_ALLOC_RANGE(fd fd_io_uring, opcode const[IORING_REGISTER_FILE_ALLOC_RANGE], arg ptr[in, io_uring_file_index_range], nr_args const[0])
+io_uring_register$IORING_REGISTER_PBUF_STATUS(fd fd_io_uring, opcode const[IORING_REGISTER_PBUF_STATUS], arg ptr[in, io_uring_buf_status], nr_args const[1])
+io_uring_register$IORING_REGISTER_NAPI(fd fd_io_uring, opcode const[IORING_REGISTER_NAPI], arg ptr[in, io_uring_napi], nr_args const[1])
+io_uring_register$IORING_UNREGISTER_NAPI(fd fd_io_uring, opcode const[IORING_UNREGISTER_NAPI], arg ptr[out, io_uring_napi], nr_args const[1])
+io_uring_register$IORING_REGISTER_CLOCK(fd fd_io_uring, opcode const[IORING_REGISTER_CLOCK], arg ptr[in, io_uring_clock_register], nr_args const[0])
+io_uring_register$IORING_REGISTER_CLONE_BUFFERS(fd fd_io_uring, opcode const[IORING_REGISTER_CLONE_BUFFERS], arg ptr[in, io_uring_clone_buffers], nr_args const[1])
-io_uring_register_opcodes = IORING_REGISTER_BUFFERS, IORING_UNREGISTER_BUFFERS, IORING_REGISTER_FILES, IORING_UNREGISTER_FILES, IORING_REGISTER_EVENTFD, IORING_UNREGISTER_EVENTFD, IORING_REGISTER_FILES_UPDATE, IORING_REGISTER_EVENTFD_ASYNC, IORING_REGISTER_PROBE, IORING_REGISTER_PERSONALITY, IORING_UNREGISTER_PERSONALITY, IORING_REGISTER_RESTRICTIONS, IORING_REGISTER_ENABLE_RINGS, IORING_REGISTER_FILES2, IORING_REGISTER_FILES_UPDATE2, IORING_REGISTER_BUFFERS2, IORING_REGISTER_BUFFERS_UPDATE, IORING_REGISTER_IOWQ_AFF, IORING_UNREGISTER_IOWQ_AFF, IORING_REGISTER_IOWQ_MAX_WORKERS, IORING_REGISTER_RING_FDS, IORING_UNREGISTER_RING_FDS, IORING_REGISTER_PBUF_RING, IORING_UNREGISTER_PBUF_RING, IORING_REGISTER_SYNC_CANCEL, IORING_REGISTER_FILE_ALLOC_RANGE
+io_uring_register_opcodes = IORING_REGISTER_BUFFERS, IORING_UNREGISTER_BUFFERS, IORING_REGISTER_FILES, IORING_UNREGISTER_FILES, IORING_REGISTER_EVENTFD, IORING_UNREGISTER_EVENTFD, IORING_REGISTER_FILES_UPDATE, IORING_REGISTER_EVENTFD_ASYNC, IORING_REGISTER_PROBE, IORING_REGISTER_PERSONALITY, IORING_UNREGISTER_PERSONALITY, IORING_REGISTER_RESTRICTIONS, IORING_REGISTER_ENABLE_RINGS, IORING_REGISTER_FILES2, IORING_REGISTER_FILES_UPDATE2, IORING_REGISTER_BUFFERS2, IORING_REGISTER_BUFFERS_UPDATE, IORING_REGISTER_IOWQ_AFF, IORING_UNREGISTER_IOWQ_AFF, IORING_REGISTER_IOWQ_MAX_WORKERS, IORING_REGISTER_RING_FDS, IORING_UNREGISTER_RING_FDS, IORING_REGISTER_PBUF_RING, IORING_UNREGISTER_PBUF_RING, IORING_REGISTER_SYNC_CANCEL, IORING_REGISTER_FILE_ALLOC_RANGE, IORING_REGISTER_PBUF_STATUS, IORING_REGISTER_NAPI, IORING_UNREGISTER_NAPI, IORING_REGISTER_CLOCK, IORING_REGISTER_CLONE_BUFFERS
# The mmap'ed area for SQ and CQ rings are really the same -- the difference is
# accounted for with the usage of offsets.
@@ -489,3 +496,50 @@ io_uring_sqe_tee_misc {
splice_fd_in fd
pad_unused array[const[0, int64], 2]
}
+
+io_uring_sync_cancel_reg {
+ addr int64
+ fd fd
+ flags flags[iouring_async_cancel_flags, int32]
+ timeout kernel_timespec
+ opcode int8
+ pad array[const[0, int8], 7]
+ pad2 array[const[0, int64], 3]
+}
+
+kernel_timespec {
+ tv_sec int64
+ tv_nsec int64
+}
+
+iouring_async_cancel_flags = IORING_ASYNC_CANCEL_ALL, IORING_ASYNC_CANCEL_FD, IORING_ASYNC_CANCEL_ANY, IORING_ASYNC_CANCEL_FD_FIXED, IORING_ASYNC_CANCEL_USERDATA, IORING_ASYNC_CANCEL_OP
+
+io_uring_file_index_range {
+ off int32
+ len int32
+ resv int64
+}
+
+io_uring_buf_status {
+ buf_group int32 (in)
+ head int32 (out)
+ resv array[const[0, int32], 8]
+}
+
+io_uring_napi {
+ busy_poll_to int32
+ prefer_busy_poll int8
+ pad array[const[0, int8], 3]
+ resv const[0, int64]
+}
+
+io_uring_clock_register {
+ clockid flags[clock_type, int32]
+ resv array[const[0, int32], 3]
+}
+
+io_uring_clone_buffers {
+ src_fd fd
+ flags const[1, int32]
+ pad array[const[0, int32], 6]
+}
diff --git a/sys/linux/io_uring.txt.const b/sys/linux/io_uring.txt.const
index e6781da71..6cbf37efd 100644
--- a/sys/linux/io_uring.txt.const
+++ b/sys/linux/io_uring.txt.const
@@ -9,6 +9,12 @@ CQ_TAIL_OFFSET = 192
EPOLL_CTL_ADD = 1
EPOLL_CTL_DEL = 2
EPOLL_CTL_MOD = 3
+IORING_ASYNC_CANCEL_ALL = 1
+IORING_ASYNC_CANCEL_ANY = 4
+IORING_ASYNC_CANCEL_FD = 2
+IORING_ASYNC_CANCEL_FD_FIXED = 8
+IORING_ASYNC_CANCEL_OP = 32
+IORING_ASYNC_CANCEL_USERDATA = 16
IORING_ENTER_EXT_ARG = 8
IORING_ENTER_GETEVENTS = 1
IORING_ENTER_REGISTERED_RING = 16
@@ -76,6 +82,8 @@ IORING_RECV_MULTISHOT = 2
IORING_REGISTER_BUFFERS = 0
IORING_REGISTER_BUFFERS2 = 15
IORING_REGISTER_BUFFERS_UPDATE = 16
+IORING_REGISTER_CLOCK = 29
+IORING_REGISTER_CLONE_BUFFERS = 30
IORING_REGISTER_ENABLE_RINGS = 12
IORING_REGISTER_EVENTFD = 4
IORING_REGISTER_EVENTFD_ASYNC = 7
@@ -86,7 +94,9 @@ IORING_REGISTER_FILES_UPDATE2 = 14
IORING_REGISTER_FILE_ALLOC_RANGE = 25
IORING_REGISTER_IOWQ_AFF = 17
IORING_REGISTER_IOWQ_MAX_WORKERS = 19
+IORING_REGISTER_NAPI = 27
IORING_REGISTER_PBUF_RING = 22
+IORING_REGISTER_PBUF_STATUS = 26
IORING_REGISTER_PERSONALITY = 9
IORING_REGISTER_PROBE = 8
IORING_REGISTER_RESTRICTIONS = 11
@@ -116,6 +126,7 @@ IORING_UNREGISTER_BUFFERS = 1
IORING_UNREGISTER_EVENTFD = 5
IORING_UNREGISTER_FILES = 3
IORING_UNREGISTER_IOWQ_AFF = 18
+IORING_UNREGISTER_NAPI = 28
IORING_UNREGISTER_PBUF_RING = 23
IORING_UNREGISTER_PERSONALITY = 10
IORING_UNREGISTER_RING_FDS = 21