pthdb_pthread_context ou pthdb_pthread_setcontext Subroutine

Propósito

Fornece acesso ao contexto pthread através da estrutura struct context64 .

Biblioteca

biblioteca de depuração pthread (libpthdebug.a)

Sintaxe

#include <sys/pthdebug.h>

int pthdb_pthread_context (pthdb_session_t   session,
                           pthdb_pthread_t   pthread,
                           pthdb_context_t * context)

int pthdb_pthread_setcontext (pthdb_session_t   session,
                              pthdb_pthread_t   pthread,
                              pthdb_context_t * context)

Descrição

A biblioteca de debug pthread fornece acesso ao contexto pthread através da estrutura struct context64 , se o processo é de 32-bit ou 64-bit. O depurador deverá ser capaz de converter de 32-bit para 64-bit e de 64-bit para 32-bit processos. A extensão em que essa estrutura está preenchida depende da presença dos sinalizadores de sessão PTHDB_FLAG_GPRS, PTHDB_FLAG_SPRSl e PTHDB_FLAG_FPRS . É necessário utilizar a biblioteca de debug pthread para acessar o contexto de um pthread sem fio de kernel. A biblioteca de debug pthread também pode ser usada para acessar o contexto de um pthread com uma thread de kernel, mas isso resulta em uma chamada de volta para o depurador, significando que o depurador é capaz de obter essas informações por si só. O depurador determina se a thread do kernel está rodando no modo de usuário ou no modo kernel e, em seguida, preenche-se na struct context64 adequadamente. A biblioteca de debug pthread não usa essa informação em si e, portanto, não é sensível à implementação correta das funções de back call read_regs e write_regs .

pthdb_pthread_context relata o contexto do pthread com base nas configurações das bandeiras da sessão. Usa a chamada read_regs de volta se o pthread tiver uma thread de kernel. Se read_regs não estiver definido, então ele retorna PTHDB_NOTSUP.

pthdb_pthread_setcontext configura o contexto do pthread com base nas configurações das sinalizadores de sessão. Usa a chamada write_data de volta se o pthread não tiver uma thread de kernel. Use a chamada write_regs de volta se o pthread tiver uma thread de kernel.

Se o depurador não definir as chamadas de read_regs e write_regs e se o pthread não tiver uma thread de kernel, então as funções pthdb_pthread_context e pthdb_pthread_setcontext , sucedirão. Mas se um pthread não tiver uma thread de kernel, então essas funções falham e retornam PTHDB_CONTEXT.

Parâmetros

Item Descrição
sessão Alça de sessão.
pthread alça de pthread.
contexto Ponteiro de buffer de contexto.

Valores De Retorno

Se bem-sucedida, estas funções retornam PTHDB_SUCCESS. Caso contrário, um código de erro é retornado.

Códigos De Erro

Item Descrição
PTHDB_BAD_SESSION Alça de sessão inválida.
PTHDB_BAD_PTHREAD Alça de pthread inválida.
PTHDB_BAD_POINTER Ponteiro de buffer inválido.
PTHDB_CALLBACK Falha na função de callback.
PTHDB_CONTEXT Não foi possível determinar o contexto pthread.
PTHDB_MEMÓRIA Memória não suficiente
PTHDB_NOTSUP pthdb_pthread_ (set) context retorna PTHDB_NOTSUP se as chamadas de chamada read_regs, write_data ou write_regs forem definidas para NULL.
PTHDB_INTERNO Erro na biblioteca.