Guía de seguimiento dinámico de Solaris

Capítulo 21 Proveedor syscall

El proveedor syscall hace que esté disponible en el sistema un sondeo a la entrada y vuelta de cada una de las llamadas de sistema. Debido a que las llamadas de sistema son la principal interfaz entre las aplicaciones de nivel de usuario y el núcleo del sistema operativo, el proveedor syscall puede ofrecer una gran cantidad de información sobre el comportamiento de la aplicación con respecto al sistema.

Sondeos

syscall proporciona un par de sondeos para cada llamada de sistema: un sondeo entry, que se activa antes de que se introduzca la llamada de sistema, y un sondeo return que se activa después de que se haya completado la llamada de sistema pero antes de que se haya transferido al nivel de usuario. Para todos los sondeos syscall, el nombre de la función se define para que sea el nombre de la llamada de sistema instrumentada. El nombre del módulo no está definido.

Los nombres de las llamadas de sistema, tal y como las proporciona el proveedor syscall, se pueden encontrar en el archivo /etc/name_to_sysnum. A menudo, los nombres de la llamada de sistema proporcionados por syscall se corresponden con los nombres de la sección 2 de las páginas de man. Sin embargo, parte de los sondeos proporcionados por el proveedor syscall no se corresponden directamente con ninguna llamada de sistema documentada. Los motivos comunes para esta discrepancia y se describen en esta sección.

Anacronismos en la llamada de sistema

En algunos casos, el nombre de la llamada de sistema como la proporciona el proveedor syscall es en la realidad un reflejo de un detalle de implementación anterior. Por ejemplo, por motivos producidos por la antigüedad de UNIXTM, el nombre de exit(2) en /etc/name_to_sysnum es rexit. De modo similar, el nombre de time(2) es gtime, y el nombre de execle(2) y execve(2) es exece.

Llamadas de sistema subcodificadas

Algunas llamadas de sistema, tal y como se presentan en la sección 2, se implementan como operaciones secundarias de una llamada de sistema no documentada. Por ejemplo, las llamadas de sistema relativas a los semáforos de System V (semctl(2), semget(2), semids(2), semop(2) y semtimedop(2)) se implementan como operaciones secundarias de una única llamada de sistema: semsys. La llamada de sistema semsys toma como su primer argumento un código secundario específico de la implementación que indica la llamada de sistema específica requerida: SEMCTL, SEMGET, SEMIDS, SEMOP o SEMTIMEDOP, respectivamente. Como resultado de la sobrecarga de una única llamada de sistema para implementar varias llamadas de sistema, sólo hay un único par de sondeos syscall para los semáforos System V: syscall::semsys:entry y syscall::semsys:return .

Llamadas de sistema de grandes archivos

Un programa de 32 bits que admita archivos grandes que superen los cuatro gigabytes de tamaño debe poder procesar desplazamientos de archivos de 64–bits. Debido a que los archivos grandes requieren la utilización de grandes desplazamientos, los archivos grandes se manipulan mediante un conjunto paralelo de interfaces del sistema, como se describe enlf64(5). Estas interfaces se documentan en lf64, pero no cuentan con páginas de man individuales. Cada una de estas interfaces de llamada de sistema aparece como su propio sondeo syscall como se muestra en la Tabla 21–1.

Tabla 21–1 Sondeos de archivos grandes sycall

Sondeo syscall de archivos grandes

Llamada de 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)

Llamadas de sistema privadas

Algunas llamadas de sistema son detalles de implementación privados de los sistemas secundarios Solaris que amplían el límite del núcleo del usuario. Como tales, estas llamadas de sistema no tienen páginas de comando man en la sección 2. Entre los ejemplos de llamadas de sistema de esta categoría se incluye la llamada de sistema signotify, que se utiliza como parte de la implementación de las colas de mensaje POSIX.4, y la llamada de sistema utssys, que se utiliza para implementar fuser(1M).

Argumentos

Para los sondeos entry, los argumentos (arg0 .. argn) son los argumentos de la llamada de sistema. Para los sondeos return, tanto arg0 como arg1 contienen el valor devuelto. Un valor distinto a cero en la variable de D errno indica un fallo en la llamada de sistema.

Estabilidad

El proveedor syscallutiliza el mecanismo de estabilidad de DTrace para describir sus estabilidades, como se muestra en la siguiente tabla. Para obtener más información sobre el mecanismo de estabilidad, consulte el Capítulo 39Estabilidad.

Elemento 

Estabilidad del nombre 

Estabilidad de los datos 

Clase de dependencia 

Proveedor 

Evolutivo 

Evolutivo 

Común

Módulo 

Privado 

Privado 

Desconocido 

Función 

Inestable 

Inestable 

ISA 

Nombre 

Evolutivo 

Evolutivo 

Común

Argumentos 

Inestable 

Inestable 

ISA