Provided by: manpages-posix-dev_2017a-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‐2017, <sys_types.h>, <trace.h>

COPYRIGHT

       Portions  of  this  text  are  reprinted  and  reproduced in electronic form from IEEE Std
       1003.1-2017, Standard for Information Technology -- Portable  Operating  System  Interface
       (POSIX),  The  Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 by
       the Institute of Electrical and Electronics Engineers, Inc and The  Open  Group.   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.opengroup.org/unix/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 .