Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a rustix::fs::STATX_ATTR_MOUNT_ROOT constant. #1198

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/backend/libc/c.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ pub(crate) const PROC_SUPER_MAGIC: u32 = 0x0000_9fa0;
#[cfg(all(linux_kernel, target_env = "musl"))]
pub(crate) const NFS_SUPER_MAGIC: u32 = 0x0000_6969;

/// `STATX_ATTR_MOUNT_ROOT`—Address of the root of a mount
#[cfg(all(linux_kernel, target_env = "musl"))]
pub(crate) const STATX_ATTR_MOUNT_ROOT: c_int = 0x2000;
#[cfg(all(linux_kernel, target_env = "gnu"))]
pub(crate) const STATX_ATTR_MOUNT_ROOT: c_int = libc::STATX_ATTR_MOUNT_ROOT;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This module does use libc::* at the top, so this line is unnecessary.


#[cfg(feature = "process")]
#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
pub(crate) const EXIT_SIGNALED_SIGABRT: c_int = 128 + SIGABRT as c_int;
Expand Down
6 changes: 6 additions & 0 deletions src/backend/linux_raw/c.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ pub(crate) use linux_raw_sys::general::epoll_event;
)
)
))]
#[cfg(any(target_env = "musl", target_env = "gnu"))]
pub(crate) use linux_raw_sys::general::{
AT_FDCWD, NFS_SUPER_MAGIC, O_LARGEFILE, PROC_SUPER_MAGIC, STATX_ATTR_MOUNT_ROOT, UTIME_NOW,
UTIME_OMIT, XATTR_CREATE, XATTR_REPLACE,
};
#[cfg(not(any(target_env = "musl", target_env = "gnu")))]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The src/backend/linux_raw directory doesn't use libc bindings for most things, so we should be able to just add STATX_ATTR_MOUNT_ROOT to the use below instead of adding a new use here.

pub(crate) use linux_raw_sys::general::{
AT_FDCWD, NFS_SUPER_MAGIC, O_LARGEFILE, PROC_SUPER_MAGIC, UTIME_NOW, UTIME_OMIT, XATTR_CREATE,
XATTR_REPLACE,
Expand Down
2 changes: 2 additions & 0 deletions src/fs/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,8 @@ pub use sendfile::sendfile;
pub use special::*;
#[cfg(linux_kernel)]
pub use statx::statx;
#[cfg(all(linux_kernel, any(target_env = "musl", target_env = "gnu")))]
pub use statx::STATX_ATTR_MOUNT_ROOT;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One thing we can do to make this code a little tidier is just change the use statx::statx above to be use statx::*;, instead of adding a new use, so that we don't have to repeat all the cfgs.

#[cfg(not(any(
target_os = "espidf",
target_os = "redox",
Expand Down
5 changes: 5 additions & 0 deletions src/fs/statx.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ use backend::fs::syscalls::statx as _statx;
#[cfg(not(feature = "linux_4_11"))]
use compat::statx as _statx;

/// `STATX_ATTR_MOUNT_ROOT`—Address of the root of a mount
#[allow(dead_code)]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this is a pub const and re-exported in mod.rs, it shouldn't need allow(dead_code).

#[cfg(all(linux_kernel, any(target_env = "musl", target_env = "gnu")))]
pub const STATX_ATTR_MOUNT_ROOT: u32 = backend::c::STATX_ATTR_MOUNT_ROOT as u32;

/// `statx(dirfd, path, flags, mask, statxbuf)`
///
/// This function returns [`io::Errno::NOSYS`] if `statx` is not available on
Expand Down
Loading