makecontexto ou swapcontext Subroutine

Propósito

Modifica o contexto especificado por ucp.

Biblioteca

(libc.a)

Sintaxe

#include < ucontext.h >

void makecontext (ucontext_t *ucp, (void *func ) (), int argc,... ); swapcontext int (uncontext_t *oucp, const uncontext_t *ucp);

Descrição

O subroutine makecontext modifica o contexto especificado por ucp, que foi inicializado usando subroutine getcontext . Quando este contexto é retomado usando o swapcontext subroutine ou setcontext subroutine, a execução do programa continua chamando o parâmetro func , passando-a os argumentos que seguem argc no subroutine makecontext .

Antes de uma chamada ser feita para makecontext subroutine, o contexto sendo modificado deve ter uma pilha alocada para ele. O valor de argc deve corresponder ao número de argumento inteiro passado para o parâmetro func , caso contrário, o comportamento é indefinido.

O membro uc_link é usado para determinar o contexto que será retomado quando o contexto ser modificado por makecontext subroutine retorna. O membro uc_link deve ser inicializado antes da chamada para makecontext subroutine.

A função subroutine swapcontext salva o contexto atual na estrutura de contexto apontada pelo parâmetro oucp e configura o contexto para a estrutura de contexto apontada por ucp.

Parâmetros

Item Descrição
ucp Um ponteiro para uma estrutura de usuário.
oucp Um ponteiro para uma estrutura de usuário.
func Um ponteiro para uma função a ser chamado quando ucp é restaurado.
argc O número de argumentos sendo passado para o parâmetro func .

Valores De Retorno

Na conclusão bem-sucedida, a subroutine swapcontext retorna 0. Caso contrário, um valor de -1 é retornado e errno é definido para indicar o erro.

Item Descrição
-1 Não bem-sucedida e a variável global errno é configurada para um dos códigos de erro a seguir.

Códigos De Erro

Item Descrição
ENOMEM O argumento ucp não tem pilha suficiente para concluir a operação.