pub struct ManagedThread { /* private fields */ }Implementations§
Source§impl ManagedThread
 
impl ManagedThread
pub fn native_pid(&self) -> Pid
pub fn native_tid(&self) -> Pid
Sourcepub fn native_syscall(
    &self,
    ctx: &ThreadContext<'_>,
    n: i64,
    args: &[SyscallReg],
) -> SyscallReg
 
pub fn native_syscall( &self, ctx: &ThreadContext<'_>, n: i64, args: &[SyscallReg], ) -> SyscallReg
Make the specified syscall on the native thread.
Panics if the native thread is dead or dies during the syscall, including if the syscall itself is SYS_exit or SYS_exit_group.
pub fn spawn( plugin_path: &CStr, argv: Vec<CString>, envv: Vec<CString>, strace_file: Option<&File>, log_file: &File, injected_preloads: &[PathBuf], ) -> Result<Self, Errno>
pub fn resume( &self, ctx: &ThreadContext<'_>, syscall_handler: &mut SyscallHandler, ) -> ResumeResult
pub fn handle_process_exit(&self)
pub fn return_code(&self) -> Option<i32>
pub fn is_running(&self) -> bool
Sourcepub fn native_clone(
    &self,
    ctx: &ThreadContext<'_>,
    flags: CloneFlags,
    child_stack: ForeignPtr<()>,
    ptid: ForeignPtr<pid_t>,
    ctid: ForeignPtr<pid_t>,
    newtls: c_ulong,
) -> Result<ManagedThread, Errno>
 
pub fn native_clone( &self, ctx: &ThreadContext<'_>, flags: CloneFlags, child_stack: ForeignPtr<()>, ptid: ForeignPtr<pid_t>, ctid: ForeignPtr<pid_t>, newtls: c_ulong, ) -> Result<ManagedThread, Errno>
Execute the specified clone syscall in self, and use create a new
ManagedThread object to manage it. The new thread will be managed
by Shadow, and suitable for use with Thread::wrap_mthread.
If the clone syscall fails, the native error is returned.
Sourcepub fn kill_and_drop(self)
 
pub fn kill_and_drop(self)
ManagedThread panics if dropped while the underlying process is still running,
since otherwise that process could continue writing to shared memory regions
that shadow reallocates.
This method kills the process that self belongs to (not just the
thread!) and then drops self.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for ManagedThread
impl !RefUnwindSafe for ManagedThread
impl Send for ManagedThread
impl !Sync for ManagedThread
impl Unpin for ManagedThread
impl !UnwindSafe for ManagedThread
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
 
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
 
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
 
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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