8000 Tags · rlmenge/linux · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Tags: rlmenge/linux

Tags

rust-6.5

Toggle rust-6.5's commit message

Verified

This tag was signed with the committer’s verified signature.
ojeda Miguel Ojeda
Rust changes for v6.5

A fairly small one in terms of feature additions. Most of the changes in
terms of lines come from the upgrade to the new version of the toolchain
(which in turn is big due to the vendored 'alloc' crate).

 - Upgrade to Rust 1.68.2:

   This is the first such upgrade, and we will try to update it often
   from now on, in order to remain close to the latest release, until
   a minimum version (which is "in the future") can be established.

   The upgrade brings the stabilization of 4 features we used (and 2
   more that we used in our old 'rust' branch).

   Commit 3ed03f4 ("rust: upgrade to Rust 1.68.2") contains the
   details and rationale.

 - pin-init API:

   Several internal improvements and fixes to the pin-init API, e.g.
   allowing to use 'Self' in a struct definition with '#[pin_data]'.

 - 'error'  module:

   New 'name()' method for the 'Error' type (with 'errname()'
   integration), used to implement the 'Debug' trait for 'Error'.

   Add error codes from 'include/linux/errno.h' to the list of Rust
   'Error' constants.

   Allow specifying error type on the 'Result' type (with the default
   still being our usual 'Error' type).

 - 'str' module:

   'TryFrom' implementation for 'CStr', and new 'to_cstring()' method
   based on it.

 - 'sync' module:

   Implement 'AsRef' trait for 'Arc', allowing to use 'Arc' in code that
   is generic over smart pointer types.

   Add 'ptr_eq' method to 'Arc' for easier, less error prone comparison
   between two 'Arc' pointers.

   Reword the 'Send' safety comment for 'Arc', and avoid referencing it
   from the 'Sync' one.

 - 'task' module:

   Implement 'Send' marker for 'Task'.

 - 'types' module:

   Implement 'Send' and 'Sync' markers for 'ARef<T>' when 'T' is
   'AlwaysRefCounted', 'Send' and 'Sync'.

 - Other changes:

   Documentation improvements and '.gitattributes' change to start
   using the Rust diff driver.

rust-6.4

Toggle rust-6.4's commit message

Verified

This tag was signed with the committer’s verified signature.
ojeda Miguel Ojeda
Rust changes for v6.4

More additions to the Rust core. Importantly, this adds the pin-init
API, which will be used by other abstractions, such as the
synchronization ones added here too:

  - pin-init API: a solution for the safe pinned initialization problem.
    This allows to reduce the need for 'unsafe' code in the kernel when
    dealing with data structures that require a stable address. Commit
    90e53c5 ("rust: add pin-init API core") contains a nice
    introduction -- here is an example of how it looks like:

        #[pin_data]
        struct Example {
            #[pin]
            value: Mutex<u32>,

            #[pin]
            value_changed: CondVar,
        }

        impl Example {
            fn new() -> impl PinInit<Self> {
                pin_init!(Self {
                    value <- new_mutex!(0),
                    value_changed <- new_condvar!(),
                })
            }
        }

        // In a `Box`.
        let b = Box::pin_init(Example::new())?;

        // In the stack.
        stack_pin_init!(let s = Example::new());

  - 'sync' module: new types 'LockClassKey' ('struct lock_class_key'),
    'Lock', 'Guard', 'Mutex' ('struct mutex'), 'SpinLock'
    ('spinlock_t'), 'LockedBy' and 'CondVar' (uses 'wait_queue_head_t'),
    plus macros such as 'static_lock_class!' and 'new_spinlock!'.

    In particular, 'Lock' and 'Guard' are generic implementations that
    contain code that is common to all locks. Then, different backends
    (the new 'Backend' trait) are implemented and used to define types
    like 'Mutex':

        type Mutex<T> = Lock<T, MutexBackend>;

    In addition, new methods 'assume_init()', 'init_with()' and
    'pin_init_with()' for 'UniqueArc<MaybeUninit<T>>' and 'downcast()'
    for 'Arc<dyn Any + Send + Sync>'; as well as 'Debug' and 'Display'
    implementations for 'Arc' and 'UniqueArc'. Reduced stack usage of
    'UniqueArc::try_new_uninit()', too.

  - 'types' module: new trait 'AlwaysRefCounted' and new type 'ARef'
    (an owned reference to an always-reference-counted object, meant to
    be used in wrappers for C types that have their own ref counting
    functions).

    Moreover, new associated functions 'raw_get()' and 'ffi_init()'
    for 'Opaque'.

  - New 'task' module with a new type 'Task' ('struct task_struct'), and
    a new macro 'current!' to safely get a reference to the current one.

  - New 'ioctl' module with new '_IOC*' const functions (equivalent to
    the C macros).

  - New 'uapi' crate, intended to be accessible by drivers directly.

  - 'macros' crate: new 'quote!' macro (similar to the one provided in
    userspace by the 'quote' crate); and the 'module!' macro now allows
    specifying multiple module aliases.

  - 'error' module: new associated functions for the 'Error' type,
    such as 'from_errno()' and new functions such as 'to_result()'.

  - 'alloc' crate: more fallible 'Vec' methods: 'try_resize` and
    'try_extend_from_slice' and the infrastructure (imported from
    the Rust standard library) they need.

rust-fixes-6.3

Toggle rust-fixes-6.3's commit message

Verified

This tag was signed with the committer’s verified signature.
ojeda Miguel Ojeda
Rust fixes for v6.3

 - Build: Rust + GCC build fix and 'grep' warning fix.

 - Code: Missing 'extern "C"' fix.

 - Scripts: 'is_rust_module.sh' and 'generate_rust_analyzer.py' fixes.

 - A couple trivial fixes.

rust-fixes-6.3-rc1

Toggle rust-fixes-6.3-rc1's commit message

Verified

This tag was signed with the committer’s verified signature.
ojeda Miguel Ojeda
Rust fixes for 6.3-rc1

A single build error fix: there was a change during the merge window
to a C header parsed by the Rust bindings generator, introducing a
type that it does not handle well. The fix tells the generator to
treat the type as opaque (for now).

rust-6.3

Toggle rust-6.3's commit message

Verified

This tag was signed with the committer’s verified signature.
ojeda Miguel Ojeda
Rust changes for v6.3

More core additions, getting closer to a point where the first Rust
modules can be upstreamed. The major ones being:

- Sync: new types 'Arc', 'ArcBorrow' and 'UniqueArc'.

- Types: new trait 'ForeignOwnable' and new type 'ScopeGuard'.

There is also a substantial removal in terms of lines:

- 'alloc' crate: remove the 'borrow' module (type 'Cow' and trait
  'ToOwned').

rust-fixes-6.2

Toggle rust-fixes-6.2's commit message

Verified

This tag was signed with the committer’s verified signature.
ojeda Miguel Ojeda
Rust fixes for v6.2

A soundness fix:

 - Avoid evaluating arguments in 'pr_*' macros in 'unsafe' blocks.

rust-6.2

Toggle rust-6.2's commit message

Verified

This tag was signed with the committer’s verified signature.
ojeda Miguel Ojeda
Rust changes for v6.2

The first set of changes after the merge, the major ones being:

- String and formatting: new types `CString`, `CStr`, `BStr` and
  `Formatter`; new macros `c_str!`, `b_str!` and `fmt!`.

- Errors: the rest of the error codes from `errno-base.h`, as well as
  some `From` trait implementations for the `Error` type.

- Printing: the rest of the `pr_*!` levels and the continuation one
  `pr_cont!`, as well as a new sample.

- `alloc` crate: new constructors `try_with_capacity()` and
  `try_with_capacity_in()` for `RawVec` and `Vec`.

- Procedural macros: new macros `#[vtable]` and `concat_idents!`, as
  well as better ergonomics for `module!` users.

- Asserting: new macros `static_assert!`, `build_error!` and
  `build_assert!`, as well as a new crate `build_error` to support them.

- Vocabulary types: new types `Opaque` and `Either`.

- Debugging: new macro `dbg!`.

rust-v6.1-rc1

Toggle rust-v6.1-rc1's commit message
Rust introduction for v6.1-rc1

The initial support of Rust-for-Linux comes in roughly 4 areas:

- Kernel internals (kallsyms expansion for Rust symbols, %pA format)

- Kbuild infrastructure (Rust build rules and support scripts)

- Rust crates and bindings for initial minimum viable build

- Rust kernel documentation and samples

Rust support has been in linux-next for a year and a half now, and the
short log doesn't do justice to the number of people who have contributed
both to the Linux kernel side but also to the upstream Rust side to
support the kernel's needs. Thanks to these 173 people, and many more,
who have been involved in all kinds of ways:

Miguel Ojeda, Wedson Almeida Filho, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Andreas Hindborg, Adam Bratschi-Kaye, Benno Lossin,
Maciej Falkowski, Finn Behrens, Sven Van Asbroeck, Asahi Lina, FUJITA
Tomonori, John Baublitz, Wei Liu, Geoffrey Thomas, Philip Herron,
Arthur Cohen, David Faust, Antoni Boucher, Philip Li, Yujie Liu,
Jonathan Corbet, Greg Kroah-Hartman, Paul E. McKenney, Josh Triplett,
Kent Overstreet, David Gow, Alice Ryhl, Robin Randhawa, Kees Cook,
Nick Desaulniers, Matthew Wilcox, Linus Walleij, Joe Perches, Michael
Ellerman, Petr Mladek, Masahiro Yamada, Arnaldo Carvalho de Melo,
Andrii Nakryiko, Konstantin Shelekhin, Rasmus Villemoes, Konstantin
Ryabitsev, Stephen Rothwell, Andy Shevchenko, Sergey Senozhatsky, John
Paul Adrian Glaubitz, David Laight, Nathan Chancellor, Jonathan
Cameron, Daniel Latypov, Shuah Khan, Brendan Higgins, Julia Lawall,
Laurent Pinchart, Geert Uytterhoeven, Akira Yokosawa, Pavel Machek,
David S. Miller, John Hawley, James Bottomley, Arnd Bergmann,
Christian Brauner, Dan Robertson, Nicholas Piggin, Zhouyi Zhou, Elena
Zannoni, Jose E. Marchesi, Leon Romanovsky, Will Deacon, Richard
Weinberger, Randy Dunlap, Paolo Bonzini, Roland Dreier, Mark Brown,
Sasha Levin, Ted Ts'o, Steven Rostedt, Jarkko Sakkinen, Michal
Kubecek, Marco Elver, Al Viro, Keith Busch, Johannes Berg, Jan Kara,
David Sterba, Connor Kuehl, Andy Lutomirski, Andrew Lunn, Alexandre
Belloni, Peter Zijlstra, Russell King, Eric W. Biederman, Willy
Tarreau, Christoph Hellwig, Emilio Cobos Álvarez, Christian Poveda,
Mark Rousskov, John Ericson, TennyZhuang, Xuanwo, Daniel Paoliello,
Manish Goregaokar, comex, Josh Stone, Stephan Sokolow, Philipp Krones,
Guillaume Gomez, Joshua Nelson, Mats Larsen, Marc Poulhiès, Samantha
Miller, Esteban Blanc, Martin Schmidt, Martin Rodriguez Reboredo,
Daniel Xu, Viresh Kumar, Bartosz Golaszewski, Vegard Nossum, Milan
Landaverde, Dariusz Sosnowski, Yuki Okushi, Matthew Bakhtiari, Wu
XiangCheng, Tiago Lam, Boris-Chengbiao Zhou, Sumera Priyadarsini,
Viktor Garske, Niklas Mohrin, Nándor István Krácser, Morgan Bartlett,
Miguel Cano, Léo Lanteri Thauvin, Julian Merkle, Andreas Reindl,
Jiapeng Chong, Fox Chen, Douglas Su, Antonio Terceiro, SeongJae Park,
Sergio González Collado, Ngo Iok Ui (Wu Yu Wei), Joshua Abraham,
Milan, Daniel Kolsoi, ahomescu, Manas, Luis Gerhorst, Li Hongyu,
Philipp Gesang, Russell Currey, Jalil David Salamé Messina, Jon Olson,
Raghvender, Angelos, Kaviraj Kanagaraj, Paul Römer, Sladyn Nunes,
Mauro Baladés, Hsiang-Cheng Yang, Abhik Jain, Hongyu Li, Sean Nash,
Yuheng Su, Peng Hao, Anhad Singh, Roel Kluin, Sara Saa, Geert
Stappers, Garrett LeSage, IFo Hancroft, and Linus Torvalds.

v5.9-rc2

Toggle v5.9-rc2's commit message
Linux 5.9-rc2

v5.3-rc8

Toggle v5.3-rc8's commit message
Linux 5.3-rc8

0