miri::shims::unix::fd

Trait FileDescription

Source
pub trait FileDescription: Debug + Any {
    // Required method
    fn name(&self) -> &'static str;

    // Provided methods
    fn read<'tcx>(
        &self,
        _self_ref: &FileDescriptionRef,
        _communicate_allowed: bool,
        _ptr: Pointer,
        _len: usize,
        _dest: &MPlaceTy<'tcx>,
        _ecx: &mut MiriInterpCx<'tcx>,
    ) -> InterpResult<'tcx> { ... }
    fn write<'tcx>(
        &self,
        _self_ref: &FileDescriptionRef,
        _communicate_allowed: bool,
        _ptr: Pointer,
        _len: usize,
        _dest: &MPlaceTy<'tcx>,
        _ecx: &mut MiriInterpCx<'tcx>,
    ) -> InterpResult<'tcx> { ... }
    fn pread<'tcx>(
        &self,
        _communicate_allowed: bool,
        _offset: u64,
        _ptr: Pointer,
        _len: usize,
        _dest: &MPlaceTy<'tcx>,
        _ecx: &mut MiriInterpCx<'tcx>,
    ) -> InterpResult<'tcx> { ... }
    fn pwrite<'tcx>(
        &self,
        _communicate_allowed: bool,
        _ptr: Pointer,
        _len: usize,
        _offset: u64,
        _dest: &MPlaceTy<'tcx>,
        _ecx: &mut MiriInterpCx<'tcx>,
    ) -> InterpResult<'tcx> { ... }
    fn seek<'tcx>(
        &self,
        _communicate_allowed: bool,
        _offset: SeekFrom,
    ) -> InterpResult<'tcx, Result<u64>> { ... }
    fn close<'tcx>(
        self: Box<Self>,
        _communicate_allowed: bool,
        _ecx: &mut MiriInterpCx<'tcx>,
    ) -> InterpResult<'tcx, Result<()>> { ... }
    fn flock<'tcx>(
        &self,
        _communicate_allowed: bool,
        _op: FlockOp,
    ) -> InterpResult<'tcx, Result<()>> { ... }
    fn is_tty(&self, _communicate_allowed: bool) -> bool { ... }
    fn get_epoll_ready_events<'tcx>(
        &self,
    ) -> InterpResult<'tcx, EpollReadyEvents> { ... }
}
Expand description

Represents an open file description.

Required Methods§

Source

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

Provided Methods§

Source

fn read<'tcx>( &self, _self_ref: &FileDescriptionRef, _communicate_allowed: bool, _ptr: Pointer, _len: usize, _dest: &MPlaceTy<'tcx>, _ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx>

Reads as much as possible into the given buffer ptr. len indicates how many bytes we should try to read. dest is where the return value should be stored: number of bytes read, or -1 in case of error.

Source

fn write<'tcx>( &self, _self_ref: &FileDescriptionRef, _communicate_allowed: bool, _ptr: Pointer, _len: usize, _dest: &MPlaceTy<'tcx>, _ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx>

Writes as much as possible from the given buffer ptr. len indicates how many bytes we should try to write. dest is where the return value should be stored: number of bytes written, or -1 in case of error.

Source

fn pread<'tcx>( &self, _communicate_allowed: bool, _offset: u64, _ptr: Pointer, _len: usize, _dest: &MPlaceTy<'tcx>, _ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx>

Reads as much as possible into the given buffer ptr from a given offset. len indicates how many bytes we should try to read. dest is where the return value should be stored: number of bytes read, or -1 in case of error.

Source

fn pwrite<'tcx>( &self, _communicate_allowed: bool, _ptr: Pointer, _len: usize, _offset: u64, _dest: &MPlaceTy<'tcx>, _ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx>

Writes as much as possible from the given buffer ptr starting at a given offset. ptr is the pointer to the user supplied read buffer. len indicates how many bytes we should try to write. dest is where the return value should be stored: number of bytes written, or -1 in case of error.

Source

fn seek<'tcx>( &self, _communicate_allowed: bool, _offset: SeekFrom, ) -> InterpResult<'tcx, Result<u64>>

Seeks to the given offset (which can be relative to the beginning, end, or current position). Returns the new position from the start of the stream.

Source

fn close<'tcx>( self: Box<Self>, _communicate_allowed: bool, _ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx, Result<()>>

Source

fn flock<'tcx>( &self, _communicate_allowed: bool, _op: FlockOp, ) -> InterpResult<'tcx, Result<()>>

Source

fn is_tty(&self, _communicate_allowed: bool) -> bool

Source

fn get_epoll_ready_events<'tcx>(&self) -> InterpResult<'tcx, EpollReadyEvents>

Check the readiness of file description.

Implementations§

Source§

impl dyn FileDescription

Source

pub fn downcast<T: Any>(&self) -> Option<&T>

Implementations on Foreign Types§

Source§

impl FileDescription for Stderr

Source§

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

Source§

fn write<'tcx>( &self, _self_ref: &FileDescriptionRef, _communicate_allowed: bool, ptr: Pointer, len: usize, dest: &MPlaceTy<'tcx>, ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx>

Source§

fn is_tty(&self, communicate_allowed: bool) -> bool

Source§

impl FileDescription for Stdin

Source§

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

Source§

fn read<'tcx>( &self, _self_ref: &FileDescriptionRef, communicate_allowed: bool, ptr: Pointer, len: usize, dest: &MPlaceTy<'tcx>, ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx>

Source§

fn is_tty(&self, communicate_allowed: bool) -> bool

Source§

impl FileDescription for Stdout

Source§

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

Source§

fn write<'tcx>( &self, _self_ref: &FileDescriptionRef, _communicate_allowed: bool, ptr: Pointer, len: usize, dest: &MPlaceTy<'tcx>, ecx: &mut MiriInterpCx<'tcx>, ) -> InterpResult<'tcx>

Source§

fn is_tty(&self, communicate_allowed: bool) -> bool

Implementors§