From cc59e7e4adf110e2ddd4f8ae57df8ecc7b369b38 Mon Sep 17 00:00:00 2001 From: Necip Fazil Yildiran Date: Wed, 12 Aug 2020 20:40:54 +0000 Subject: sys/linux: use per-field directions in descriptions --- sys/linux/bpf.txt | 50 ++++++--------- sys/linux/dev_dri.txt | 127 +++++++++++++++++++++++-------------- sys/linux/dev_infiniband_rdma.txt | 3 + sys/linux/dev_ion.txt | 8 +-- sys/linux/dev_kvm.txt | 6 +- sys/linux/dev_usbmon_ppc64le.const | 8 +-- sys/linux/dev_video4linux.txt | 6 +- sys/linux/fs_ioctl_fscrypt.txt | 3 +- sys/linux/io_uring.txt | 21 +++--- 9 files changed, 129 insertions(+), 103 deletions(-) (limited to 'sys/linux') diff --git a/sys/linux/bpf.txt b/sys/linux/bpf.txt index b45df8001..b9fd9f21a 100644 --- a/sys/linux/bpf.txt +++ b/sys/linux/bpf.txt @@ -444,31 +444,23 @@ bpf_test_prog_arg { } bpf_prog_get_next_id_arg { -# NEED: part of fields are input here and part are output. We can't express this yet (#245). - start int32 -# Output field: - next_id bpf_prog_id + start int32 (in) + next_id bpf_prog_id (out) } bpf_map_get_next_id_arg { -# NEED: part of fields are input here and part are output. We can't express this yet (#245). - start int32 -# Output field: - next_id bpf_map_id + start int32 (in) + next_id bpf_map_id (out) } bpf_btf_get_next_id_arg { -# NEED: part of fields are input here and part are output. We can't express this yet (#245). - start int32 -# Output field: - next_id bpf_btf_id + start int32 (in) + next_id bpf_btf_id (out) } bpf_link_get_next_id_arg { -# NEED: part of fields are input here and part are output. We can't express this yet (#245). - start int32 -# Output field: - next_id bpf_link_id[opt] + start int32 (in) + next_id bpf_link_id (out) } bpf_prog_get_fd_by_id_arg { @@ -535,15 +527,15 @@ bpf_map_info { } [align[8]] bpf_get_btf_info_arg { - btf fd_btf - len len[info, int32] + btf fd_btf (in) + len len[info, int32] (in) info ptr64[inout, bpf_btf_info] } bpf_btf_info { btf ptr64[out, array[int8]] btf_size bytesize[btf, int32] - id bpf_btf_id[opt] + id bpf_btf_id (out) } [align[8]] bpf_prog_query { @@ -736,17 +728,15 @@ bpf_btf_strings { bpf_btf_strings_elem = 'a', '0', '_', '.', 0 bpf_task_fd_query { -# NEED: part of fields are input here and part are output. We can't express this yet (#245). - pid pid - fd fd_perf_base - flags const[0, int32] - buf_len bytesize[buf, int32] - buf ptr64[in, string] -# These are output fields: - prog_id bpf_prog_id[opt] - fd_type const[0, int32] - probe_offset const[0, int64] - probe_addr const[0, int64] + pid pid (in) + fd fd_perf_base (in) + flags const[0, int32] (in) + buf_len bytesize[buf, int32] (in) + buf ptr64[in, string] (in) + prog_id bpf_prog_id (out) + fd_type int32 (out) + probe_offset int64 (out) + probe_addr int64 (out) } bpf_map_type = BPF_MAP_TYPE_HASH, BPF_MAP_TYPE_ARRAY, BPF_MAP_TYPE_PROG_ARRAY, BPF_MAP_TYPE_PERF_EVENT_ARRAY, BPF_MAP_TYPE_STACK_TRACE, BPF_MAP_TYPE_CGROUP_ARRAY, BPF_MAP_TYPE_PERCPU_HASH, BPF_MAP_TYPE_PERCPU_ARRAY, BPF_MAP_TYPE_LRU_HASH, BPF_MAP_TYPE_LRU_PERCPU_HASH, BPF_MAP_TYPE_LPM_TRIE, BPF_MAP_TYPE_ARRAY_OF_MAPS, BPF_MAP_TYPE_HASH_OF_MAPS, BPF_MAP_TYPE_DEVMAP, BPF_MAP_TYPE_SOCKMAP, BPF_MAP_TYPE_CPUMAP, BPF_MAP_TYPE_XSKMAP, BPF_MAP_TYPE_SOCKHASH, BPF_MAP_TYPE_CGROUP_STORAGE, BPF_MAP_TYPE_REUSEPORT_SOCKARRAY, BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE, BPF_MAP_TYPE_QUEUE, BPF_MAP_TYPE_STACK, BPF_MAP_TYPE_SK_STORAGE, BPF_MAP_TYPE_DEVMAP_HASH, BPF_MAP_TYPE_STRUCT_OPS, BPF_MAP_TYPE_RINGBUF diff --git a/sys/linux/dev_dri.txt b/sys/linux/dev_dri.txt index a9dea610a..6e30f9e97 100644 --- a/sys/linux/dev_dri.txt +++ b/sys/linux/dev_dri.txt @@ -27,7 +27,7 @@ ioctl$DRM_IOCTL_VERSION(fd fd_dri, cmd const[DRM_IOCTL_VERSION], arg ptr[in, drm ioctl$DRM_IOCTL_GET_UNIQUE(fd fd_dri, cmd const[DRM_IOCTL_GET_UNIQUE], arg ptr[in, drm_unique_out]) ioctl$DRM_IOCTL_GET_MAGIC(fd fd_dri, cmd const[DRM_IOCTL_GET_MAGIC], arg ptr[in, int32]) ioctl$DRM_IOCTL_IRQ_BUSID(fd fd_dri, cmd const[DRM_IOCTL_IRQ_BUSID], arg ptr[in, drm_irq_busid]) -ioctl$DRM_IOCTL_GET_MAP(fd fd_dri, cmd const[DRM_IOCTL_GET_MAP], arg ptr[in, drm_map]) +ioctl$DRM_IOCTL_GET_MAP(fd fd_dri, cmd const[DRM_IOCTL_GET_MAP], arg ptr[inout, drm_map$DRM_IOCTL_GET_MAP]) ioctl$DRM_IOCTL_GET_CLIENT(fd fd_dri, cmd const[DRM_IOCTL_GET_CLIENT], arg ptr[inout, drm_client]) ioctl$DRM_IOCTL_GET_STATS(fd fd_dri, cmd const[DRM_IOCTL_GET_STATS], arg buffer[out]) ioctl$DRM_IOCTL_GET_CAP(fd fd_dri, cmd const[DRM_IOCTL_GET_CAP], arg ptr[in, drm_get_cap]) @@ -35,8 +35,8 @@ ioctl$DRM_IOCTL_SET_CLIENT_CAP(fd fd_dri, cmd const[DRM_IOCTL_SET_CLIENT_CAP], a ioctl$DRM_IOCTL_SET_VERSION(fd fd_dri, cmd const[DRM_IOCTL_SET_VERSION], arg ptr[in, drm_set_version]) ioctl$DRM_IOCTL_SET_UNIQUE(fd fd_dri, cmd const[DRM_IOCTL_SET_UNIQUE], arg ptr[in, drm_unique_in]) ioctl$DRM_IOCTL_AUTH_MAGIC(fd fd_dri, cmd const[DRM_IOCTL_AUTH_MAGIC], arg ptr[in, int32]) -ioctl$DRM_IOCTL_ADD_MAP(fd fd_dri, cmd const[DRM_IOCTL_ADD_MAP], arg ptr[in, drm_map]) -ioctl$DRM_IOCTL_RM_MAP(fd fd_dri, cmd const[DRM_IOCTL_RM_MAP], arg ptr[in, drm_map]) +ioctl$DRM_IOCTL_ADD_MAP(fd fd_dri, cmd const[DRM_IOCTL_ADD_MAP], arg ptr[inout, drm_map$DRM_IOCTL_ADD_MAP]) +ioctl$DRM_IOCTL_RM_MAP(fd fd_dri, cmd const[DRM_IOCTL_RM_MAP], arg ptr[in, drm_map$DRM_IOCTL_RM_MAP]) ioctl$DRM_IOCTL_SET_SAREA_CTX(fd fd_dri, cmd const[DRM_IOCTL_SET_SAREA_CTX], arg ptr[in, drm_ctx_priv_map]) ioctl$DRM_IOCTL_GET_SAREA_CTX(fd fd_dri, cmd const[DRM_IOCTL_GET_SAREA_CTX], arg ptr[in, drm_ctx_priv_map]) ioctl$DRM_IOCTL_SET_MASTER(fd fd_dri, cmd const[DRM_IOCTL_SET_MASTER]) @@ -60,8 +60,8 @@ ioctl$DRM_IOCTL_AGP_ACQUIRE(fd fd_dri, cmd const[DRM_IOCTL_AGP_ACQUIRE]) ioctl$DRM_IOCTL_AGP_RELEASE(fd fd_dri, cmd const[DRM_IOCTL_AGP_RELEASE]) ioctl$DRM_IOCTL_AGP_ENABLE(fd fd_dri, cmd const[DRM_IOCTL_AGP_ENABLE], arg ptr[in, int32]) ioctl$DRM_IOCTL_AGP_INFO(fd fd_dri, cmd const[DRM_IOCTL_AGP_INFO], arg buffer[out]) -ioctl$DRM_IOCTL_AGP_ALLOC(fd fd_dri, cmd const[DRM_IOCTL_AGP_ALLOC], arg ptr[inout, drm_agp_buffer]) -ioctl$DRM_IOCTL_AGP_FREE(fd fd_dri, cmd const[DRM_IOCTL_AGP_FREE], arg ptr[in, drm_agp_buffer]) +ioctl$DRM_IOCTL_AGP_ALLOC(fd fd_dri, cmd const[DRM_IOCTL_AGP_ALLOC], arg ptr[inout, drm_agp_buffer$DRM_IOCTL_AGP_ALLOC]) +ioctl$DRM_IOCTL_AGP_FREE(fd fd_dri, cmd const[DRM_IOCTL_AGP_FREE], arg ptr[in, drm_agp_buffer$DRM_IOCTL_AGP_FREE]) ioctl$DRM_IOCTL_AGP_BIND(fd fd_dri, cmd const[DRM_IOCTL_AGP_BIND], arg ptr[in, drm_agp_binding]) ioctl$DRM_IOCTL_AGP_UNBIND(fd fd_dri, cmd const[DRM_IOCTL_AGP_UNBIND], arg ptr[in, drm_agp_binding]) ioctl$DRM_IOCTL_SG_ALLOC(fd fd_dri, cmd const[DRM_IOCTL_SG_ALLOC], arg ptr[in, drm_scatter_gather]) @@ -72,8 +72,8 @@ ioctl$DRM_IOCTL_GEM_OPEN(fd fd_dri, cmd const[DRM_IOCTL_GEM_OPEN], arg ptr[inout ioctl$DRM_IOCTL_GEM_CLOSE(fd fd_dri, cmd const[DRM_IOCTL_GEM_CLOSE], arg ptr[in, drm_gem_close]) ioctl$DRM_IOCTL_GEM_FLINK(fd fd_dri, cmd const[DRM_IOCTL_GEM_FLINK], arg ptr[inout, drm_gem_flink]) ioctl$DRM_IOCTL_MODE_GETRESOURCES(fd fd_dri, cmd const[DRM_IOCTL_MODE_GETRESOURCES], arg ptr[in, drm_mode_card_res]) -ioctl$DRM_IOCTL_PRIME_HANDLE_TO_FD(fd fd_dri, cmd const[DRM_IOCTL_PRIME_HANDLE_TO_FD], arg ptr[inout, drm_prime_handle]) -ioctl$DRM_IOCTL_PRIME_FD_TO_HANDLE(fd fd_dri, cmd const[DRM_IOCTL_PRIME_FD_TO_HANDLE], arg ptr[inout, drm_prime_handle]) +ioctl$DRM_IOCTL_PRIME_HANDLE_TO_FD(fd fd_dri, cmd const[DRM_IOCTL_PRIME_HANDLE_TO_FD], arg ptr[inout, drm_prime_handle$DRM_IOCTL_PRIME_HANDLE_TO_FD]) +ioctl$DRM_IOCTL_PRIME_FD_TO_HANDLE(fd fd_dri, cmd const[DRM_IOCTL_PRIME_FD_TO_HANDLE], arg ptr[inout, drm_prime_handle$DRM_IOCTL_PRIME_FD_TO_HANDLE]) ioctl$DRM_IOCTL_MODE_GETPLANERESOURCES(fd fd_dri, cmd const[DRM_IOCTL_MODE_GETPLANERESOURCES], arg ptr[in, drm_mode_get_plane_res]) ioctl$DRM_IOCTL_MODE_GETCRTC(fd fd_dri, cmd const[DRM_IOCTL_MODE_GETCRTC], arg ptr[in, drm_mode_crtc]) ioctl$DRM_IOCTL_MODE_SETCRTC(fd fd_dri, cmd const[DRM_IOCTL_MODE_SETCRTC], arg ptr[in, drm_mode_crtc]) @@ -249,8 +249,7 @@ drm_mode_get_blob { drm_mode_create_blob { data ptr64[in, array[int8]] length len[data, int32] -# Output: - blob_id drm_blob_id[opt] + blob_id drm_blob_id (out) } drm_mode_destroy_blob { @@ -318,26 +317,26 @@ drm_clip_rect { drm_mode_fb_dirty_flags = DRM_MODE_FB_DIRTY_ANNOTATE_COPY, DRM_MODE_FB_DIRTY_ANNOTATE_FILL ioctl$DRM_IOCTL_MODE_CREATE_DUMB(fd fd_dri, cmd const[DRM_IOCTL_MODE_CREATE_DUMB], arg ptr[inout, drm_mode_create_dumb]) -ioctl$DRM_IOCTL_MODE_MAP_DUMB(fd fd_dri, cmd const[DRM_IOCTL_MODE_MAP_DUMB], arg ptr[in, drm_mode_map_dumb]) +ioctl$DRM_IOCTL_MODE_MAP_DUMB(fd fd_dri, cmd const[DRM_IOCTL_MODE_MAP_DUMB], arg ptr[inout, drm_mode_map_dumb]) ioctl$DRM_IOCTL_MODE_DESTROY_DUMB(fd fd_dri, cmd const[DRM_IOCTL_MODE_DESTROY_DUMB], arg ptr[in, drm_mode_destroy_dumb]) resource drm_dumb_handle[int32] drm_mode_create_dumb { - height int32 - width int32 - bpp int32 - flags int32 -# Outputs: - handle drm_dumb_handle[opt] - pitch const[0, int32] - size const[0, int64] + height int32 (in) + width int32 (in) + bpp int32 (in) +# flags does not seem to be used by any driver. + flags const[0, int32] + handle drm_dumb_handle (out) + pitch int32 (out) + size int64 (out) } drm_mode_map_dumb { - handle drm_dumb_handle + handle drm_dumb_handle (in) pad const[0, int32] - offset const[0, int64] + offset int64 (out) } drm_mode_destroy_dumb { @@ -389,7 +388,7 @@ drm_mode_atomic_flags = DRM_MODE_PAGE_FLIP_EVENT, DRM_MODE_ATOMIC_TEST_ONLY, DRM #ioctl$DRM_IOCTL_CRTC_GET_SEQUENCE(fd fd_dri, cmd const[DRM_IOCTL_CRTC_GET_SEQUENCE], arg ptr[in, XXXXX]) #ioctl$DRM_IOCTL_CRTC_QUEUE_SEQUENCE(fd fd_dri, cmd const[DRM_IOCTL_CRTC_QUEUE_SEQUENCE], arg ptr[in, XXXXX]) -ioctl$DRM_IOCTL_MODE_CREATE_LEASE(fd fd_dri, cmd const[DRM_IOCTL_MODE_CREATE_LEASE], arg ptr[in, drm_mode_create_lease]) +ioctl$DRM_IOCTL_MODE_CREATE_LEASE(fd fd_dri, cmd const[DRM_IOCTL_MODE_CREATE_LEASE], arg ptr[inout, drm_mode_create_lease]) ioctl$DRM_IOCTL_MODE_LIST_LESSEES(fd fd_dri, cmd const[DRM_IOCTL_MODE_LIST_LESSEES], arg ptr[in, drm_mode_list_lessees]) ioctl$DRM_IOCTL_MODE_GET_LEASE(fd fd_dri, cmd const[DRM_IOCTL_MODE_GET_LEASE], arg ptr[in, drm_mode_get_lease]) ioctl$DRM_IOCTL_MODE_REVOKE_LEASE(fd fd_dri, cmd const[DRM_IOCTL_MODE_REVOKE_LEASE], arg ptr[in, drm_mode_revoke_lease]) @@ -398,12 +397,11 @@ resource drm_lessee_id[int32] drm_mode_create_lease { # TODO: what are these "object ids"? where does one get these? - object_ids ptr64[in, array[int32]] - object_count len[object_ids, int32] - flags flags[drm_mode_create_lease_flag, int32] -# Outputs: - lessee_id drm_lessee_id[opt] - fd fd[opt] + object_ids ptr64[in, array[int32]] (in) + object_count len[object_ids, int32] (in) + flags flags[drm_mode_create_lease_flag, int32] (in) + lessee_id drm_lessee_id (out) + fd fd (out) } drm_mode_create_lease_flag = O_CLOEXEC, O_NONBLOCK @@ -453,13 +451,32 @@ drm_irq_busid { func int32 } -drm_map { - off vma[opt] - size intptr - type flags[drm_map_type, int32] - flags flags[drm_map_flags, int32] +drm_map$DRM_IOCTL_GET_MAP { + off vma (inout) + size intptr (out) + type int32 (out) + flags int32 (out) + handle vma (out) + mtrr int32 (out) +} + +drm_map$DRM_IOCTL_ADD_MAP { + off vma (in) + size intptr (in) + type flags[drm_map_type, int32] (in) + flags flags[drm_map_flags, int32] (in) + handle vma (out) + mtrr int32 (out) +} + +drm_map$DRM_IOCTL_RM_MAP { +# Only handle is used. + off const[0, intptr] + size const[0, intptr] + type const[0, int32] + flags const[0, int32] handle vma - mtrr int32 + mtrr const[0, int32] } drm_client { @@ -551,11 +568,19 @@ drm_control { irq int32 } -drm_agp_buffer { - size intptr - handle drm_agp_handle[opt] - type flags[drm_agp_mem_type, intptr] - physic intptr +drm_agp_buffer$DRM_IOCTL_AGP_ALLOC { + size intptr (in) + handle drm_agp_handle (out) + type flags[drm_agp_mem_type, intptr] (in) + physic intptr (out) +} + +drm_agp_buffer$DRM_IOCTL_AGP_FREE { +# Only handle is used. + size const[0, intptr] + handle drm_agp_handle + type const[0, intptr] + physic const[0, intptr] } drm_agp_binding { @@ -580,11 +605,9 @@ drm_modeset_ctl { } drm_gem_open { -# input: - name drm_gem_name[opt] -# output: - handle drm_gem_handle[opt] - size int64 + name drm_gem_name (in) + handle drm_gem_handle (out) + size int64 (out) } drm_gem_close { @@ -593,8 +616,8 @@ drm_gem_close { } drm_gem_flink { - handle drm_gem_handle[opt] - name drm_gem_name[opt] + handle drm_gem_handle (in) + name drm_gem_name (out) } drm_mode_card_res { @@ -612,10 +635,16 @@ drm_mode_card_res { minh const[0, int32] } -drm_prime_handle { - handle drm_gem_handle[opt] - flags flags[dup_flags, int32] - fd fd_dri[opt] +drm_prime_handle$DRM_IOCTL_PRIME_HANDLE_TO_FD { + handle drm_gem_handle (in) + flags flags[dup_flags, int32] (in) + fd fd_dri (out) +} + +drm_prime_handle$DRM_IOCTL_PRIME_FD_TO_HANDLE { + handle drm_gem_handle (out) + flags const[0, int32] + fd fd_dri (in) } drm_mode_crtc { diff --git a/sys/linux/dev_infiniband_rdma.txt b/sys/linux/dev_infiniband_rdma.txt index a34ef6090..8375cb591 100644 --- a/sys/linux/dev_infiniband_rdma.txt +++ b/sys/linux/dev_infiniband_rdma.txt @@ -1331,7 +1331,10 @@ ib_uverbs_create_counters_cmd { flags flags[ib_uverbs_attr_flags, int16] elem_id int8 reserved2 const[0x0, int8] +# TODO: reserved3 seems unnecessary: https://elixir.bootlin.com/linux/latest/source/include/uapi/rdma/rdma_user_ioctl_cmds.h#L58 reserved3 const[0x0, int16] +# TODO: Is the following field really optional, or, is opt used as a workaround? +# Now that we have per-field directions, this can be fixed if it is the second case. vcontext_handle vcontext_handle[opt] more_data int32 } diff --git a/sys/linux/dev_ion.txt b/sys/linux/dev_ion.txt index eeb942064..464107048 100644 --- a/sys/linux/dev_ion.txt +++ b/sys/linux/dev_ion.txt @@ -17,10 +17,10 @@ ioctl$ION_IOC_HEAP_QUERY(fd fd_ion, cmd const[ION_IOC_HEAP_QUERY], arg ptr[inout ioctl$DMA_BUF_IOCTL_SYNC(fd fd_dma_buf, cmd const[DMA_BUF_IOCTL_SYNC], arg ptr[in, flags[dma_buf_sync_flags, int64]]) ion_allocation_data { - len int64 - heap_id_mask flags[ion_heap_mask, int32] - flags flags[ion_alloc_flags, int32] - fd fd_dma_buf[opt] + len int64 (in) + heap_id_mask flags[ion_heap_mask, int32] (in) + flags flags[ion_alloc_flags, int32] (in) + fd fd_dma_buf (out) unused const[0, int32] } diff --git a/sys/linux/dev_kvm.txt b/sys/linux/dev_kvm.txt index 290191a45..a38da6086 100644 --- a/sys/linux/dev_kvm.txt +++ b/sys/linux/dev_kvm.txt @@ -305,9 +305,9 @@ kvm_device_attr { } kvm_create_device { - type flags[kvm_device_type, int32] - fd fd_kvmdev[opt] - flags flags[kvm_device_flags, int32] + type flags[kvm_device_type, int32] (in) + fd fd_kvmdev (out) + flags flags[kvm_device_flags, int32] (in) } kvm_s390_interrupt { diff --git a/sys/linux/dev_usbmon_ppc64le.const b/sys/linux/dev_usbmon_ppc64le.const index 2944a8b42..49db244c4 100644 --- a/sys/linux/dev_usbmon_ppc64le.const +++ b/sys/linux/dev_usbmon_ppc64le.const @@ -1,7 +1,7 @@ # AUTOGENERATED FILE -BUFF_MAX = 1245184 -BUFF_MIN = 65536 -CHUNK_SIZE = 65536 +BUFF_MAX = 1228800 +BUFF_MIN = 8192 +CHUNK_SIZE = 4096 MON_IOCG_STATS = 1074303491 MON_IOCH_MFLUSH = 536908296 MON_IOCQ_RING_SIZE = 536908293 @@ -11,7 +11,7 @@ MON_IOCX_GET = 2149093894 MON_IOCX_GETX = 2149093898 MON_IOCX_MFETCH = 3222311431 MON_IOC_MAGIC = 146 -PAGE_SIZE = 65536 +PAGE_SIZE = 4096 SETUP_LEN = 8 __NR_ioctl = 54 __NR_mmap = 90 diff --git a/sys/linux/dev_video4linux.txt b/sys/linux/dev_video4linux.txt index 138add756..e0c49e035 100644 --- a/sys/linux/dev_video4linux.txt +++ b/sys/linux/dev_video4linux.txt @@ -273,6 +273,8 @@ type v4l2_requestbuffers[BUF_TYPE] { reserved const[0, int32] } +# TODO: The field directions needs to be defined. Recursively, v4l2_buffer_union, +# v4l2_plane, v4l2_plane_union needs checking. type v4l2_buffer[BUF_TYPE] { index int32 type flags[BUF_TYPE, int32] @@ -343,6 +345,8 @@ type v4l2_exportbuffer[BUF_TYPE] { index int32 plane int32 flags flags[pipe_flags, int32] +# TODO: This should've been out, look into the problem. Otherwise, the resource is +# never used. fd fd_dmabuf[opt] reserved array[const[0, int32], 11] } @@ -499,7 +503,7 @@ v4l2_ext_controls { ctrl_class flags[v4l2_ext_ctrl_class, int32] count int32 error_idx int32 - request_fd fd[opt] + request_fd fd[opt] (in) reserved const[0, int32] controls ptr[inout, v4l2_ext_control] } diff --git a/sys/linux/fs_ioctl_fscrypt.txt b/sys/linux/fs_ioctl_fscrypt.txt index 4e48fc2ff..3083db3d4 100644 --- a/sys/linux/fs_ioctl_fscrypt.txt +++ b/sys/linux/fs_ioctl_fscrypt.txt @@ -66,6 +66,7 @@ fscrypt_key_specifier { fscrypt_key_specifier_type = FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR, FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER +# TODO: The direction of the payload changes with regards to the key specifier type fscrypt_key_specifier_payload [ reserved array[int8, 32] descriptor fscrypt_key_descriptor @@ -81,7 +82,7 @@ fscrypt_provisioning_key_payload { fscrypt_add_key_arg { key_spec fscrypt_key_specifier raw_size len[raw, int32] - key_id fscrypt_provisioning_key[opt] + key_id fscrypt_provisioning_key[opt] (in) reserved array[const[0, int32], 8] raw array[int8] } diff --git a/sys/linux/io_uring.txt b/sys/linux/io_uring.txt index f4de4a0a9..86e31e251 100644 --- a/sys/linux/io_uring.txt +++ b/sys/linux/io_uring.txt @@ -96,20 +96,19 @@ io_uring_files_update { fds ptr64[in, array[fd]] } -# NEED: part of fields are input here and part are output. We can't express this yet (#245). io_uring_params { -# sq_entries, cq_entries, features, wq_fd, sq_off, and cq_off are set by the kernel - sq_entries const[0, int32] - cq_entries int32[0:IORING_MAX_CQ_ENTRIES] - flags flags[io_uring_setup_flags, int32] - sq_thread_cpu int32[0:3] - sq_thread_idle int32[0:1000] - features const[0, int32] - wq_fd fd_io_uring[opt] + sq_entries int32 (out) + cq_entries int32[0:IORING_MAX_CQ_ENTRIES] (inout) + flags flags[io_uring_setup_flags, int32] (in) + sq_thread_cpu int32[0:3] (in) + sq_thread_idle int32[0:1000] (in) + features int32 (out) + wq_fd fd_io_uring[opt] (in) resv array[const[0, int32], 3] # We don't really use them (they are hard-coded). Thus, just pass some memory region of their size. - sq_off array[const[0, int32], 10] - cq_off array[const[0, int32], 10] +# TODO: Now that per-field directions is supported, can we avoid using hard-coded values for offsets? + sq_off array[int32, 10] (out) + cq_off array[int32, 10] (out) } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -- cgit mrf-deployment