xref: /linux/rust/bindgen_parameters (revision 056e065a6b6e01ab54bb9770c0d5a15350e571e2)
1# SPDX-License-Identifier: GPL-2.0
2
3# We want to map these types to `isize`/`usize` manually, instead of
4# define them as `int`/`long` depending on platform bitwidth.
5--blocklist-type __kernel_s?size_t
6--blocklist-type __kernel_ptrdiff_t
7
8--opaque-type xregs_state
9--opaque-type desc_struct
10--opaque-type arch_lbr_state
11--opaque-type local_apic
12
13# Packed type cannot transitively contain a `#[repr(align)]` type.
14--opaque-type alt_instr
15--opaque-type x86_msi_data
16--opaque-type x86_msi_addr_lo
17# s390-only: same packed/align issue as above (E0588).
18--opaque-type lowcore
19--opaque-type tod_clock
20--opaque-type tpi_info
21--opaque-type uv_cb.*
22--opaque-type uv_secret.*
23--opaque-type zpci_fib
24
25# If SMP is disabled, `arch_spinlock_t` is defined as a ZST which triggers a Rust
26# warning. We don't need to peek into it anyway.
27--opaque-type spinlock
28
29# enums that appear in indirect function calls should specify a cfi type
30--newtype-enum lru_status
31--with-attribute-custom-enum=lru_status='#[cfi_encoding="10lru_status"]'
32
33# `seccomp`'s comment gets understood as a doctest
34--no-doc-comments
35
36# These functions use the `__preserve_most` calling convention, which neither bindgen
37# nor Rust currently understand, and which Clang currently declares to be unstable.
38--blocklist-function __list_.*_report
39
40# These constants are sometimes not recognized by bindgen depending on config.
41# We use const helpers to aid bindgen, to avoid conflicts when constants are
42# recognized, block generation of the non-helper constants.
43--blocklist-item ARCH_SLAB_MINALIGN
44--blocklist-item ARCH_KMALLOC_MINALIGN
45--blocklist-item VM_MERGEABLE
46--blocklist-item VM_READ
47--blocklist-item VM_WRITE
48--blocklist-item VM_EXEC
49--blocklist-item VM_SHARED
50--blocklist-item VM_MAYREAD
51--blocklist-item VM_MAYWRITE
52--blocklist-item VM_MAYEXEC
53--blocklist-item VM_MAYEXEC
54--blocklist-item VM_PFNMAP
55--blocklist-item VM_IO
56--blocklist-item VM_DONTCOPY
57--blocklist-item VM_DONTEXPAND
58--blocklist-item VM_LOCKONFAULT
59--blocklist-item VM_ACCOUNT
60--blocklist-item VM_NORESERVE
61--blocklist-item VM_HUGETLB
62--blocklist-item VM_SYNC
63--blocklist-item VM_ARCH_1
64--blocklist-item VM_WIPEONFORK
65--blocklist-item VM_DONTDUMP
66--blocklist-item VM_SOFTDIRTY
67--blocklist-item VM_MIXEDMAP
68--blocklist-item VM_HUGEPAGE
69--blocklist-item VM_NOHUGEPAGE
70
71# Structs should implement `Zeroable` when all of their fields do.
72--with-derive-custom-struct .*=MaybeZeroable
73--with-derive-custom-union .*=MaybeZeroable
74