struct _debug_thread_info, debug_thread_t, procfs_status

Структура данных характеризует состояние потока отлаживаемого процесса

Прототип:

#include <sys/debug.h>
typedef struct _debug_thread_info {
pid_t pid;
pthread_t tid;
_Uint32t flags;
_Uint16t why;
_Uint16t what;
_Uint64t ip;
_Uint64t sp;
_Uint64t stkbase;
_Uint64t tls;
_Uint32t stksize;
_Uint32t tid_flags;
_Uint8t priority;
_Uint8t real_priority;
_Uint8t policy;
_Uint8t state;
_Int16t syscall;
_Uint16t last_cpu;
_Uint32t timeout;
_Int32t last_chid;
sigset_t sig_blocked;
sigset_t sig_pending;
siginfo_t info;
union {
struct {
pthread_t tid;
} join;
struct {
_Int32t id;
_Uintptrt sync;
} sync;
struct {
_Uint32t nd;
pid_t pid;
_Int32t coid;
_Int32t chid;
_Int32t scoid;
} connect;
struct {
_Int32t chid;
} channel;
struct {
pid_t pid;
_Uintptrt vaddr;
_Uint32t flags;
} waitpage;
struct {
_Uint32t size;
} stack;
_Uint64t filler[4];
} blocked;
_Uint64t start_time; /* thread start time in nsec */
_Uint64t sutime; /* thread system + user running time in nsec */
_Uint8t extsched[8];
_Uint64t nsec_since_block; /* how long thread has been blocked. 0 for STATE_READY or STATE_RUNNING.
in nsec, but ms resolution. */
_Uint64t reserved2[4];
} debug_thread_t;
typedef debug_thread_t procfs_status;

Описание:

Структура procfs_status характеризует состояние потока отлаживаемого процесса. Основные поля структуры включают:

pid
Идентификатор процесса-владельца.
tid
Идентификатор потока.
flags
Флаги потока. См. _DEBUG_FLAG_*
why
Одно из следующих значений:
_DEBUG_WHY_REQUESTED
_DEBUG_WHY_SIGNALLED
_DEBUG_WHY_FAULTED
_DEBUG_WHY_JOBCONTROL
_DEBUG_WHY_TERMINATED
_DEBUG_WHY_CHILD
_DEBUG_WHY_EXEC
what
Значение зависит от поля why:
_DEBUG_WHY_TERMINATED
Статус завершения процесса.
_DEBUG_WHY_SIGNALLED
si_signo.
_DEBUG_WHY_FAULTED
si_fltno.
_DEBUG_WHY_REQUESTED
0.
ip
sp
Значение регисторов IP (Instruction Pointer) и SP (Stack Pointer).
stkbase
stksize
Размер стека и его базовый адрес.
tls
Локальное хранилище потока (Thread Local Storage).
tid_flags
Флаги потока (см. _NTO_TF_* в <sys/neutrino.h>).
priority
Приоритет.
real_priority
Действительный приоритет (установленный в текущий момент).
policy
Дисциплина планирования.
state
Состояние потока.
syscall
Последний исполненный системный вызов (см. __KER_* в <sys/kercalls.h>).
last_cpu
Последний CPU, который исполнял данный поток.
timeout
Установленный таймаут системного вызова (_NTO_TF_ACTIVE | _NTO_TF_IMMEDIATE | (1 << state)).
last_chid
Последний канал, на котором поток получил сообщение.
sig_blocked
Набор сигналов, заблокированных для потока.
sig_pending
Набор сигналов, которые ожидают обработки.
info
Сведения о последнем полученном сигнале или ошибке (см. siginfo_t).
start_time
Время порождения потока (в нс.).
sutime
Сумма времени, потребленного потоком, от имени пользователя и системы (в нс.).
nsec_since_block
Сколько поток был заблокирован (в нс., но с разрешением в мс.). Имеет значение 0 при состояниях STATE_READY или STATE_RUNNING.

Поля структуры, зависящие от различных состояний блокировки потока:

join::tid
Идентификатор потока, который ожидает данный поток, если он находится в состоянии STATE_JOIN или STATE_WAITTHREAD.
sync::id
sync::sync
Сведения о блокировке на примитивах синхронизации (если поток в состоянии STATE_CONDVAR, STATE_MUTEX или STATE_SEM). Поле id соджержит адрес объекта синхронизации. Поле sync для условной переменной содержит указатель на связанный мьютекс и указатель на сам мьютекс в противном случае.
connect::nd
connect::pid
connect::coid
connect::chid
connect::scoid
Сведения о блокировке при попытке соединения с сервером (если поток в состоянии STATE_SEND или STATE_REPLY).
channel::chid
Сведения о блокировке при ожидании на канале (если поток в состоянии STATE_RECEIVE).
waitpage::pid
waitpage::vaddr
waitpage::flags
Сведения о блокировке при запросе физических страниц памяти (если поток в состоянии STATE_WAITPAGE). pid – идентификатор процесса, который был активен при возникновении page-fault. vaddr – виртуальный адрес, для которого ожидается выделение физической памяти.
stack::size
Сведения о блокировке при запросе выделения стека (если поток в состоянии STATE_STACK).

Классификация:

ЗОСРВ «Нейтрино»

Тематические ссылки:

devctl(), DCMD_PROC_STATUS, DCMD_PROC_STOP, DCMD_PROC_TIDSTATUS, DCMD_PROC_WAITSTOP




Предыдущий раздел: перейти