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. |