From: Asahi Lina <lina@asahilina.net>
To: "Miguel Ojeda" <ojeda@kernel.org>,
"Alex Gaynor" <alex.gaynor@gmail.com>,
"Wedson Almeida Filho" <wedsonaf@gmail.com>,
"Boqun Feng" <boqun.feng@gmail.com>,
"Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Will Deacon" <will@kernel.org>,
"Robin Murphy" <robin.murphy@arm.com>,
"Joerg Roedel" <joro@8bytes.org>,
"Hector Martin" <marcan@marcan.st>,
"Sven Peter" <sven@svenpeter.dev>,
"Arnd Bergmann" <arnd@arndb.de>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
Alyssa Rosenzweig <alyssa@rosenzweig.io>,
Neal Gompa <neal@gompa.dev>,
rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
asahi@lists.linux.dev, Asahi Lina <lina@asahilina.net>
Subject: [PATCH 2/5] rust: device: Add a minimal RawDevice trait
Date: Fri, 24 Feb 2023 19:53:14 +0900 [thread overview]
Message-ID: <20230224-rust-iopt-rtkit-v1-2-49ced3391295@asahilina.net> (raw)
In-Reply-To: <20230224-rust-iopt-rtkit-v1-0-49ced3391295@asahilina.net>
From: Wedson Almeida Filho <wedsonaf@gmail.com>
Add a RawDevice trait which can be implemented by any type representing
a device class (such as a PlatformDevice). This is the minimum amount of
Device support code required to unblock abstractions that need to take
device pointers.
Lina: Rewrote commit message, and dropped everything except RawDevice.
Co-developed-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Wedson Almeida Filho <wedsonaf@gmail.com>
Signed-off-by: Asahi Lina <lina@asahilina.net>
---
rust/bindings/bindings_helper.h | 1 +
rust/kernel/device.rs | 23 +++++++++++++++++++++++
rust/kernel/lib.rs | 1 +
3 files changed, 25 insertions(+)
diff --git a/rust/bindings/bindings_helper.h b/rust/bindings/bindings_helper.h
index 75d85bd6c592..3632a39a28a6 100644
--- a/rust/bindings/bindings_helper.h
+++ b/rust/bindings/bindings_helper.h
@@ -6,6 +6,7 @@
* Sorted alphabetically.
*/
+#include <linux/device.h>
#include <linux/slab.h>
#include <linux/refcount.h>
diff --git a/rust/kernel/device.rs b/rust/kernel/device.rs
new file mode 100644
index 000000000000..9be021e393ca
--- /dev/null
+++ b/rust/kernel/device.rs
@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: GPL-2.0
+
+//! Generic devices that are part of the kernel's driver model.
+//!
+//! C header: [`include/linux/device.h`](../../../../include/linux/device.h)
+
+use crate::bindings;
+
+/// A raw device.
+///
+/// # Safety
+///
+/// Implementers must ensure that the `*mut device` returned by [`RawDevice::raw_device`] is
+/// related to `self`, that is, actions on it will affect `self`. For example, if one calls
+/// `get_device`, then the refcount on the device represented by `self` will be incremented.
+///
+/// Additionally, implementers must ensure that the device is never renamed. Commit a5462516aa99
+/// ("driver-core: document restrictions on device_rename()") has details on why `device_rename`
+/// should not be used.
+pub unsafe trait RawDevice {
+ /// Returns the raw `struct device` related to `self`.
+ fn raw_device(&self) -> *mut bindings::device;
+}
diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs
index 82dff6f4cf60..de44092718f8 100644
--- a/rust/kernel/lib.rs
+++ b/rust/kernel/lib.rs
@@ -29,6 +29,7 @@ compile_error!("Missing kernel configuration for conditional compilation");
#[cfg(not(testlib))]
mod allocator;
mod build_assert;
+pub mod device;
pub mod error;
pub mod prelude;
pub mod print;
--
2.35.1
next prev parent reply other threads:[~2023-02-24 10:54 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-24 10:53 [PATCH 0/5] rust: Add io_pgtable and RTKit abstractions Asahi Lina
2023-02-24 10:53 ` [PATCH 1/5] rust: Add a Sealed trait Asahi Lina
2023-02-24 10:53 ` Asahi Lina [this message]
2023-02-24 11:23 ` [PATCH 2/5] rust: device: Add a minimal RawDevice trait Greg Kroah-Hartman
2023-02-24 13:15 ` Asahi Lina
2023-02-24 14:11 ` Greg Kroah-Hartman
2023-02-24 14:19 ` Greg Kroah-Hartman
2023-02-24 14:44 ` Asahi Lina
2023-02-24 15:25 ` Greg Kroah-Hartman
2023-02-24 15:45 ` Asahi Lina
2023-02-25 17:07 ` alyssa
2023-02-24 14:32 ` Robin Murphy
2023-02-24 14:48 ` Asahi Lina
2023-02-24 15:14 ` Robin Murphy
2023-02-24 16:23 ` Asahi Lina
2023-02-24 19:22 ` Miguel Ojeda
2023-03-05 6:52 ` Wedson Almeida Filho
2023-02-24 15:32 ` Greg Kroah-Hartman
2023-02-24 18:52 ` Robin Murphy
2023-02-25 7:00 ` Greg Kroah-Hartman
2023-02-24 14:43 ` Asahi Lina
2023-02-24 15:24 ` Greg Kroah-Hartman
2023-02-24 15:42 ` Asahi Lina
2023-02-24 10:53 ` [PATCH 3/5] rust: io_pgtable: Add io_pgtable abstraction Asahi Lina
2023-02-24 10:53 ` [PATCH 4/5] rust: soc: apple: rtkit: Add Apple RTKit abstraction Asahi Lina
2023-02-24 10:53 ` [PATCH 5/5] rust: device: Add a stub abstraction for devices Asahi Lina
2023-02-24 11:19 ` Greg Kroah-Hartman
2023-02-24 15:10 ` Asahi Lina
2023-02-24 15:34 ` Greg Kroah-Hartman
2023-02-24 15:51 ` Asahi Lina
2023-02-24 16:31 ` Greg Kroah-Hartman
2023-02-24 16:53 ` Asahi Lina
2023-03-05 6:39 ` Wedson Almeida Filho
2023-03-09 11:24 ` Greg Kroah-Hartman
2023-03-09 16:46 ` Wedson Almeida Filho
2023-03-09 17:11 ` Greg Kroah-Hartman
2023-03-09 19:06 ` Wedson Almeida Filho
2023-03-13 17:01 ` Gary Guo
2023-03-09 19:43 ` Miguel Ojeda
2023-03-13 17:52 ` Gary Guo
2023-03-13 18:05 ` Boqun Feng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230224-rust-iopt-rtkit-v1-2-49ced3391295@asahilina.net \
--to=lina@asahilina.net \
--cc=alex.gaynor@gmail.com \
--cc=alyssa@rosenzweig.io \
--cc=arnd@arndb.de \
--cc=asahi@lists.linux.dev \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=gary@garyguo.net \
--cc=gregkh@linuxfoundation.org \
--cc=joro@8bytes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marcan@marcan.st \
--cc=neal@gompa.dev \
--cc=ojeda@kernel.org \
--cc=rafael@kernel.org \
--cc=robin.murphy@arm.com \
--cc=rust-for-linux@vger.kernel.org \
--cc=sven@svenpeter.dev \
--cc=wedsonaf@gmail.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).