Arion 1.0.2-alpha
A high-performance C++ framework for emulating executable binaries.
 
Loading...
Searching...
No Matches
arion::ARION_THREAD Struct Reference

This structure holds data about a UNIX thread. More...

#include <threading_manager.hpp>

Public Member Functions

 ARION_THREAD ()
 
 ARION_THREAD (int exit_signal, uint64_t flags, ADDR child_cleartid_addr, ADDR child_settid_addr, ADDR parent_tid_addr, std::unique_ptr< std::map< REG, RVAL > > regs_state, ADDR tls_addr)
 
 ARION_THREAD (ARION_THREAD *arion_t)
 

Public Attributes

pid_t tid
 The thread ID (TID) associated with this thread.
 
pid_t tgid
 The thread group ID (TGID) associated with this thread.
 
int exit_signal
 The signal to be sent to the parent process when the thread terminates.
 
uint64_t flags
 The clone flags used when the thread was created.
 
ADDR child_cleartid_addr
 The address of the child_tid variable to be cleared when the thread exits (used with CLONE_CHILD_CLEARTID).
 
ADDR child_settid_addr
 The address of the child_tid variable to be set when the thread starts (used with CLONE_CHILD_SETTID).
 
ADDR parent_tid_addr
 
std::unique_ptr< std::map< REG, RVAL > > regs_state = nullptr
 The saved register state of the thread, mapping each Unicorn register (REG) to its corresponding value (RVAL).
 
ADDR tls_addr
 The address of the thread’s thread-local storage (TLS) block.
 
ADDR wait_status_addr = 0
 The address where the thread’s wait status is stored, used for synchronization with other threads.
 
bool stopped = false
 Indicates whether the thread is currently stopped.
 
ADDR robust_list_head = 0
 The head of the robust futex list, used for robust mutex handling by the Linux kernel.
 
ADDR rseq_addr = 0
 The address of the restartable sequences (rseq) structure for this thread.
 
uint32_t rseq_len = 0
 The size of the restartable sequences (rseq) area in bytes.
 
uint32_t rseq_sig = 0
 The signature used to identify aborted restartable sequences.
 

Detailed Description

This structure holds data about a UNIX thread.

Constructor & Destructor Documentation

◆ ARION_THREAD() [1/3]

arion::ARION_THREAD::ARION_THREAD ( )
inline

Builder for ARION_THREAD instances.

◆ ARION_THREAD() [2/3]

arion::ARION_THREAD::ARION_THREAD ( int  exit_signal,
uint64_t  flags,
ADDR  child_cleartid_addr,
ADDR  child_settid_addr,
ADDR  parent_tid_addr,
std::unique_ptr< std::map< REG, RVAL > >  regs_state,
ADDR  tls_addr 
)
inline

Builder for ARION_THREAD instances.

Parameters
[in]exit_signalThe signal to be sent to the parent process when the thread terminates.
[in]flagsThe clone flags used when the thread was created.
[in]child_cleartid_addrThe address of the child_tid variable to be cleared when the thread exits (used with CLONE_CHILD_CLEARTID).
[in]child_settid_addrThe address of the child_tid variable to be set when the thread starts (used with CLONE_CHILD_SETTID).
[in]parent_tid_addrThe address in the parent process where the TID of the newly created thread is stored (used with CLONE_PARENT_SETTID).
[in]regs_stateThe saved register state of the thread, mapping each Unicorn register (REG) to its corresponding value (RVAL).
[in]tls_addrThe address of the thread’s thread-local storage (TLS) block.

◆ ARION_THREAD() [3/3]

arion::ARION_THREAD::ARION_THREAD ( ARION_THREAD arion_t)
inline

Builder for ARION_THREAD instances used to clone an ARION_THREAD instance.

Parameters
[in]arion_tThe ARION_THREAD instance to be cloned.

Member Data Documentation

◆ child_cleartid_addr

ADDR arion::ARION_THREAD::child_cleartid_addr

The address of the child_tid variable to be cleared when the thread exits (used with CLONE_CHILD_CLEARTID).

◆ child_settid_addr

ADDR arion::ARION_THREAD::child_settid_addr

The address of the child_tid variable to be set when the thread starts (used with CLONE_CHILD_SETTID).

◆ exit_signal

int arion::ARION_THREAD::exit_signal

The signal to be sent to the parent process when the thread terminates.

◆ flags

uint64_t arion::ARION_THREAD::flags

The clone flags used when the thread was created.

◆ parent_tid_addr

ADDR arion::ARION_THREAD::parent_tid_addr

The address in the parent process where the TID of the newly created thread is stored (used with CLONE_PARENT_SETTID).

◆ regs_state

std::unique_ptr<std::map<REG, RVAL> > arion::ARION_THREAD::regs_state = nullptr

The saved register state of the thread, mapping each Unicorn register (REG) to its corresponding value (RVAL).

◆ robust_list_head

ADDR arion::ARION_THREAD::robust_list_head = 0

The head of the robust futex list, used for robust mutex handling by the Linux kernel.

◆ rseq_addr

ADDR arion::ARION_THREAD::rseq_addr = 0

The address of the restartable sequences (rseq) structure for this thread.

◆ rseq_len

uint32_t arion::ARION_THREAD::rseq_len = 0

The size of the restartable sequences (rseq) area in bytes.

◆ rseq_sig

uint32_t arion::ARION_THREAD::rseq_sig = 0

The signature used to identify aborted restartable sequences.

◆ stopped

bool arion::ARION_THREAD::stopped = false

Indicates whether the thread is currently stopped.

◆ tgid

pid_t arion::ARION_THREAD::tgid

The thread group ID (TGID) associated with this thread.

◆ tid

pid_t arion::ARION_THREAD::tid

The thread ID (TID) associated with this thread.

◆ tls_addr

ADDR arion::ARION_THREAD::tls_addr

The address of the thread’s thread-local storage (TLS) block.

◆ wait_status_addr

ADDR arion::ARION_THREAD::wait_status_addr = 0

The address where the thread’s wait status is stored, used for synchronization with other threads.


The documentation for this struct was generated from the following file: