* [PATCH] rust: file: optimize rust symbol generation for FileDescriptorReservation
@ 2025-03-13 8:45 Kunwu Chan
2025-03-13 10:47 ` Alice Ryhl
0 siblings, 1 reply; 5+ messages in thread
From: Kunwu Chan @ 2025-03-13 8:45 UTC (permalink / raw)
To: ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh, benno.lossin,
a.hindborg, aliceryhl, tmgross, dakr, nathan,
nick.desaulniers+lkml, morbo, justinstitt
Cc: rust-for-linux, linux-kernel, llvm, Kunwu Chan, Grace Deng
From: Kunwu Chan <kunwu.chan@hotmail.com>
When build the kernel using the llvm-18.1.3-rust-1.85.0-x86_64
with ARCH=arm64, the following symbols are generated:
$ nm vmlinux | grep ' _R'.*FileDescriptorReservation | rustfilt
ffff8000805b6ef0 T <kernel::fs::file::FileDescriptorReservation>
::fd_install
ffff8000805b6e60 T <kernel::fs::file::FileDescriptorReservation>
::get_unused_fd_flags
ffff8000805b6f08 T <kernel::fs::file::FileDescriptorReservation
as core::ops::drop::Drop>::drop
These Rust symbols are trivial wrappers around the C functions
fd_install, put_unused_fd and put_task_struct.It
doesn't make sense to go through a trivial wrapper for these
functions, so mark them inline.
After doing so, the above symbol will not in output.
Signed-off-by: Kunwu Chan <kunwu.chan@hotmail.com>
Co-developed-by: Grace Deng <Grace.Deng006@Gmail.com>
Signed-off-by: Grace Deng <Grace.Deng006@Gmail.com>
---
rust/kernel/fs/file.rs | 3 +++
1 file changed, 3 insertions(+)
diff --git a/rust/kernel/fs/file.rs b/rust/kernel/fs/file.rs
index e03dbe14d62a..3dda2bfca1a6 100644
--- a/rust/kernel/fs/file.rs
+++ b/rust/kernel/fs/file.rs
@@ -392,6 +392,7 @@ pub struct FileDescriptorReservation {
impl FileDescriptorReservation {
/// Creates a new file descriptor reservation.
+ #[inline]
pub fn get_unused_fd_flags(flags: u32) -> Result<Self> {
// SAFETY: FFI call, there are no safety requirements on `flags`.
let fd: i32 = unsafe { bindings::get_unused_fd_flags(flags) };
@@ -413,6 +414,7 @@ pub fn reserved_fd(&self) -> u32 {
///
/// The previously reserved file descriptor is bound to `file`. This method consumes the
/// [`FileDescriptorReservation`], so it will not be usable after this call.
+ #[inline]
pub fn fd_install(self, file: ARef<File>) {
// SAFETY: `self.fd` was previously returned by `get_unused_fd_flags`. We have not yet used
// the fd, so it is still valid, and `current` still refers to the same task, as this type
@@ -433,6 +435,7 @@ pub fn fd_install(self, file: ARef<File>) {
}
impl Drop for FileDescriptorReservation {
+ #[inline]
fn drop(&mut self) {
// SAFETY: By the type invariants of this type, `self.fd` was previously returned by
// `get_unused_fd_flags`. We have not yet used the fd, so it is still valid, and `current`
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] rust: file: optimize rust symbol generation for FileDescriptorReservation
2025-03-13 8:45 [PATCH] rust: file: optimize rust symbol generation for FileDescriptorReservation Kunwu Chan
@ 2025-03-13 10:47 ` Alice Ryhl
2025-03-14 2:33 ` Kunwu Chan
0 siblings, 1 reply; 5+ messages in thread
From: Alice Ryhl @ 2025-03-13 10:47 UTC (permalink / raw)
To: Kunwu Chan
Cc: ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh, benno.lossin,
a.hindborg, tmgross, dakr, nathan, nick.desaulniers+lkml, morbo,
justinstitt, rust-for-linux, linux-kernel, llvm, Kunwu Chan,
Grace Deng
On Thu, Mar 13, 2025 at 04:45:25PM +0800, Kunwu Chan wrote:
> From: Kunwu Chan <kunwu.chan@hotmail.com>
>
> When build the kernel using the llvm-18.1.3-rust-1.85.0-x86_64
> with ARCH=arm64, the following symbols are generated:
>
> $ nm vmlinux | grep ' _R'.*FileDescriptorReservation | rustfilt
> ffff8000805b6ef0 T <kernel::fs::file::FileDescriptorReservation>
> ::fd_install
> ffff8000805b6e60 T <kernel::fs::file::FileDescriptorReservation>
> ::get_unused_fd_flags
> ffff8000805b6f08 T <kernel::fs::file::FileDescriptorReservation
> as core::ops::drop::Drop>::drop
>
> These Rust symbols are trivial wrappers around the C functions
> fd_install, put_unused_fd and put_task_struct.It
> doesn't make sense to go through a trivial wrapper for these
> functions, so mark them inline.
>
> After doing so, the above symbol will not in output.
>
> Signed-off-by: Kunwu Chan <kunwu.chan@hotmail.com>
> Co-developed-by: Grace Deng <Grace.Deng006@Gmail.com>
> Signed-off-by: Grace Deng <Grace.Deng006@Gmail.com>
A few notes:
* Your own Signed-off-by must always be last.
* You're missing Link: and Suggested-by: tags.
* There are some grammar issues, e.g. a missing space before "It" and
the phrase "will not in output" is not good.
* Let's also add the marker to `reserved_fd` to be on the safe side.
* I think it is easier to read the symbols if you list each sybmol on
one line like this:
ffff8000805b6ef0 T <kernel::fs::file::FileDescriptorReservation>::fd_install
ffff8000805b6e60 T <kernel::fs::file::FileDescriptorReservation>::get_unused_fd_flags
ffff8000805b6f08 T <kernel::fs::file::FileDescriptorReservation as core::ops::drop::Drop>::drop
Alice
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] rust: file: optimize rust symbol generation for FileDescriptorReservation
2025-03-13 10:47 ` Alice Ryhl
@ 2025-03-14 2:33 ` Kunwu Chan
2025-03-14 9:21 ` Alice Ryhl
0 siblings, 1 reply; 5+ messages in thread
From: Kunwu Chan @ 2025-03-14 2:33 UTC (permalink / raw)
To: Alice Ryhl
Cc: ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh, benno.lossin,
a.hindborg, tmgross, dakr, nathan, nick.desaulniers+lkml, morbo,
justinstitt, rust-for-linux, linux-kernel, llvm, Kunwu Chan,
Grace Deng
On 2025/3/13 18:47, Alice Ryhl wrote:
> On Thu, Mar 13, 2025 at 04:45:25PM +0800, Kunwu Chan wrote:
>> From: Kunwu Chan <kunwu.chan@hotmail.com>
>>
>> When build the kernel using the llvm-18.1.3-rust-1.85.0-x86_64
>> with ARCH=arm64, the following symbols are generated:
>>
>> $ nm vmlinux | grep ' _R'.*FileDescriptorReservation | rustfilt
>> ffff8000805b6ef0 T <kernel::fs::file::FileDescriptorReservation>
>> ::fd_install
>> ffff8000805b6e60 T <kernel::fs::file::FileDescriptorReservation>
>> ::get_unused_fd_flags
>> ffff8000805b6f08 T <kernel::fs::file::FileDescriptorReservation
>> as core::ops::drop::Drop>::drop
>>
>> These Rust symbols are trivial wrappers around the C functions
>> fd_install, put_unused_fd and put_task_struct.It
>> doesn't make sense to go through a trivial wrapper for these
>> functions, so mark them inline.
>>
>> After doing so, the above symbol will not in output.
>>
>> Signed-off-by: Kunwu Chan <kunwu.chan@hotmail.com>
>> Co-developed-by: Grace Deng <Grace.Deng006@Gmail.com>
>> Signed-off-by: Grace Deng <Grace.Deng006@Gmail.com>
> A few notes:
>
> * Your own Signed-off-by must always be last.
> * You're missing Link: and Suggested-by: tags.
Thanks for the reply.
I'll change my own Signed-off-by be last and add Link and Suggested-by
as the following:
Link: https://github.com/Rust-for-Linux/linux/issues/1145
Suggested-by: Alice Ryhl <aliceryhl@google.com>
Co-developed-by: Grace Deng <Grace.Deng006@Gmail.com>
Signed-off-by: Grace Deng <Grace.Deng006@Gmail.com>
Signed-off-by: Kunwu Chan <kunwu.chan@hotmail.com>
> * There are some grammar issues, e.g. a missing space before "It" and
> the phrase "will not in output" is not good.
I'll add a space before "It" and remove the last line.
> * Let's also add the marker to `reserved_fd` to be on the safe side.
Sure, I'll make 'reserved_fd ' inline in v2.
> * I think it is easier to read the symbols if you list each sybmol on
> one line like this:
>
> ffff8000805b6ef0 T <kernel::fs::file::FileDescriptorReservation>::fd_install
> ffff8000805b6e60 T <kernel::fs::file::FileDescriptorReservation>::get_unused_fd_flags
> ffff8000805b6f08 T <kernel::fs::file::FileDescriptorReservation as core::ops::drop::Drop>::drop
If in one line, checkpatch.pl will report a warning:
WARNING:Prefer a maximum 75 chars per line (possible unwrapped commit
description?)
If no need to bother with the warning, I'll change it to one line in v2.
>
> Alice
--
Thanks,
Kunwu.Chan(Tao.chan)
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] rust: file: optimize rust symbol generation for FileDescriptorReservation
2025-03-14 2:33 ` Kunwu Chan
@ 2025-03-14 9:21 ` Alice Ryhl
2025-03-17 1:26 ` Kunwu Chan
0 siblings, 1 reply; 5+ messages in thread
From: Alice Ryhl @ 2025-03-14 9:21 UTC (permalink / raw)
To: Kunwu Chan
Cc: ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh, benno.lossin,
a.hindborg, tmgross, dakr, nathan, nick.desaulniers+lkml, morbo,
justinstitt, rust-for-linux, linux-kernel, llvm, Kunwu Chan,
Grace Deng
On Fri, Mar 14, 2025 at 3:34 AM Kunwu Chan <kunwu.chan@linux.dev> wrote:
> > * I think it is easier to read the symbols if you list each sybmol on
> > one line like this:
> >
> > ffff8000805b6ef0 T <kernel::fs::file::FileDescriptorReservation>::fd_install
> > ffff8000805b6e60 T <kernel::fs::file::FileDescriptorReservation>::get_unused_fd_flags
> > ffff8000805b6f08 T <kernel::fs::file::FileDescriptorReservation as core::ops::drop::Drop>::drop
>
> If in one line, checkpatch.pl will report a warning:
>
> WARNING:Prefer a maximum 75 chars per line (possible unwrapped commit
> description?)
>
> If no need to bother with the warning, I'll change it to one line in v2.
You could do this:
... T <kernel::fs::file::FileDescriptorReservation>::fd_install
but if it's still too long I'd just ignore it.
Alice
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] rust: file: optimize rust symbol generation for FileDescriptorReservation
2025-03-14 9:21 ` Alice Ryhl
@ 2025-03-17 1:26 ` Kunwu Chan
0 siblings, 0 replies; 5+ messages in thread
From: Kunwu Chan @ 2025-03-17 1:26 UTC (permalink / raw)
To: Alice Ryhl
Cc: ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh, benno.lossin,
a.hindborg, tmgross, dakr, nathan, nick.desaulniers+lkml, morbo,
justinstitt, rust-for-linux, linux-kernel, llvm, Kunwu Chan,
Grace Deng
On 2025/3/14 17:21, Alice Ryhl wrote:
> On Fri, Mar 14, 2025 at 3:34 AM Kunwu Chan <kunwu.chan@linux.dev> wrote:
>>> * I think it is easier to read the symbols if you list each sybmol on
>>> one line like this:
>>>
>>> ffff8000805b6ef0 T <kernel::fs::file::FileDescriptorReservation>::fd_install
>>> ffff8000805b6e60 T <kernel::fs::file::FileDescriptorReservation>::get_unused_fd_flags
>>> ffff8000805b6f08 T <kernel::fs::file::FileDescriptorReservation as core::ops::drop::Drop>::drop
>> If in one line, checkpatch.pl will report a warning:
>>
>> WARNING:Prefer a maximum 75 chars per line (possible unwrapped commit
>> description?)
>>
>> If no need to bother with the warning, I'll change it to one line in v2.
> You could do this:
> ... T <kernel::fs::file::FileDescriptorReservation>::fd_install
> but if it's still too long I'd just ignore it.
Thanks, I'll change it in v2.
>
> Alice
--
Thanks,
Kunwu.Chan
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-03-17 1:27 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-13 8:45 [PATCH] rust: file: optimize rust symbol generation for FileDescriptorReservation Kunwu Chan
2025-03-13 10:47 ` Alice Ryhl
2025-03-14 2:33 ` Kunwu Chan
2025-03-14 9:21 ` Alice Ryhl
2025-03-17 1:26 ` Kunwu Chan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).