Skip to content

LutzCle/papi-sys

Repository files navigation

papi-sys

Usage

First, add the following to your Cargo.toml:

[dependencies]
papi-sys = "0.1.0"

Before building, ensure that PAPI is installed on your system.

What is papi-sys?

The purpose of this crate is to provide 1:1 bindings for papi.h. PAPI is a library that provides a consistent interface to hardware performance counters. Visit the PAPI website for more information.

Note that this crate does not provide a high-level interface to PAPI.

Environment Variables

There are two environment variables to specify a custom PAPI library path:

  • PAPI_PREFIX: required to generate bindings.rs
  • LD_LIBRARY_PATH: required to dynamically link libpapi.so

Let's assume you installed PAPI in /opt/papi/5.7.0/, then you can test by

$ PAPI_PREFIX=/opt/papi/5.7.0/ LD_LIBRARY_PATH=/opt/papi/5.7.0/lib:$LD_LIBRARY_PATH cargo test

To avoid setting LD_LIBRARY_PATH, you can configure the search path globally by running:

$ sudo echo "/opt/papi/5.7.0/" > /etc/ld.so.conf.d/papi.conf
$ sudo ldconfig

Platforms

The following platforms are currently tested:

  • x86_64-unknown-linux-gnu
  • powerpc64le-unknown-linux-gnu

Dependencies

The following dependency versions are currently required:

  • rustc >= 1.36
  • gcc >= 4.8 or clang >= 3.8

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

PAPI bindings for Rust generated with Bindgen

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages