Skip to main content

Terminal

Struct Terminal 

Source
pub struct Terminal {
    pub dev_pts_root: DirEntryHandle,
    pub fscred: FsCred,
    pub id: u32,
    /* private fields */
}
Expand description

State of a given terminal. This object handles both the main and the replica terminal.

Fields§

§dev_pts_root: DirEntryHandle

The root of the devpts fs responsible for this terminal.

§fscred: FsCred

The owner of the terminal.

§id: u32

The identifier of the terminal.

Implementations§

Source§

impl Terminal

Source

pub fn new( state: Arc<TtyState>, dev_pts_root: DirEntryHandle, fscred: FsCred, id: u32, ) -> Arc<Self> ⓘ

Source

pub fn to_owned(&self) -> Arc<Terminal> ⓘ

Source

pub fn set_termios(&self, termios: termios2)

Sets the terminal configuration.

Source

pub fn flush(&self, is_main: bool, arg: u32) -> Result<(), Errno>

Source

pub fn main_close(&self)

close implementation of the main side of the terminal.

Source

pub fn main_open(&self)

Called when a new reference to the main side of this terminal is made.

Source

pub fn main_wait_async( &self, waiter: &Waiter, events: FdEvents, handler: EventHandler, ) -> WaitCanceler

wait_async implementation of the main side of the terminal.

Source

pub fn main_query_events(&self) -> FdEvents

query_events implementation of the main side of the terminal.

Source

pub fn main_read(&self, data: &mut dyn OutputBuffer) -> Result<usize, Errno>

read implementation of the main side of the terminal.

Source

pub fn main_write(&self, data: &mut dyn InputBuffer) -> Result<usize, Errno>

write implementation of the main side of the terminal.

Source

pub fn replica_close(&self)

close implementation of the replica side of the terminal.

Source

pub fn replica_open(&self)

Called when a new reference to the replica side of this terminal is made.

Source

pub fn replica_wait_async( &self, waiter: &Waiter, events: FdEvents, handler: EventHandler, ) -> WaitCanceler

wait_async implementation of the replica side of the terminal.

Source

pub fn replica_query_events(&self) -> FdEvents

query_events implementation of the replica side of the terminal.

Source

pub fn replica_read(&self, data: &mut dyn OutputBuffer) -> Result<usize, Errno>

read implementation of the replica side of the terminal.

Source

pub fn replica_write(&self, data: &mut dyn InputBuffer) -> Result<usize, Errno>

write implementation of the replica side of the terminal.

Source

pub fn disassociate_controlling_session(&self)

Disassociates the controlling session from the terminal.

Clears the controlling session, clears controlling_terminal on all member thread groups in the session, and sends SIGHUP and SIGCONT to the foreground process group outside of any terminal locks.

Source

pub fn disassociate_controlling_session_if( &self, expected_session: Option<&Pid>, side: Option<TerminalSide>, )

Disassociates the controlling session from the terminal if expected_session matches (or is None), clearing matching member controlling_terminal references and sending SIGHUP and SIGCONT to the foreground process group outside of any terminal locks.

Source

pub fn send_signals(&self, signals: &[Signal])

Sends the specified signals to the foreground process group of this terminal.

The terminal state lock is held only to extract the foreground PID and is dropped before signal dispatch to prevent lock inversion with ThreadGroup locks.

Source

pub fn device(&self) -> DeviceId

Source

pub fn read<'a>(self: &'a Terminal) -> TerminalReadGuard<'a>

Source

pub fn write<'a>(self: &'a Terminal) -> TerminalWriteGuard<'a>

Trait Implementations§

Source§

impl Debug for Terminal

Source§

fn fmt(&self, __f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for Terminal

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsAny for T
where T: Any,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn type_name(&self) -> &'static str

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
§

impl<F, N> FidlIntoNative<Box<N>> for F
where F: FidlIntoNative<N>,

§

fn fidl_into_native(self) -> Box<N>

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> InstanceFromServiceTransport<T> for T

§

fn from_service_transport(handle: T) -> T

Converts the given service transport handle of type T to [Self]
Source§

impl<T, U> Into32<U> for T
where U: MultiArchFrom<T>,

Source§

fn into_32(self) -> U

Source§

impl<T, U> Into64<U> for T
where U: MultiArchFrom<T>,

Source§

fn into_64(self) -> U

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoAny for T
where T: 'static + Send + Sync,

Source§

fn into_any(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Cast the given object into a dyn std::any::Any.
Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T, U> IntoExt<U> for T
where U: FromExt<T>,

§

fn into_ext(self) -> U

Performs the conversion.
Source§

impl<T, U> IntoFidl<U> for T
where U: FromFidl<T>,

Source§

fn into_fidl(self) -> U

Source§

impl<T, U> MultiArchFrom<T> for U
where U: From<T>,

Source§

fn from_64(value: T) -> U

Source§

fn from_32(value: T) -> U

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<E> RunsTransport<Mpsc> for E

§

impl<E> RunsTransport<Mpsc> for E
where E: RunsTransport<Mpsc>,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T, U> TryIntoExt<U> for T
where U: TryFromExt<T>,

§

type Error = <U as TryFromExt<T>>::Error

§

fn try_into_ext(self) -> Result<U, <T as TryIntoExt<U>>::Error>

Tries to perform the conversion.
§

impl<St> WithTag for St

§

fn tagged<T>(self, tag: T) -> Tagged<T, St> ⓘ

Produce a new stream from this one which yields item tupled with a constant tag