ittapi-sys

[![Build Status](https://github.com/intel/ittapi/workflows/CI/badge.svg)][ci] [![Documentation Status](https://docs.rs/ittapi-sys/badge.svg)][docs]

This crate contains low-level Rust bindings for the C ittapi library--you likely want to use the [high-level Rust crate]. The ittapi library is used for various aspects of Intel® profiling; it exposes the Instrumentation and Tracing Technology (ITT) API as well as the Just-In-Time (JIT) Profiling API. More details about ittapi are available on its [README].

IMPORTANT NOTE: this crate is currently only tested on Linux, macOS, and Windows platforms but support for other platforms is intended; contributions are welcome!

If you are interested in using VTune to profile Rust applications, you may find the following guide helpful: Wasmtime Docs: Using VTune on Linux

Use

toml [dependencies] ittapi-sys = "0.2"

Build

cargo build

Building ittapi-sys will build the ittapi C library and link it statically into your application; see the [build.rs] file.

For Windows developers: this crate uses a symbolic link to access the C library it depends on. To modify this crate on Windows, either [configure Git to understand POSIX symlinks] or use the [copy-c-library.ps1] script to temporarily copy the files.

Test

sh cargo test

This crate's tests ensure the ittapi-sys bindings remain up to date with the [official C header files]; they do not check ittapi functionality.

Regenerate Bindings

If the ittapi-sys bindings are not up to date, they can be regenerated with:

sh BLESS=1 cargo test

The binding generation uses bindgen. An in-depth description of how to use bindgen is available in the bindgen documentation.