Sous-routine posix_trace_create_withlog

Objectif

Crée un flux de trace actif et l'associe à un journal de trace.

Bibliothèque

Bibliothèque de trace Posix (libposixtrace.a)

Syntaxe

#include <sys/types.h>
#include <trace.h>

int posix_trace_create_withlog (pid, attr, file_desc, trid)
pid_t pid;
const trace_attr_t *restrict attr;
int file_desc;
trace_id_t *restrict trid;

Descriptif

La sous-routine posix_trace_create_withlog crée un flux de trace actif, comme le fait la sous-routine posix_trace_create , et associe le flux à un journal de trace.

Le paramètre file_desc doit être le descripteur de fichier désignant la destination du journal de trace. La sous-routine échoue si ce descripteur de fichier fait référence à un fichier ouvert avec l'indicateur O_APPEND ou si ce descripteur de fichier fait référence à un fichier qui n'est pas standard.

Le paramètre trid pointe vers le paramètre où la sous-routine posix_trace_create_withlog renvoie l'identificateur du flux de trace, qui identifie de manière unique le flux de trace nouvellement créé. L'identificateur de flux de trace peut être utilisé dans les appels suivants pour contrôler le traçage. Le paramètre trid est utilisé uniquement par les sous-routines suivantes:
  • posix_trace_clear
  • posix_trace_eventid_equal
  • posix_trace_eventid_get_name
  • posix_trace_eventtypelist_getnext_id
  • posix_trace_eventtypelist_rewind
  • posix_trace_flush
  • posix_trace_get_attr
  • posix_trace_get_filter
  • posix_trace_get_status
  • posix_trace_set_filter
  • posix_trace_shutdown
  • posix_trace_start
  • posix_trace_stop
  • posix_trace_trid_eventid_open
Notez que les opérations utilisées par un processus d'analyse de trace, tel que les sous-routines posix_trace_rewind ou posix_trace_close , ne peuvent pas être appelées à l'aide de l'identificateur de flux de trace renvoyé par la sous-routine posix_trace_create_withlog .

Pour un flux de trace actif avec journal, lorsque la sous-routine posix_trace_shutdown est appelée, tous les événements de trace qui n'ont pas été vidés dans le journal de trace sont vidés, comme dans la sous-routine posix_trace_flush , et le journal de trace est fermé.

Lorsqu'un journal de trace est fermé, toutes les informations qui peuvent être extraites ultérieurement du journal de trace via l'interface de trace sont écrites dans le journal de trace. Ces informations incluent les attributs de trace, la liste des types d'événement de trace (avec le mappage entre les noms d'événement de trace et les identificateurs de type d'événement de trace) et le statut de la trace.

Si la sous-routine posix_trace_create_withlog est appelée avec un objet attributs non initialisé comme paramètre, le résultat n'est pas spécifié.

Paramètres

Tableau 1. Paramètres
Article Descriptif
PID Indique l'ID de processus du processus de trace.
attr Indique l'objet d'attributs de trace.
des_fichier Indique le descripteur de fichier ouvert du journal de trace.
TRID Indique l'identificateur du flux de trace.

Valeurs renvoyées

Une fois l'opération terminée, cette sous-routine renvoie la valeur zéro et stocke la valeur de l'identificateur de flux de trace dans l'objet désigné par le paramètre trid . Sinon, il renvoie le numéro d'erreur correspondant.

Erreurs

Tableau 2. Erreurs
Article Descriptif
EAGAIN Aucun autre flux de trace ne peut être démarré maintenant. La valeur de TRACE_SYS_MAX a été dépassée.
EBADF Le paramètre file_desc n'est pas un descripteur de fichier valide ouvert pour l'écriture.
EINVAL Le paramètre attr est null ou les autres paramètres ne sont pas valides. Le paramètre file_desc fait référence à un fichier dont le type ne prend pas en charge la règle de journal associée au journal de trace.
ENOMEM Mémoire insuffisante pour créer le flux de trace avec les paramètres spécifiés.
ENOSPC Il ne reste plus d'espace sur l'unité. L'unité correspondant au paramètre file_desc ne contient pas l'espace requis pour créer ce journal de trace.
EPERM Ne dispose pas des privilèges appropriés pour tracer le processus spécifié par le paramètre pid .
ESRCH Le paramètre pid ne fait pas référence à un processus existant.

Fichiers

Les fichiers trace.h et types.h dans le document Files Reference