Guia de rastreamento dinâmico Solaris

Testes de mutex

Mutexes reforçam a exclusão mútua em seções críticas. Quando um segmento tentar adquirir um mutex mantido por outro segmento usando o mutex_lock(3C) ou pthread_mutex_lock(3C), ele determinará se o segmento proprietário está sendo executado em uma CPU diferente. Se for o caso, o segmento de aquisição irá girar por um curto período esperando que o mutex se torne disponível. Se o proprietário não estiver sendo executado em outra CPU, o segmento de aquisição será bloqueado.

Os quatro testes plockstat pertencentes aos mutexes estão listados na Tabela 31–1. Para cada teste, arg0 contém um ponteiro para a estrutura mutex_t ou pthread_mutex_t (estes são tipos idênticos) que representa o mutex.

Tabela 31–1 Testes de mutex

mutex-acquire

Teste de evento de manutenção que é acionado imediatamente depois que um mutex é adquirido. arg1 contém um valor booleano que indica se a aquisição foi recursiva em um mutex recursivo. arg2 indica o número de iterações que o segmento de aquisição gastou girando neste mutex. arg2 será diferente de zero somente se o teste mutex-spin foi acionado nesta aquisição do mutex.

mutex-block

Teste de evento de contenção que é acionado antes de um segmento ser bloqueado em um mutex mantido. mutex-block e mutex-spin devem ser acionados por uma aquisição de bloqueio simples.

mutex-spin

Teste de evento de contenção que é acionado antes de um segmento começar a girar em um mutex mantido. mutex-block e mutex-spin devem ser acionados por uma aquisição de bloqueio simples.

mutex-release

Teste de evento de manutenção que é acionado imediatamente depois que um mutex é liberado. arg1 contém um valor booleano que indica se o evento corresponde a uma liberação recursiva em um mutex recursivo.

mutex-error

Teste de evento de erro que é acionado quando um erro é encontrado em uma operação de mutex. arg1 é o valor errno do erro encontrado.