Документация по LinuxLinuxDoc.Ru 🔍

getcontext, setcontext - считывает или устанавливает контекст пользователя

НАЗВАНИЕ
getcontext, setcontext - считывает или устанавливает
контекст пользователя

СИНТАКСИС
#include

int getcontext(ucontext_t *ucp);
int setcontext(const ucontext_t *ucp);

где:

ucp указывает но структуру, определенную в
и содержащую маску сигнала, стек исполнения и
регистры машины.

ОПИСАНИЕ
getcontext(2) получает текущий контекст вызывающего
процесса, сохраняет его в структуре ucontext - на нее
указывает ucp.

setcontext(2) меняет контекст вызывающего процесса на
состояние, сохраненное в структуре ucontext - на нее
указывает ucp. Структура должна либо быть созданной get-
context(2), либо быть переданной в качестве третьего
параметра обработчиком сигналов sigaction(2).

Структура ucontext, создаваемая getcontext(2), определена
в таким образом:

typedef struct ucontext
{
unsigned long int uc_flags;
struct ucontext *uc_link;
stack_t uc_stack;
mcontext_t uc_mcontext;
__sigset_t uc_sigmask;
struct _fpstate __fpregs_mem;
} ucontext_t;

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
getcontext(2) возвращает 0 при нормальном завершении
работы и -1 при ошибках. setcontext(2) ничего не
возвращает при нормальном завершении работы, и возвращает
-1 при ошибках.

СООТВЕТСТВИЕ СТАНДАРТАМ
Эти функции соответсвуют стандарту XPG4-UNIX.

ЗАМЕЧАНИЯ
Когда работает обработчик сигнала, то текущий контекст
пользователя сохраняется и ядром создается новый контекст.
Если вызывающий процесс оставляет обработчик сигнала,
используя longjmp(2), то первоначальный контекст
невозможно будет восстановить, а результат последующих
вызовов getcontext(2) будет непредсказуем. Для избежания
этих проблем вместо longjmp(2) используйте в обработчике
сигналов siglongjmp(2) или setcontext(2).
Читать новости Linux в Telegram
Linux - getcontext, setcontext - считывает или устанавливает контекст пользователя
Мы в соцсетях ✉