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

From: FUJITA Tomonori
Date: Thu Apr 10 2025 - 18:57:41 EST


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@xxxxxxxxx/
[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@xxxxxxxxx/

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