Rust for Linux List
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Matthew Wood <thepacketgeek@gmail.com>
Cc: "Miguel Ojeda" <ojeda@kernel.org>,
	"Boqun Feng" <boqun@kernel.org>, "Gary Guo" <gary@garyguo.net>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <lossin@kernel.org>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"Breno Leito" <leitao@debian.org>,
	rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1] rust: console: add abstraction for kernel console drivers
Date: Fri, 27 Feb 2026 18:14:43 -0500	[thread overview]
Message-ID: <2026022704-xbox-comfort-2493@gregkh> (raw)
In-Reply-To: <20260227215357.667257-1-thepacketgeek@gmail.com>

On Fri, Feb 27, 2026 at 01:53:56PM -0800, Matthew Wood wrote:
> Add a safe Rust abstraction for the kernel's `struct console`,
> enabling console drivers to be implemented in Rust that provides:
> 
>   - `ConsoleOps` trait with a required `write` callback and an
>     optional `setup` callback, mirroring the C console_operations
>     interface. The trait requires `Send + Sync` to reflect that
>     console write may be called from any context including IRQ.
> 
>   - `Console<T>` struct that wraps `struct console` using pin-init
>     and `Opaque<T>`, with automatic unregistration via `PinnedDrop`.
>     Registration is performed through a pin-initializer returned by
>     `Console::register()`, which uses `pin_chain` to set the data
>     pointer and call `register_console()` after the struct is pinned.
> 
>   - `ConsoleOpsAdapter<T>` that provides the extern "C" callbacks
>     bridging from the kernel's function pointers to the Rust trait
>     methods. The `#[vtable]` attribute on `ConsoleOps` enables
>     compile-time detection of whether `setup` is implemented via
>     `T::HAS_SETUP`.
> 
>   - Console flag constants re-exported from the C `enum cons_flags`.
> 
> C helper functions are added for `register_console()`,
> `unregister_console()`, and `console_is_registered()` as these are
> either inlines or macros that cannot be called directly from Rust
> through bindgen.
> 
> This abstraction is a dependency for a Rust netconsole implementation
> I am working on.

I'd prefer to see it then, with the user, before even reviewing this
one, sorry.  That way we "know" it at least works for you.

thanks,

greg k-h

  reply	other threads:[~2026-02-27 23:14 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-27 21:53 [PATCH v1] rust: console: add abstraction for kernel console drivers Matthew Wood
2026-02-27 23:14 ` Greg Kroah-Hartman [this message]
2026-02-27 23:44   ` Matthew Wood
2026-02-28  0:17     ` Miguel Ojeda

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=2026022704-xbox-comfort-2493@gregkh \
    --to=gregkh@linuxfoundation.org \
    --cc=a.hindborg@kernel.org \
    --cc=aliceryhl@google.com \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun@kernel.org \
    --cc=dakr@kernel.org \
    --cc=gary@garyguo.net \
    --cc=leitao@debian.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lossin@kernel.org \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=thepacketgeek@gmail.com \
    --cc=tmgross@umich.edu \
    /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