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