Messages in this thread | | | From | Andreas Hindborg <> | Subject | Re: [PATCH 3/5] rust: error: Add to_result() helper | Date | Mon, 27 Feb 2023 14:26:02 +0100 |
| |
Asahi Lina <lina@asahilina.net> writes:
> From: Wedson Almeida Filho <wedsonaf@gmail.com> > > Add a to_result() helper to convert kernel C return values to a Rust > Result, mapping >=0 values to Ok(()) and negative values to Err(...), > with Error::from_kernel_errno() ensuring that the errno is within range. > > Lina: Imported from rust-for-linux/rust, originally developed by Wedson > as part of the AMBA device driver support. > > Signed-off-by: Wedson Almeida Filho <wedsonaf@gmail.com> > Signed-off-by: Asahi Lina <lina@asahilina.net> > ---
Reviewed-by: Andreas Hindborg <a.hindborg@samsung.com>
> rust/kernel/error.rs | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/rust/kernel/error.rs b/rust/kernel/error.rs > index 3b439fdb405c..1e8371f28746 100644 > --- a/rust/kernel/error.rs > +++ b/rust/kernel/error.rs > @@ -167,3 +167,13 @@ impl From<core::convert::Infallible> for Error { > /// it should still be modeled as returning a `Result` rather than > /// just an [`Error`]. > pub type Result<T = ()> = core::result::Result<T, Error>; > + > +/// Converts an integer as returned by a C kernel function to an error if it's negative, and > +/// `Ok(())` otherwise. > +pub fn to_result(err: core::ffi::c_int) -> Result { > + if err < 0 { > + Err(Error::from_kernel_errno(err)) > + } else { > + Ok(()) > + } > +}
| |