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