Rastreo de estructuras de datos
En esta sección se describe la estructura de datos de rastreo.
El archivo de cabecera <trace.h> define la estructura posix_trace_status_info y las estructuras posix_trace_event_info .
estructura posix_trace_status_info
Para facilitar el control de una corriente de rastreo, llame a la subrutina posix_trace_get_status para obtener dinámicamente la información sobre el estado actual de una corriente de rastreo activa.
| Tipo de miembro | Nombre de miembro | Descripción |
|---|---|---|
| int | posix_stream_status | Modalidad operativa de la corriente de rastreo. |
| int | posix_stream_full_status | El estado completo de la corriente de rastreo. |
| int | posix_stream_overrun_status | Indica si los sucesos de rastreo se han perdido en la corriente de rastreo. |
| int | posix_stream_flush_status | Indica si hay un vaciado en curso. |
| int | posix_stream_flush_error | Indica si se ha producido algún error durante la última operación de vaciado. |
| int | posix_log_overrun_status | Indica si los sucesos de rastreo se han perdido en el registro de rastreo. |
| int | posix_log_full_status | El estado completo del registro de rastreo. |
- POSIX_TRACE_RUNNING
- El rastreo está en curso. La corriente de rastreo está aceptando sucesos de rastreo.
- POSIX_TRACE_SUSPENDIDO
- La corriente de rastreo no acepta sucesos de rastreo. La operación de rastreo no se ha iniciado o se ha detenido, siguiendo una llamada de subrutina posix_trace_stop o porque los recursos de rastreo se han agotado.
- POSIX_TRACE_FULL
- El espacio de la corriente de rastreo para los sucesos de rastreo se ha agotado.
- POSIX_TRACE_NOT_FULL
- El espacio de la corriente de rastreo no está lleno.
- POSIX_TRACE_RUNNING y POSIX_TRACE_NOT_FULL
- El rastreo está en curso y el espacio está disponible para registrar más sucesos de rastreo.
- POSIX_TRACE_RUNNING y POSIX_TRACE_FULL
- El rastreo está en curso y la corriente de rastreo está llena de sucesos de rastreo. Si la política de secuencia completa se establece en POSIX_TRACE_LOOP, es posible que se produzca este estado. La corriente de rastreo contiene sucesos de rastreo registrados durante una ventana de tiempo de movimiento de sucesos de rastreo anteriores, y algunos sucesos de rastreo anteriores pueden sobrescribirse y perderse.
- POSIX_TRACE_SUSPENDED y POSIX_TRACE_NOT_FULL
- El rastreo no se ha iniciado, la subrutina posix_trace_stop ha detenido el rastreo o la subrutina posix_trace_clear ha borrado el rastreo.
- POSIX_TRACE_SUSPENDED y POSIX_TRACE_FULL
- El rastreo se detiene. Se detiene porque el atributo de política de secuencia completa se establece en POSIX_TRACE_UNTIL_FULL y los recursos de rastreo se agotan, o porque se llama a la subrutina posix_trace_stop cuando se agota el recurso de rastreo.
- POSIX_TRACE_OVERRUN
- Al menos un suceso de rastreo se pierde y no se registra en la corriente de rastreo.
- POSIX_TRACE_NO_OVERRUN
- No se pierden sucesos de rastreo.
- La política es POSIX_TRACE_LOOP y se sobrescribe un suceso de rastreo registrado.
- La política es POSIX_TRACE_UNTIL_FULL y la corriente de rastreo está llena cuando se genera un suceso de rastreo.
- La política es POSIX_TRACE_FLUSH y se pierde más de un suceso de rastreo al vaciar la corriente de rastreo en el registro de rastreo.
El miembro posix_stream_overrun_status se restablece en cero después de leer su valor.
- POSIX_TRACE_FLUSHING
- La corriente de rastreo se está vaciando en el registro de rastreo.
- POSIX_TRACE_NOT_FLUSHING
- El miembro posix_stream_flush_status se establece en POSIX_TRACE_NOT_FLUSHING si no hay ninguna operación de vaciado en curso.
- Hay una operación de vaciado en curso porque se llama a la subrutina posix_trace_flush .
- Una operación de vaciado está en curso porque la corriente de rastreo se llena con el atributo stream-full-policy establecido en POSIX_TRACE_FLUSH.
El miembro posix_stream_flush_error se establece en cero si no se produce ningún error en el vaciado. Si se produce un error en una operación de vaciado anterior, el miembro posix_stream_flush_error se establece en el valor del primer error que se produce. Si se produce más de un error en la operación de vaciado, se utiliza el primer valor de error y los demás se descartan. El miembro posix_stream_flush_error se restablece en cero después de leer su valor.
- POSIX_TRACE_OVERRUN
- Se ha perdido al menos un suceso de rastreo.
- POSIX_TRACE_NO_OVERRUN
- No se pierde ningún suceso de rastreo.
El miembro posix_log_overrun_status se restablece en cero después de leer su valor.
Si la subrutina posix_trace_create crea una secuencia de rastreo activa y no tiene ningún registro, el miembro posix_log_overrun_status se establece en POSIX_TRACE_NO_OVERRUN.
- POSIX_TRACE_FULL
- El espacio del registro de rastreo está lleno.
- POSIX_TRACE_NOT_FULL
- El espacio del registro de rastreo no está lleno.
El miembro posix_log_full_status sólo es significativo cuando el atributo log-full-policy es POSIX_TRACE_UNTIL_FULL o POSIX_TRACE_LOOP.
Si la subrutina posix_trace_create crea una secuencia de rastreo activa y no tiene ningún registro, el miembro posix_log_full_status se establece en POSIX_TRACE_NOT_FULL.
estructura posix_trace_event_info
La estructura de sucesos de rastreo posix_trace_event_info contiene la información para un suceso de rastreo registrado. Las subrutinas posix_trace_getnext_event, posix_trace_timedgetnext_eventy posix_trace_trygetnext_event devuelven esta subrutina.
| Tipo de miembro | Nombre de miembro | Descripción |
|---|---|---|
| id_suceso_rastreo_t | id_suceso_posición | Identificación de tipo de suceso de rastreo. |
| pid_t | pid_posición | ID de proceso del proceso que genera el suceso de rastreo. |
| anular * | dirección_prog_posición | Dirección donde se invoca el punto de rastreo. |
| int | estado_truncamiento_posición | Estado de truncamiento de los datos asociados a este suceso de rastreo. |
| especificación de fecha y hora de estructura | indicación_fecha_hora_posix | Hora a la que se genera el suceso de rastreo. |
| PTHREAD_T | id_thread_posix | ID de la hebra que genera el suceso de rastreo. |
- posix_trace_trid_eventid_open
- posix_trace_eventtypelist_getnext_id
- posix_trace_eventid_open
Para obtener el nombre del tipo de suceso de rastreo, ejecute la subrutina posix_trace_eventid_get_name .
posix_pid es el identificador de proceso del proceso rastreado que genera el suceso de rastreo. Si el miembro posix_event_id es uno de los sucesos de rastreo del sistema y el suceso de rastreo no está asociado con ningún proceso, el miembro posix_pid se establece en cero.
Para un suceso de rastreo de usuario, el miembro posix_prog_address es la dirección correlacionada de un proceso y el punto en el que se realiza la llamada asociada a la subrutina posix_trace_event .
- POSIX_TRACE_NOT_TRUNCATED
- Todos los datos rastreados están disponibles.
- POSIX_TRACE_TRUNCATED_RECORD
- Los datos se truncan cuando se genera el suceso de rastreo.
- POSIX_TRACE_TRUNCATED_READ
- Los datos se truncan cuando el suceso de rastreo se lee desde una corriente de rastreo o un registro de rastreo. Este estado de truncamiento altera temporalmente el estado POSIX_TRACE_TRUNCATED_RECORD.
El miembro posix_timestamp define la hora a la que se genera el suceso de rastreo. El reloj utilizado es CLOCK_REALTIME. Para recuperar la resolución de este reloj, llame a la subrutina posix_trace_attr_getclockres .
El miembro posix_thread_id es el identificador de la hebra que genera el suceso de rastreo. Si el miembro posix_event_id es uno de los sucesos de rastreo del sistema y ese suceso de rastreo no está asociado con ninguna hebra, el miembro posix_thread_id se establece en cero.