linux/rust/helpers/task.c
FUJITA Tomonori 7e611710ac rust: task: Add Rust version of might_sleep()
Add a helper function equivalent to the C's might_sleep(), which
serves as a debugging aid and a potential scheduling point.

Note that this function can only be used in a nonatomic context.

This will be used by Rust version of read_poll_timeout().

[boqun: Use file_from_location() to get a C string instead of changing
__might_sleep()]

Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Link: https://lore.kernel.org/r/20250619151007.61767-3-boqun.feng@gmail.com
2025-06-24 15:53:50 -07:00

62 lines
1.1 KiB
C

// SPDX-License-Identifier: GPL-2.0
#include <linux/kernel.h>
#include <linux/sched/task.h>
void rust_helper_might_resched(void)
{
might_resched();
}
struct task_struct *rust_helper_get_current(void)
{
return current;
}
void rust_helper_get_task_struct(struct task_struct *t)
{
get_task_struct(t);
}
void rust_helper_put_task_struct(struct task_struct *t)
{
put_task_struct(t);
}
kuid_t rust_helper_task_uid(struct task_struct *task)
{
return task_uid(task);
}
kuid_t rust_helper_task_euid(struct task_struct *task)
{
return task_euid(task);
}
#ifndef CONFIG_USER_NS
uid_t rust_helper_from_kuid(struct user_namespace *to, kuid_t uid)
{
return from_kuid(to, uid);
}
#endif /* CONFIG_USER_NS */
bool rust_helper_uid_eq(kuid_t left, kuid_t right)
{
return uid_eq(left, right);
}
kuid_t rust_helper_current_euid(void)
{
return current_euid();
}
struct user_namespace *rust_helper_current_user_ns(void)
{
return current_user_ns();
}
pid_t rust_helper_task_tgid_nr_ns(struct task_struct *tsk,
struct pid_namespace *ns)
{
return task_tgid_nr_ns(tsk, ns);
}