blob: 8302d21c25c3d4edfc4d4bbd9fc7051b7654885c [file] [log] [blame] [edit]
.. _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 ``<ittapi_dir>\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 ``<ittapi_dir>/src/ittnotify`` directory.
- Link the jitprofiling Static Library:
#. ``jitprofiling.h``, located under ``<ittapi_dir>\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 ``<ittapi_dir>\build_<target_platform>\<target_bits>\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.