[PATCH v2 0/2] add Rust version of might_sleep()

FUJITA Tomonori posted 2 patches 4 weeks, 1 day ago
include/linux/kernel.h |  2 ++
kernel/sched/core.c    | 62 ++++++++++++++++++++++++++++--------------
rust/helpers/task.c    |  6 ++++
rust/kernel/task.rs    | 28 +++++++++++++++++++
4 files changed, 77 insertions(+), 21 deletions(-)
[PATCH v2 0/2] add Rust version of might_sleep()
Posted by FUJITA Tomonori 4 weeks, 1 day ago
This patchset adds Rust version of might_sleep().

These patches were previously part of the IO polling patchset [1], but
they were split out to make upstreaming easier.

The first patch is for sched/core, which adds
__might_sleep_precision(), rust friendly version of __might_sleep(),
which takes a pointer to a string with the length instead of a
null-terminated string. Rust's core::panic::Location::file(), which
gives the file name of a caller, doesn't provide a null-terminated
string. __might_sleep_precision() uses a precision specifier in the
printk format, which specifies the length of a string; a string
doesn't need to be a null-terminated. Providing a null-terminated
string for better C interoperability is under discussion [2].

The second patch adds a Rust implementation of might_sleep(), on top
of the changes in the first patch.

[1]: https://lore.kernel.org/lkml/20250220070611.214262-1-fujita.tomonori@gmail.com/
[2]: https://github.com/rust-lang/libs-team/issues/466

v2:
- improve SAFETY comment
v1: https://lore.kernel.org/lkml/20250406110718.126146-1-fujita.tomonori@gmail.com/

FUJITA Tomonori (2):
  sched/core: Add __might_sleep_precision()
  rust: task: add Rust version of might_sleep()

 include/linux/kernel.h |  2 ++
 kernel/sched/core.c    | 62 ++++++++++++++++++++++++++++--------------
 rust/helpers/task.c    |  6 ++++
 rust/kernel/task.rs    | 28 +++++++++++++++++++
 4 files changed, 77 insertions(+), 21 deletions(-)


base-commit: 0af2f6be1b4281385b618cb86ad946eded089ac8
-- 
2.43.0
Re: [PATCH v2 0/2] add Rust version of might_sleep()
Posted by Boqun Feng 2 weeks, 3 days ago
On Fri, Apr 11, 2025 at 07:56:21AM +0900, FUJITA Tomonori wrote:
> This patchset adds Rust version of might_sleep().
> 
> These patches were previously part of the IO polling patchset [1], but
> they were split out to make upstreaming easier.
> 
> The first patch is for sched/core, which adds
> __might_sleep_precision(), rust friendly version of __might_sleep(),
> which takes a pointer to a string with the length instead of a
> null-terminated string. Rust's core::panic::Location::file(), which
> gives the file name of a caller, doesn't provide a null-terminated
> string. __might_sleep_precision() uses a precision specifier in the
> printk format, which specifies the length of a string; a string
> doesn't need to be a null-terminated. Providing a null-terminated
> string for better C interoperability is under discussion [2].
> 
> The second patch adds a Rust implementation of might_sleep(), on top
> of the changes in the first patch.
> 
> [1]: https://lore.kernel.org/lkml/20250220070611.214262-1-fujita.tomonori@gmail.com/
> [2]: https://github.com/rust-lang/libs-team/issues/466
> 
> v2:
> - improve SAFETY comment
> v1: https://lore.kernel.org/lkml/20250406110718.126146-1-fujita.tomonori@gmail.com/
> 

@scheduler, if there is no objection, I'm going to take these two into a
pull request to tip soon. Thanks!

Regards,
Boqun

> FUJITA Tomonori (2):
>   sched/core: Add __might_sleep_precision()
>   rust: task: add Rust version of might_sleep()
> 
>  include/linux/kernel.h |  2 ++
>  kernel/sched/core.c    | 62 ++++++++++++++++++++++++++++--------------
>  rust/helpers/task.c    |  6 ++++
>  rust/kernel/task.rs    | 28 +++++++++++++++++++
>  4 files changed, 77 insertions(+), 21 deletions(-)
> 
> 
> base-commit: 0af2f6be1b4281385b618cb86ad946eded089ac8
> -- 
> 2.43.0
> 
>
Re: [PATCH v2 0/2] add Rust version of might_sleep()
Posted by Peter Zijlstra 2 weeks, 3 days ago
On Tue, Apr 22, 2025 at 07:30:05AM -0700, Boqun Feng wrote:
> On Fri, Apr 11, 2025 at 07:56:21AM +0900, FUJITA Tomonori wrote:
> > This patchset adds Rust version of might_sleep().
> > 
> > These patches were previously part of the IO polling patchset [1], but
> > they were split out to make upstreaming easier.
> > 
> > The first patch is for sched/core, which adds
> > __might_sleep_precision(), rust friendly version of __might_sleep(),
> > which takes a pointer to a string with the length instead of a
> > null-terminated string. Rust's core::panic::Location::file(), which
> > gives the file name of a caller, doesn't provide a null-terminated
> > string. __might_sleep_precision() uses a precision specifier in the
> > printk format, which specifies the length of a string; a string
> > doesn't need to be a null-terminated. Providing a null-terminated
> > string for better C interoperability is under discussion [2].
> > 
> > The second patch adds a Rust implementation of might_sleep(), on top
> > of the changes in the first patch.
> > 
> > [1]: https://lore.kernel.org/lkml/20250220070611.214262-1-fujita.tomonori@gmail.com/
> > [2]: https://github.com/rust-lang/libs-team/issues/466
> > 
> > v2:
> > - improve SAFETY comment
> > v1: https://lore.kernel.org/lkml/20250406110718.126146-1-fujita.tomonori@gmail.com/
> > 
> 
> @scheduler, if there is no objection, I'm going to take these two into a
> pull request to tip soon. Thanks!

Yeah, go ahead. I still think Rust should be fixed, but sure, we can
live with this until that time.