Rust-for-Linux / linux

Adding support for the Rust language to the Linux kernel.
https://rust-for-linux.com
Other
3.83k stars 399 forks source link

Use `current!` instead of `bindings::get_current()` in `Task::pid_in_current_ns` #1047

Open y86-dev opened 7 months ago

y86-dev commented 7 months ago

The function Task::pid_in_current_ns in rust/kernel/task.rs uses bindings::get_current(). But there exists a safe abstraction for the raw binding: the current! macro. Change the implementation to use that abstraction instead.

You might also have to add a function on Task to get access to the raw C pointer.


This requires submitting a proper patch to the LKML and the Rust for Linux mailing list. Please recall to test your changes, to use a proper title for the commit, to sign your commit under the Developer's Certificate of Origin and so on. Please see https://docs.kernel.org/process/submitting-patches.html and https://rust-for-linux.com/contributing for details.

Please take this issue only if you are new to the kernel development process and you would like to use it as a test to submit your first patch to the kernel.

antonio-hickey commented 6 months ago

I'm not finding the function Task::pid_in_current_ns in rust/kernel/task.rs.

I see the use of bindings::get_current() in current() is this where we want to use the safe macro instead? @y86-dev

EDIT: I see now, it's in the rust-dev branch.

antonio-hickey commented 6 months ago

You might also have to add a function on Task to get access to the raw C pointer.

What's the reason I would or would not have to add a function to grab the raw C pointer? Any further detail on this would be appreciated, thanks.