xref: /linux/rust/helpers/helpers.c (revision 289088d54623a1a50bb3ff79f7331bbe501ea591)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Non-trivial C macros cannot be used in Rust. Similarly, inlined C functions
4  * cannot be called either. This file explicitly creates functions ("helpers")
5  * that wrap those so that they can be called from Rust.
6  *
7  * Even though Rust kernel modules should never use the bindings directly, some
8  * of these helpers need to be exported because Rust generics and inlined
9  * functions may not get their code generated in the crate where they are
10  * defined. Other helpers, called from non-inline functions, may not be
11  * exported, in principle. However, in general, the Rust compiler does not
12  * guarantee codegen will be performed for a non-inline function either.
13  * Therefore, this file exports all the helpers. In the future, this may be
14  * revisited to reduce the number of exports after the compiler is informed
15  * about the places codegen is required.
16  *
17  * All symbols are exported as GPL-only to guarantee no GPL-only feature is
18  * accidentally exposed.
19  *
20  * Sorted alphabetically.
21  */
22 
23 #include "blk.c"
24 #include "bug.c"
25 #include "build_assert.c"
26 #include "build_bug.c"
27 #include "err.c"
28 #include "kunit.c"
29 #include "mutex.c"
30 #include "page.c"
31 #include "refcount.c"
32 #include "signal.c"
33 #include "slab.c"
34 #include "spinlock.c"
35 #include "task.c"
36 #include "uaccess.c"
37 #include "wait.c"
38 #include "workqueue.c"
39