Guia de rastreamento dinâmico Solaris

Testes

syscall fornece um par de testes para cada chamada do sistema: um teste entry que é acionado antes de a chamada do sistema ser inserida, e um teste return que é acionado depois que a chamada do sistema tenha sido concluída, mas antes de o controle ter sido transferido de volta para o nível do usuário. Para todos os testes syscall, o nome da função é definido como o nome da chamada do sistema instrumentado e o nome do módulo é indefinido.

Os nomes das chamadas do sistema, conforme fornecidos pelo provedor syscall, podem ser encontrados no arquivo /etc/name_to_sysnum. Com freqüência, os nomes da chamada do sistema fornecidos por syscall correspondem aos nomes na Seção 2 das páginas do manual. Entretanto, alguns testes fornecidos pelo provedor syscall não correspondem diretamente a qualquer chamada do sistema documentada. As razões comuns para esta discrepância são descritas nesta seção.

Anacronismos da chamada do sistema

Em alguns casos, o nome da chamada do sistema, conforme fornecido pelo provedor syscall, é realmente uma reflexão de um detalhe de implementação antigo. Por exemplo, por motivos remontam à época do UNIXTM, o nome de exit(2) em /etc/name_to_sysnum é rexit. Da mesma forma, o nome de time(2) é gtime, e o nome de execle(2) e de execve(2) é exece.

Chamadas do sistema subcodificadas

Algumas chamadas do sistema apresentadas na Seção 2 são implementadas como suboperações de uma chamada do sistema não documentada. Por exemplo, as chamadas do sistema relacionadas aos semáforos System V (semctl(2), semget(2), semids(2), semop(2) e semtimedop(2)) são implementados como superoperações de uma única chamada do sistema, semsys. A chamada do sistema semsys considera como seu primeiro argumento um subcódigo implementação específica, indicando a chamada do sistema específica necessária: SEMCTL, SEMGET , SEMIDS, SEMOP ou SEMTIMEDOP, respectivamente. Como um resultado da sobrecarga de uma chamada do sistema para implementar várias chamadas do sistema, existe apenas um único par de testes syscall de semáforos System V: syscall::semsys:entry e syscall::semsys:return .

Chamadas do sistema de arquivo grande

Um programa de 32 bits que aceite arquivos grandes que excedam quatro gigabytes de tamanho devem ser capazes de processar deslocamentos de arquivo de 64 bits. Como os arquivos grandes requerem o uso de deslocamentos grandes, tais arquivos são manipulados através de um conjunto paralelo de interfaces do sistema, conforme descrito em lf64(5). Estas interfaces são documentadas em lf64, mas elas não possuem páginas do manual individuais. Cada uma dessas interfaces de chamada do sistema de arquivo grande aparecem como seu próprio teste syscall , conforme mostrado na Tabela 21–1.

Tabela 21–1 Testes de arquivo grande sycall

Teste syscall de arquivo grande

Chamada do sistema 

creat64

creat(2)

fstat64

fstat(2)

fstatvfs64

fstatvfs(2)

getdents64

getdents(2)

getrlimit64

getrlimit(2)

lstat64

lstat(2)

mmap64

mmap(2)

open64

open(2)

pread64

pread(2)

pwrite64

pwrite(2)

setrlimit64

setrlimit(2)

stat64

stat(2)

statvfs64

statvfs(2)

Chamadas do sistema privadas

Algumas chamadas do sistema são detalhes de implementação privada de subsistemas do Solaris que expandem o limite do kernel do usuário. Em si, estas chamadas do sistema não possuem páginas do manual na Seção 2. Exemplos de chamadas do sistema nesta categoria incluem a chamada do sistema signotify, que é usada como parte da implementação das filas de mensagens POSIX.4, e a chamada do sistema utssys, que é usada para implementar fuser(1M).