Guia de rastreamento dinâmico Solaris

Testes

Os testes sched são descritos na Tabela 26–1.

Tabela 26–1 Testes sched

Teste 

Descrição 

change-pri

Teste que é acionado sempre que a prioridade de um segmento está para ser alterada. A lwpsinfo_t do segmento é apontada por args[0] . A prioridade atual do segmento está no campo pr_pri desta estrutura. A psinfo_t do processo que contém o segmento é apontada por args[1]. A nova prioridade do segmento está contida em args[2].

dequeue

Teste que é acionado imediatamente antes de um segmento executável ser desenfileirado de uma fila de execução. A lwpsinfo_t do segmento que está sendo desenfileirado é apontada por args[0]. A psinfo_t do processo que contém o segmento é apontada por args[1]. A cpuinfo_t da CPU da qual o segmento está sendo desenfileirado é apontada por args[2]. Se o segmento estiver sendo desenfileirado de uma fila de execução que não esteja associada a uma CPU em particular, o membro cpu_id dessa estrutura será -1.

enqueue

Teste que é acionado imediatamente antes de um segmento executável ser enfileirado em uma fila de execução. A lwpsinfo_t do segmento que está sendo enfileirado é apontada por args[0]. A psinfo_t do processo que contém o segmento é apontada por args[1]. A cpuinfo_t da CPU na qual o segmento está sendo enfileirado é apontada por args[2]. Se o segmento estiver sendo enfileirado em uma fila de execução que não esteja associada a uma CPU em particular, o membro cpu_id dessa estrutura será -1. O valor em args[3] é um booleano que indica se o segmento será enfileirado na frente da fila de execução. O valor será diferente de zero se o segmento for enfileirado na frente da fila de execução, e zero se o segmento for enfileirado na parte de trás da fila de execução.

off-cpu

Teste que é acionado quando a CPU atual estiver prestes a encerrar a execução de um segmento. A variável curcpu indica a CPU atual. A variável curlwpsinfo indica o segmento que está encerrando a execução. A variável curpsinfo descreve o processo que contém o segmento atual. A estrutura lwpsinfo_t do segmento que a CPU atual executará em seguida é apontada por args[0] . A psinfo_t do processo que contém o próximo segmento é apontada por args[1].

on-cpu

Teste que é acionado quando uma CPU inicia a execução de um segmento. A variável curcpu indica a CPU atual. A variável curlwpsinfo indica o segmento que está iniciando a execução. A variável curpsinfo descreve o processo que contém o segmento atual.

preempt

Teste que é acionado imediatamente antes que o segmento atual seja superado. Depois que esse teste for acionado, o segmento atual irá selecionar um segmento a ser executado e o teste off-cpu será acionado no segmento atual. Em alguns casos, um segmento em uma CPU será superado, mas o segmento de maior prioridade será executado em outra CPU enquanto isso. Nessa situação, o teste preempt será acionado, mas o distribuidor não conseguirá localizar um segmento de maior prioridade para ser executado e o teste remain-cpu será acionado em vez do teste off-cpu.

remain-cpu

Teste que é acionado quando uma decisão de agendamento tiver sido tomada, mas o distribuidor tiver optado por continuar executando o segmento atual. A variável curcpu indica a CPU atual. A variável curlwpsinfo indica o segmento que está iniciando a execução. A variável curpsinfo descreve o processo que contém o segmento atual.

schedctl-nopreempt

Teste que é acionado quando um segmento é superado e depois enfileirado novamente na frente da fila de execução devido a uma solicitação de controle de preempção. Consulte schedctl_init(3C) para obter detalhes sobre controle de preempção. Assim como com preempt, off-cpu ou remain-cpu será acionado após schedctl-nopreempt. Como schedctl-nopreempt indica um re-enfileiramento do segmento atual na frente da fila de execução, é mais provável que remain-cpu seja acionado após schedctl-nopreempt do que off-cpu. A lwpsinfo_t do segmento que está sendo superado é apontada por args[0]. A psinfo_t do processo que contém o segmento é apontada por args[1].

schedctl-preempt

Teste que é acionado quando um segmento que está usando o controle de preempção é, ainda sim, superado e enfileirado novamente na parte de trás da fila de execução. Consulte schedctl_init(3C) para obter detalhes sobre controle de preempção. Assim como com preempt, off-cpu ou remain-cpu será acionado após schedctl-preempt. Assim como preempt (e diferente de schedctl-nopreempt ), schedctl-preempt indica o re-enfileiramento do segmento atual na parte de trás da fila de execução. Como resultado, é mais provável que off-cpu seja acionado após schedctl-preempt do que remain-cpu. A lwpsinfo_t do segmento que está sendo superado é apontada por args[0]. A psinfo_t do processo que contém o segmento é apontada por args[1].

schedctl-yield

Teste que é acionado quando um segmento que tinha o controle de preempção ativado e seu fracionamento de tempo estendido artificialmente executou o código para ceder a CPU para outros segmentos. 

sleep

Teste que é acionado imediatamente antes de o segmento atual entrar em espera em um objeto de sincronização. O tipo do objeto de sincronização está contido no membro pr_stype da lwpsinfo_t apontada por curlwpsinfo . O endereço do objeto de sincronização está contido no membro pr_wchan da lwpsinfo_t apontada por curlwpsinfo. O significado desse endereço é um detalhe de implementação privado, mas o valor de endereço deve ser tratado como um símbolo exclusivo do objeto de sincronização.

surrender

Teste que é acionado quando uma CPU tiver sido instruída por outra CPU para tomar uma decisão de agendamento; geralmente porque um segmento de prioridade maior se tornou executável. 

tick

Teste que é acionado como parte de uma contagem baseada no tique-taque do relógio. Na contagem baseada no tique-taque do relógio, a contagem de CPU é realizada examinando-se quais segmentos e processos estão sendo executados quando uma interrupção de intervalo fixo é acionada. A lwpsinfo_t que corresponde ao segmento ao qual está sendo atribuído o tempo de CPU é apontada por args[0]. A psinfo_t que corresponde ao processo que contém o segmento é apontada por args[1] .

wakeup

Teste que é acionado imediatamente antes do segmento atual ativar um segmento em espera em um objeto de sincronização. A lwpsinfo_t do segmento em espera é apontada por args[0]. A psinfo_t do processo que contém o segmento em espera é apontada por args[1]. O tipo do objeto de sincronização está contido no membro pr_stype da lwpsinfo_t do segmento em espera. O endereço do objeto de sincronização está contido no membro >pr_wchan da lwpsinfo_t do segmento em espera. O significado desse endereço é um detalhe de implementação privado, mas o valor de endereço deve ser tratado como um símbolo exclusivo do objeto de sincronização.