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(-)
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
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 > >
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.
© 2016 - 2025 Red Hat, Inc.