.. _using-jit-api: Compile and Link with JIT API ============================= To include JIT Profiling support, do one of the following: - Include the following files to your source tree: #. ``jitprofiling.h``, located under ``\include`` directory, in your code. This header file provides all API function prototype and type definitions. #. ``ittnotify_config.h``, ``ittnotify_types.h`` and ``jitprofiling.c``, located under ``/src/ittnotify`` directory. - Link the jitprofiling Static Library: #. ``jitprofiling.h``, located under ``\include`` directory, in your code. This header file provides all API function prototype and type definitions. #. Link to ``jitprofiling.lib`` (Windows*) or ``jitprofiling.a`` (Linux*), located under ``\build_\\bin`` directory. +----------------------------------------------------------------+-------------------------------------------------------------------------------+ | Use This Primitive | To Do This | +================================================================+===============================================================================+ | .. code-block:: cpp | Use this API to send a notification of ``event_type`` with the data pointed | | | by ``EventSpecificData`` to the agent. The reported information is used to | | int iJIT_NotifyEvent( iJIT_JVM_EVENT event_type, | attribute samples obtained from any profiling tool collector. | | void *EventSpecificData ); | | +----------------------------------------------------------------+-------------------------------------------------------------------------------+ | .. code-block:: cpp | Generate a new method ID. You must use this function to assign unique and | | | valid method IDs to methods reported to the profiler. This API returns a new | | unsigned int iJIT_GetNewMethodID( void ); | unique method ID. When out of unique method IDs, this API function returns 0. | +----------------------------------------------------------------+-------------------------------------------------------------------------------+ | .. code-block:: cpp | Returns the current mode of the profiler: off, or sampling, using the | | | ``iJIT_IsProfilingActiveFlags`` enumeration. This API returns | | iJIT_IsProfilingActiveFlags iJIT_IsProfilingActive( void ); | ``iJIT_SAMPLING_ON`` by default, indicating that Sampling is running. | | | It returns ``iJIT_NOTHING_RUNNING`` if no profiler is running. | +----------------------------------------------------------------+-------------------------------------------------------------------------------+ Lifetime of Allocated Data -------------------------- You send an event notification to the agent (Collector) with event-specific data, which is a structure. The pointers in the structure refer to memory that you allocated. You are responsible for releasing the allocated memory. The ``iJIT_NotifyEvent`` method uses these pointers to copy your data in a trace file. The pointers are not used after the ``iJIT_NotifyEvent`` method returns.