Skip to content

Commit c44e09a

Browse files
committed
std: begin moving platform support modules into pal
1 parent e24e5af commit c44e09a

File tree

247 files changed

+129
-121
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

247 files changed

+129
-121
lines changed

library/std/src/sys/mod.rs

Lines changed: 8 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -1,121 +1,8 @@
1-
//! Platform-dependent platform abstraction.
2-
//!
3-
//! The `std::sys` module is the abstracted interface through which
4-
//! `std` talks to the underlying operating system. It has different
5-
//! implementations for different operating system families, today
6-
//! just Unix and Windows, and initial support for Redox.
7-
//!
8-
//! The centralization of platform-specific code in this module is
9-
//! enforced by the "platform abstraction layer" tidy script in
10-
//! `tools/tidy/src/pal.rs`.
11-
//!
12-
//! This module is closely related to the platform-independent system
13-
//! integration code in `std::sys_common`. See that module's
14-
//! documentation for details.
15-
//!
16-
//! In the future it would be desirable for the independent
17-
//! implementations of this module to be extracted to their own crates
18-
//! that `std` can link to, thus enabling their implementation
19-
//! out-of-tree via crate replacement. Though due to the complex
20-
//! inter-dependencies within `std` that will be a challenging goal to
21-
//! achieve.
22-
23-
#![allow(missing_debug_implementations)]
24-
25-
pub mod common;
26-
mod personality;
27-
28-
cfg_if::cfg_if! {
29-
if #[cfg(unix)] {
30-
mod unix;
31-
pub use self::unix::*;
32-
} else if #[cfg(windows)] {
33-
mod windows;
34-
pub use self::windows::*;
35-
} else if #[cfg(target_os = "solid_asp3")] {
36-
mod solid;
37-
pub use self::solid::*;
38-
} else if #[cfg(target_os = "hermit")] {
39-
mod hermit;
40-
pub use self::hermit::*;
41-
} else if #[cfg(target_os = "wasi")] {
42-
mod wasi;
43-
pub use self::wasi::*;
44-
} else if #[cfg(target_family = "wasm")] {
45-
mod wasm;
46-
pub use self::wasm::*;
47-
} else if #[cfg(target_os = "xous")] {
48-
mod xous;
49-
pub use self::xous::*;
50-
} else if #[cfg(target_os = "uefi")] {
51-
mod uefi;
52-
pub use self::uefi::*;
53-
} else if #[cfg(all(target_vendor = "fortanix", target_env = "sgx"))] {
54-
mod sgx;
55-
pub use self::sgx::*;
56-
} else {
57-
mod unsupported;
58-
pub use self::unsupported::*;
59-
}
60-
}
61-
62-
cfg_if::cfg_if! {
63-
// Fuchsia components default to full backtrace.
64-
if #[cfg(target_os = "fuchsia")] {
65-
pub const FULL_BACKTRACE_DEFAULT: bool = true;
66-
} else {
67-
pub const FULL_BACKTRACE_DEFAULT: bool = false;
68-
}
69-
}
70-
71-
#[cfg(not(test))]
72-
cfg_if::cfg_if! {
73-
if #[cfg(target_os = "android")] {
74-
pub use self::android::log2f32;
75-
pub use self::android::log2f64;
76-
} else {
77-
#[inline]
78-
pub fn log2f32(n: f32) -> f32 {
79-
unsafe { crate::intrinsics::log2f32(n) }
80-
}
81-
82-
#[inline]
83-
pub fn log2f64(n: f64) -> f64 {
84-
unsafe { crate::intrinsics::log2f64(n) }
85-
}
86-
}
87-
}
88-
89-
// Solaris/Illumos requires a wrapper around log, log2, and log10 functions
90-
// because of their non-standard behavior (e.g., log(-n) returns -Inf instead
91-
// of expected NaN).
92-
#[cfg(not(test))]
93-
#[cfg(any(target_os = "solaris", target_os = "illumos"))]
94-
#[inline]
95-
pub fn log_wrapper<F: Fn(f64) -> f64>(n: f64, log_fn: F) -> f64 {
96-
if n.is_finite() {
97-
if n > 0.0 {
98-
log_fn(n)
99-
} else if n == 0.0 {
100-
f64::NEG_INFINITY // log(0) = -Inf
101-
} else {
102-
f64::NAN // log(-n) = NaN
103-
}
104-
} else if n.is_nan() {
105-
n // log(NaN) = NaN
106-
} else if n > 0.0 {
107-
n // log(Inf) = Inf
108-
} else {
109-
f64::NAN // log(-Inf) = NaN
110-
}
111-
}
112-
113-
#[cfg(not(test))]
114-
#[cfg(not(any(target_os = "solaris", target_os = "illumos")))]
115-
#[inline]
116-
pub fn log_wrapper<F: Fn(f64) -> f64>(n: f64, log_fn: F) -> f64 {
117-
log_fn(n)
118-
}
119-
120-
#[cfg(not(target_os = "uefi"))]
121-
pub type RawOsError = i32;
1+
/// The PAL (platform abstraction layer) contains platform-specific abstractions
2+
/// for implementing the features in the other submodules, e.g. UNIX file
3+
/// descriptors.
4+
mod pal;
5+
6+
// FIXME(117276): remove this, move feature implementations into individual
7+
// submodules.
8+
pub use pal::*;

library/std/src/sys/pal/mod.rs

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
//! Platform-dependent platform abstraction.
2+
//!
3+
//! The `std::sys` module is the abstracted interface through which
4+
//! `std` talks to the underlying operating system. It has different
5+
//! implementations for different operating system families, today
6+
//! just Unix and Windows, and initial support for Redox.
7+
//!
8+
//! The centralization of platform-specific code in this module is
9+
//! enforced by the "platform abstraction layer" tidy script in
10+
//! `tools/tidy/src/pal.rs`.
11+
//!
12+
//! This module is closely related to the platform-independent system
13+
//! integration code in `std::sys_common`. See that module's
14+
//! documentation for details.
15+
//!
16+
//! In the future it would be desirable for the independent
17+
//! implementations of this module to be extracted to their own crates
18+
//! that `std` can link to, thus enabling their implementation
19+
//! out-of-tree via crate replacement. Though due to the complex
20+
//! inter-dependencies within `std` that will be a challenging goal to
21+
//! achieve.
22+
23+
#![allow(missing_debug_implementations)]
24+
25+
pub mod common;
26+
mod personality;
27+
28+
cfg_if::cfg_if! {
29+
if #[cfg(unix)] {
30+
mod unix;
31+
pub use self::unix::*;
32+
} else if #[cfg(windows)] {
33+
mod windows;
34+
pub use self::windows::*;
35+
} else if #[cfg(target_os = "solid_asp3")] {
36+
mod solid;
37+
pub use self::solid::*;
38+
} else if #[cfg(target_os = "hermit")] {
39+
mod hermit;
40+
pub use self::hermit::*;
41+
} else if #[cfg(target_os = "wasi")] {
42+
mod wasi;
43+
pub use self::wasi::*;
44+
} else if #[cfg(target_family = "wasm")] {
45+
mod wasm;
46+
pub use self::wasm::*;
47+
} else if #[cfg(target_os = "xous")] {
48+
mod xous;
49+
pub use self::xous::*;
50+
} else if #[cfg(target_os = "uefi")] {
51+
mod uefi;
52+
pub use self::uefi::*;
53+
} else if #[cfg(all(target_vendor = "fortanix", target_env = "sgx"))] {
54+
mod sgx;
55+
pub use self::sgx::*;
56+
} else {
57+
mod unsupported;
58+
pub use self::unsupported::*;
59+
}
60+
}
61+
62+
cfg_if::cfg_if! {
63+
// Fuchsia components default to full backtrace.
64+
if #[cfg(target_os = "fuchsia")] {
65+
pub const FULL_BACKTRACE_DEFAULT: bool = true;
66+
} else {
67+
pub const FULL_BACKTRACE_DEFAULT: bool = false;
68+
}
69+
}
70+
71+
#[cfg(not(test))]
72+
cfg_if::cfg_if! {
73+
if #[cfg(target_os = "android")] {
74+
pub use self::android::log2f32;
75+
pub use self::android::log2f64;
76+
} else {
77+
#[inline]
78+
pub fn log2f32(n: f32) -> f32 {
79+
unsafe { crate::intrinsics::log2f32(n) }
80+
}
81+
82+
#[inline]
83+
pub fn log2f64(n: f64) -> f64 {
84+
unsafe { crate::intrinsics::log2f64(n) }
85+
}
86+
}
87+
}
88+
89+
// Solaris/Illumos requires a wrapper around log, log2, and log10 functions
90+
// because of their non-standard behavior (e.g., log(-n) returns -Inf instead
91+
// of expected NaN).
92+
#[cfg(not(test))]
93+
#[cfg(any(target_os = "solaris", target_os = "illumos"))]
94+
#[inline]
95+
pub fn log_wrapper<F: Fn(f64) -> f64>(n: f64, log_fn: F) -> f64 {
96+
if n.is_finite() {
97+
if n > 0.0 {
98+
log_fn(n)
99+
} else if n == 0.0 {
100+
f64::NEG_INFINITY // log(0) = -Inf
101+
} else {
102+
f64::NAN // log(-n) = NaN
103+
}
104+
} else if n.is_nan() {
105+
n // log(NaN) = NaN
106+
} else if n > 0.0 {
107+
n // log(Inf) = Inf
108+
} else {
109+
f64::NAN // log(-Inf) = NaN
110+
}
111+
}
112+
113+
#[cfg(not(test))]
114+
#[cfg(not(any(target_os = "solaris", target_os = "illumos")))]
115+
#[inline]
116+
pub fn log_wrapper<F: Fn(f64) -> f64>(n: f64, log_fn: F) -> f64 {
117+
log_fn(n)
118+
}
119+
120+
#[cfg(not(target_os = "uefi"))]
121+
pub type RawOsError = i32;
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)