bionic (3) posix_trace_event.3posix.gz

Provided by: manpages-posix-dev_2013a-2_all bug

PROLOG

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of this interface
       may differ (consult the corresponding Linux manual page for details of Linux behavior), or the  interface
       may not be implemented on Linux.

NAME

       posix_trace_event,   posix_trace_eventid_open  —  trace  functions  for  instrumenting  application  code
       (TRACING)

SYNOPSIS

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

       void posix_trace_event(trace_event_id_t event_id,
           const void *restrict data_ptr, size_t data_len);
       int posix_trace_eventid_open(const char *restrict event_name,
           trace_event_id_t *restrict event_id);

DESCRIPTION

       The posix_trace_event() function shall record the event_id and the user data pointed to  by  data_ptr  in
       the  trace  stream  into  which the calling process is being traced and in which event_id is not filtered
       out. If the total size of the user trace event data represented by  data_len  is  not  greater  than  the
       declared  maximum size for user trace event data, then the truncation-status attribute of the trace event
       recorded is POSIX_TRACE_NOT_TRUNCATED.  Otherwise, the  user  trace  event  data  is  truncated  to  this
       declared   maximum   size   and   the   truncation-status  attribute  of  the  trace  event  recorded  is
       POSIX_TRACE_TRUNCATED_RECORD.

       If there is no trace stream created for the process or if the created trace stream is not running, or  if
       the  trace  event  specified  by  event_id  is  filtered out in the trace stream, the posix_trace_event()
       function shall have no effect.

       The posix_trace_eventid_open() function shall associate a user trace event name with a trace  event  type
       identifier  for  the  calling  process.  The  trace  event  name is the string pointed to by the argument
       event_name.  It shall have a maximum of {TRACE_EVENT_NAME_MAX} characters (which has  the  minimum  value
       {_POSIX_TRACE_EVENT_NAME_MAX}).   The number of user trace event type identifiers that can be defined for
       any given process is limited by the maximum value {TRACE_USER_EVENT_MAX}, which  has  the  minimum  value
       {POSIX_TRACE_USER_EVENT_MAX}.

       If the Trace Inherit option is not supported, the posix_trace_eventid_open() function shall associate the
       user trace event name pointed to by the event_name argument with a trace event type  identifier  that  is
       unique  for  the  traced process, and is returned in the variable pointed to by the event_id argument. If
       the user trace event name has already been mapped for the traced process, then  the  previously  assigned
       trace event type identifier shall be returned. If the per-process user trace event name limit represented
       by {TRACE_USER_EVENT_MAX} has been reached, the pre-defined POSIX_TRACE_UNNAMED_USEREVENT (see Table 2-7,
       Trace Option: User Trace Event) user trace event shall be returned.

       If  the  Trace  Inherit  option is supported, the posix_trace_eventid_open() function shall associate the
       user trace event name pointed to by the event_name argument with a trace event type  identifier  that  is
       unique  for  all  the  processes  being traced in this same trace stream, and is returned in the variable
       pointed to by the event_id argument. If the user trace event name has already been mapped for the  traced
       processes, then the previously assigned trace event type identifier shall be returned. If the per-process
       user trace event name limit represented by  {TRACE_USER_EVENT_MAX}  has  been  reached,  the  pre-defined
       POSIX_TRACE_UNNAMED_USEREVENT  (Table  2-7,  Trace  Option:  User  Trace Event) user trace event shall be
       returned.

       Note:     The above procedure, together with the fact that multiple processes can only be traced into the
                 same  trace  stream  by inheritance, ensure that all the processes that are traced into a trace
                 stream have the same mapping of trace event names to trace event type identifiers.

       If there is no trace stream created, the posix_trace_eventid_open() function shall store this information
       for future trace streams created for this process.

RETURN VALUE

       No return value is defined for the posix_trace_event() function.

       Upon  successful  completion,  the  posix_trace_eventid_open()  function  shall  return  a value of zero.
       Otherwise, it shall return the corresponding error number. The posix_trace_eventid_open() function stores
       the trace event type identifier value in the object pointed to by event_id, if successful.

ERRORS

       The posix_trace_eventid_open() function shall fail if:

       ENAMETOOLONG
              The  size  of  the  name pointed to by the event_name argument was longer than the implementation-
              defined value {TRACE_EVENT_NAME_MAX}.

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       None.

RATIONALE

       None.

FUTURE DIRECTIONS

       The posix_trace_event() and posix_trace_eventid_open() functions may be removed in a future version.

SEE ALSO

       Table 2-7, Trace Option: User Trace Event, exec, posix_trace_eventid_equal(), posix_trace_start()

       The Base Definitions volume of POSIX.1‐2008, <sys_types.h>, <trace.h>

       Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2013 Edition,
       Standard  for  Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base
       Specifications Issue 7, Copyright (C) 2013 by the Institute of Electrical and Electronics Engineers,  Inc
       and  The  Open Group.  (This is POSIX.1-2008 with the 2013 Technical Corrigendum 1 applied.) In the event
       of any discrepancy between this version and the original IEEE and The Open Group Standard,  the  original
       IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at
       http://www.unix.org/online.html .

       Any typographical or formatting errors that appear in this page are most likely to have  been  introduced
       during   the   conversion  of  the  source  files  to  man  page  format.  To  report  such  errors,  see
       https://www.kernel.org/doc/man-pages/reporting_bugs.html .