diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2023-11-04 05:00:12 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-04 17:30:12 +0530 |
commit | 0b75a7169b2e123cac04e7ffcaf16a28eb356fd0 (patch) | |
tree | 117c69975e5942ae4deb462d1d3c1a0790b78c3c /cli/util/unix.rs | |
parent | 8acf059ac683ff13c6973914c57caa0ef07d6d9a (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/util/unix.rs')
-rw-r--r-- | cli/util/unix.rs | 24 |
1 files changed, 0 insertions, 24 deletions
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); - } - } -} |