summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-11-04 05:00:12 -0700
committerGitHub <noreply@github.com>2023-11-04 17:30:12 +0530
commit0b75a7169b2e123cac04e7ffcaf16a28eb356fd0 (patch)
tree117c69975e5942ae4deb462d1d3c1a0790b78c3c /cli
parent8acf059ac683ff13c6973914c57caa0ef07d6d9a (diff)
perf: lazy `atexit` setup (#21053)
`libc::atexit` incurrs 2% dyld cost at startup on macOS. This PR moves the setup to when the tty mode is changed using op_stdin_set_raw.
Diffstat (limited to 'cli')
-rw-r--r--cli/main.rs1
-rw-r--r--cli/util/unix.rs24
2 files changed, 0 insertions, 25 deletions
diff --git a/cli/main.rs b/cli/main.rs
index c6249a21f..80fe59005 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -323,7 +323,6 @@ pub(crate) fn unstable_warn_cb(feature: &str) {
pub fn main() {
setup_panic_hook();
- util::unix::prepare_stdio();
util::unix::raise_fd_limit();
util::windows::ensure_stdio_open();
#[cfg(windows)]
diff --git a/cli/util/unix.rs b/cli/util/unix.rs
index 2fa3c2063..fd0c94ea6 100644
--- a/cli/util/unix.rs
+++ b/cli/util/unix.rs
@@ -43,27 +43,3 @@ pub fn raise_fd_limit() {
}
}
}
-
-pub fn prepare_stdio() {
- #[cfg(unix)]
- // SAFETY: Save current state of stdio and restore it when we exit.
- unsafe {
- use libc::atexit;
- use libc::tcgetattr;
- use libc::tcsetattr;
- use libc::termios;
-
- let mut termios = std::mem::zeroed::<termios>();
- if tcgetattr(libc::STDIN_FILENO, &mut termios) == 0 {
- static mut ORIG_TERMIOS: Option<termios> = None;
- ORIG_TERMIOS = Some(termios);
-
- extern "C" fn reset_stdio() {
- // SAFETY: Reset the stdio state.
- unsafe { tcsetattr(libc::STDIN_FILENO, 0, &ORIG_TERMIOS.unwrap()) };
- }
-
- atexit(reset_stdio);
- }
- }
-}