NAME
          irTrace, irQTrace, irTraceP, irQTraceP, irTRACEPROC_CHK,
          irTRACECHAN_CHK, irTrace_Put, irSetTraceArea, irSetTraceQ-
          key, irSetTraceChan, irSetTraceLevel, irSetTraceLogMode,
          irSetTraceDateMode, irSetTraceLboltMode - append data to the
          trace log

     SYNOPSIS
          #include <irapi.h>

          void irTrace (int channel, unsigned long level, unsigned
          long area, const char *fmt, /*varargs*/);

          void irQTrace (int channel, unsigned long level, unsigned
          long area, const char *str);

          void irTraceP (int channel, unsigned long level, unsigned
          long area, const char *fmt, /*varargs*/);

          void irQTraceP (int channel, unsigned long level, unsigned
          long area, const char *str);

          int irTRACECHAN_CHK (int channel, unsigned long level,
          unsigned long area);

          int irTRACEPROC_CHK (int channel, unsigned long level,
          unsigned long area);

          void irTrace_Put (const char *str);

          void irSetTraceChan (int channel, int flag);

          void irSetTraceQkey (ir_key_t qkey, int flag);

          void irSetTraceArea (unsigned long area, int flag);

          void irSetTraceLevel (unsigned long level, int flag);

          void irSetTraceLogMode (int flag);

          void irSetTraceDateMode (int flag);

          void irSetTraceLboltMode (int flag);

     DESCRIPTION
          irTrace formats and logs data into the trace shared memory
          buffer or to the trace log if tracing is on for the speci-
          fied channel at the indicated level for area.  Any level of
          tracing is allowed.

          irTraceP formats and logs data into the trace shared memory
          buffer or to the trace log if tracing is on for the
          indicated level for area and for the calling process, or if
          the channel is valid and tracing is on for that channel.
          Any level of tracing is allowed.  If channel is -1, the
          trace message does not display the channel number.

          irQTrace and irQTraceP are "quick" versions of irTrace and
          irTraceP, respectively.  irQTrace and irQTraceP are macros
          that perform all the necessary checks, and then only call a
          trace subroutine if necessary.  However, irQTrace and
          irQTraceP do not accept variable arguments.

          The irTRACECHAN_CHK macro returns non-zero if channel-level
          tracing is on for the given channel, level, and area.

          The irTRACEPROC_CHK macro returns non-zero if process-level
          tracing is turned on for this process' given channel, level,
          and area.

          irTrace_Put writes the given str into the trace shared
          memory buffer or to the trace log unconditionally.  It is
          recommended that this function be used in conjunction with
          the irTRACECHAN_CHK and irTRACEPROC_CHK macros.

          By default, trace messages are logged to the trace shared
          memory buffer.  To direct the trace messages to the trace
          log file, call irSetTraceLogMode with a argument of IRD_ON.
          To direct the trace messages to the trace shared memory
          buffer, call irSetTraceLogMode with a argument of IRD_OFF.

          By default, trace messages are not timestamped nor
          lboltstampped when they are placed in the trace shared
          memory buffer.  To turn on the timestamping of every trace
          message when it is placed in the trace buffer, call irSet-
          TraceDateMode with a argument of IRD_ON.  To turn off the
          timestamping of every trace message, call irSetTraceDateMode
          with a argument of IRD_OFF.  To turn on the lboltstamping of
          every trace message when it is placed in the trace buffer,
          call irSetTraceLboltMode with a argument of IRD_ON.  To turn
          off the lboltstamping of every trace message, call irSetTra-
          ceLboltMode with a argument of IRD_OFF.

          fmt is a printf(3s) style formatting string and varargs are
          the arguments required to format the string.  All trace mes-
          sages logged with irTrace are logged with the TRACE001 mes-
          sage.  By default, TRACE001 is assigned to the trace logger
          destination.  The TRACE001 log message has the following
          format:

          TRACE001  -- CH %3d<<chan,D>> (TRACE_GEN) %s<<message,S>>

          Here, %3d<<chan>> is the channel argument and
          %s<<message,S>> is fmt formatted with varargs.
          Trace messages are logged only when some process either via
          trace(1VIS) or irSetTrace<Type> send tracing on messages
          matching the arguments set to irTrace.

          A process must be registered with irRegister(3IRAPI) before
          tracing for that process may begin.

          irSetTraceChan activates or deactivates trace messages for
          chan as indicated by flag.  flag may be either IRD_ON or
          IRD_OFF.

          irSetTraceArea activates or deactivates trace messages for
          area as indicated by flag.  flag may be either IRD_ON or
          IRD_OFF.

          irSetTraceLevel activates or deactivates trace messages for
          level as indicated by flag.  flag may be either IRD_ON or
          IRD_OFF.

          irSetTraceQkey activates or deactivates trace messages for
          qkey as indicated by flag.  flag may be either IRD_ON or
          IRD_OFF.

          areas and levels are bit maps used to allow trace(1VIS) to
          be more selective in terms of trace output.  This means the
          higher the level, the greater the level of detail on trace
          output.  Level 32 messages include the greatest level of
          detail, and level 1, the least.  Trace levels are defined by
          the IRD_TRACE_LEVEL_1 through IRD_TRACE_LEVEL_16 for user
          defined levels, these levels occupy bits 0 through 15 in the
          level bit mask.  IRAPI applications may use these levels and
          attach whatever meaning to these levels that suits them.
          trace(1VIS) supports tracing on these user defined levels.
          Trace levels 17 through 32 are reserved for internal IRAPI
          library functions and VIS processes.  It is not recommended
          that user applications generate trace messages in the
          reserved levels.  However, applications may use
          irSetTraceLevel to enable tracing on these levels.

          Trace areas are defined by the IRD_TRACE_AREA_1 through
          IRD_TRACE_AREA_16 for user defined areas, these areas occupy
          bits 0 through 15 in the area bit mask.  IRAPI applications
          may use these areas and attach whatever meaning suits them
          to these areas.  trace(1VIS) supports tracing on these user
          defined areas.  Trace areas 17 through 32 are reserved for
          internal IRAPI library functions and VIS processes.  Defines
          symbols for these areas are found in IrDEFINES(4IRAPI) as
          IRD_TRACE_AREA_<area>, where <area> is a two letter mnemonic
          for the particular area.  It is not recommended that user
          applications generate trace messages in the reserved areas.
          However, applications may use irSetTraceArea to enable trac-
          ing on these areas.
          Tracing may be done on these areas and levels through the
          trace(1VIS) command.

     EVENT
          No event results from the call to irTrace.

     RETURN VALUE
          none

     ERROR
          none

     NOTE
          Never call irTrace nor irQTrace with an invalid channel
          number, otherwise the trace message will always be displayed
          regardless of whether the process or channel is being
          traced.

     SEE ALSO
          trace(1VIS), IrDEFINES(4IRAPI).

     VERSION
          This is version 11/25/02 of this man page.