diff options
author | Asahi Lina <lina@asahilina.net> | 2023-04-03 12:33:52 +0300 |
---|---|---|
committer | Miguel Ojeda <ojeda@kernel.org> | 2023-04-22 02:46:45 +0300 |
commit | 4e1746656839ab1e88d76eec4d2fa0b41d585604 (patch) | |
tree | 3636331016fa3b21e46f4d54d0741c3b7f1021d4 /rust/uapi | |
parent | 19096bce815716cf93fc1ef3965629c3affa26f1 (diff) | |
download | linux-4e1746656839ab1e88d76eec4d2fa0b41d585604.tar.xz |
rust: uapi: Add UAPI crate
This crate mirrors the `bindings` crate, but will contain only UAPI
bindings. Unlike the bindings crate, drivers may directly use this crate
if they have to interface with userspace.
Initially, just bind the generic ioctl stuff.
In the future, we would also like to add additional checks to ensure
that all types exposed by this crate satisfy UAPI-safety guarantees
(that is, they are safely castable to/from a "bag of bits").
[ Miguel: added support for the `rustdoc` and `rusttest` targets,
since otherwise they fail, and we want to keep them working. ]
Reviewed-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
Signed-off-by: Asahi Lina <lina@asahilina.net>
Link: https://lore.kernel.org/r/20230329-rust-uapi-v2-1-bca5fb4d4a12@asahilina.net
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Diffstat (limited to 'rust/uapi')
-rw-r--r-- | rust/uapi/lib.rs | 27 | ||||
-rw-r--r-- | rust/uapi/uapi_helper.h | 9 |
2 files changed, 36 insertions, 0 deletions
diff --git a/rust/uapi/lib.rs b/rust/uapi/lib.rs new file mode 100644 index 000000000000..29f69f3a52de --- /dev/null +++ b/rust/uapi/lib.rs @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-2.0 + +//! UAPI Bindings. +//! +//! Contains the bindings generated by `bindgen` for UAPI interfaces. +//! +//! This crate may be used directly by drivers that need to interact with +//! userspace APIs. + +#![no_std] +#![feature(core_ffi_c)] +// See <https://github.com/rust-lang/rust-bindgen/issues/1651>. +#![cfg_attr(test, allow(deref_nullptr))] +#![cfg_attr(test, allow(unaligned_references))] +#![cfg_attr(test, allow(unsafe_op_in_unsafe_fn))] +#![allow( + clippy::all, + missing_docs, + non_camel_case_types, + non_upper_case_globals, + non_snake_case, + improper_ctypes, + unreachable_pub, + unsafe_op_in_unsafe_fn +)] + +include!(concat!(env!("OBJTREE"), "/rust/uapi/uapi_generated.rs")); diff --git a/rust/uapi/uapi_helper.h b/rust/uapi/uapi_helper.h new file mode 100644 index 000000000000..301f5207f023 --- /dev/null +++ b/rust/uapi/uapi_helper.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Header that contains the headers for which Rust UAPI bindings + * will be automatically generated by `bindgen`. + * + * Sorted alphabetically. + */ + +#include <uapi/asm-generic/ioctl.h> |