xref: /linux/rust/bindgen_parameters (revision 7203ca412fc8e8a0588e9adc0f777d3163f8dff3)
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
18# `try` is a reserved keyword since Rust 2018; solved in `bindgen` v0.59.2,
19# commit 2aed6b021680 ("context: Escape the try keyword properly").
20--opaque-type kunit_try_catch
21
22# If SMP is disabled, `arch_spinlock_t` is defined as a ZST which triggers a Rust
23# warning. We don't need to peek into it anyway.
24--opaque-type spinlock
25
26# `seccomp`'s comment gets understood as a doctest
27--no-doc-comments
28
29# These functions use the `__preserve_most` calling convention, which neither bindgen
30# nor Rust currently understand, and which Clang currently declares to be unstable.
31--blocklist-function __list_.*_report
32
33# These constants are sometimes not recognized by bindgen depending on config.
34# We use const helpers to aid bindgen, to avoid conflicts when constants are
35# recognized, block generation of the non-helper constants.
36--blocklist-item ARCH_SLAB_MINALIGN
37--blocklist-item ARCH_KMALLOC_MINALIGN
38--blocklist-item VM_MERGEABLE
39--blocklist-item VM_READ
40--blocklist-item VM_WRITE
41--blocklist-item VM_EXEC
42--blocklist-item VM_SHARED
43--blocklist-item VM_MAYREAD
44--blocklist-item VM_MAYWRITE
45--blocklist-item VM_MAYEXEC
46--blocklist-item VM_MAYEXEC
47--blocklist-item VM_PFNMAP
48--blocklist-item VM_IO
49--blocklist-item VM_DONTCOPY
50--blocklist-item VM_DONTEXPAND
51--blocklist-item VM_LOCKONFAULT
52--blocklist-item VM_ACCOUNT
53--blocklist-item VM_NORESERVE
54--blocklist-item VM_HUGETLB
55--blocklist-item VM_SYNC
56--blocklist-item VM_ARCH_1
57--blocklist-item VM_WIPEONFORK
58--blocklist-item VM_DONTDUMP
59--blocklist-item VM_SOFTDIRTY
60--blocklist-item VM_MIXEDMAP
61--blocklist-item VM_HUGEPAGE
62--blocklist-item VM_NOHUGEPAGE
63
64# Structs should implement `Zeroable` when all of their fields do.
65--with-derive-custom-struct .*=MaybeZeroable
66--with-derive-custom-union .*=MaybeZeroable
67