Miguel Ojeda c53324dd9a Remove no_std and feature(...) crate attributes
Since PR https://github.com/Rust-for-Linux/linux/pull/635 ("rust:
avoid the need of crate attributes in kernel modules") in the main
repository, these attributes are handled by the build system, thus
there is no need (and it is an error) to specify them.

Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2022-02-09 00:43:23 +01:00
2021-12-22 21:46:30 +01:00
2021-12-22 21:46:30 +01:00
2021-12-22 21:46:30 +01:00
2021-12-22 21:46:30 +01:00
2021-12-22 21:46:30 +01:00

Rust out-of-tree module

This is a basic template for an out-of-tree Linux kernel module written in Rust.

Please note that:

  • The Rust support is experimental.

  • The kernel that the module is built against needs to be Rust-enabled (CONFIG_RUST=y).

  • The kernel tree (KDIR) requires the Rust metadata to be available. These are generated during the kernel build, but may not be available for installed/distributed kernels (the scripts that install/distribute kernel headers etc. for the different package systems and Linux distributions are not updated to take into account Rust support yet).

  • All Rust symbols are EXPORT_SYMBOL_GPL.

Example:

$ make KDIR=.../linux-with-rust-support LLVM=1
make -C .../linux-with-rust-support M=$PWD
make[1]: Entering directory '.../linux-with-rust-support'
  RUSTC [M] .../rust-out-of-tree-module/rust_out_of_tree.o
  MODPOST .../rust-out-of-tree-module/Module.symvers
  CC [M]  .../rust-out-of-tree-module/rust_out_of_tree.mod.o
  LD [M]  .../rust-out-of-tree-module/rust_out_of_tree.ko
make[1]: Leaving directory '.../linux-with-rust-support'

For details about the Rust support, see https://github.com/Rust-for-Linux/linux.

For details about out-of-tree modules, see https://www.kernel.org/doc/html/latest/kbuild/modules.html.

Languages
Rust 82.5%
Makefile 17.5%