mirror of
https://github.com/torvalds/linux.git
synced 2025-04-09 14:45:27 +00:00
rust: file: optimize rust symbol generation for FileDescriptorReservation
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 ... T <kernel::fs::file::FileDescriptorReservation>::fd_install ... T <kernel::fs::file::FileDescriptorReservation>::get_unused_fd_flags ... 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. 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> Link: https://lore.kernel.org/r/20250317023702.2360726-1-kunwu.chan@linux.dev Reviewed-by: Alice Ryhl <aliceryhl@google.com> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
2014c95afe
commit
e27b0e3c54
@ -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) };
|
||||
@ -405,6 +406,7 @@ impl FileDescriptorReservation {
|
||||
}
|
||||
|
||||
/// Returns the file descriptor number that was reserved.
|
||||
#[inline]
|
||||
pub fn reserved_fd(&self) -> u32 {
|
||||
self.fd
|
||||
}
|
||||
@ -413,6 +415,7 @@ impl FileDescriptorReservation {
|
||||
///
|
||||
/// 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 +436,7 @@ impl FileDescriptorReservation {
|
||||
}
|
||||
|
||||
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`
|
||||
|
Loading…
x
Reference in New Issue
Block a user