#transactional-memory #rtm #tsx #transactional #memory #transaction

nightly intel-tsx-rtm

Provides intrinsics for Rust to use Intel's TSX RTM, a hardware transactional memory extension for some Skylake CPUs

3 unstable releases

Uses old Rust 2015

0.1.0 Feb 8, 2018
0.0.1 Feb 6, 2018
0.0.0 Jan 29, 2018

#13 in #transactional-memory

MIT license

21KB
276 lines

intel-tsx-rtm

This crates provides a simple set of wrappers around Intel's TSX RTM instructions and associated intrinsics. It needs a C compiler to create a small shim. This is important because Rust's compiler does not like code with multiple returns. It does not depend on your compiler having the necessary headers (<immintrin.h>), and so can work with older compilers and other Operating Systems.

It uses third-party self-modifying code (Andi Kleen's tsx-tools) to provide runtime detection of CPUs without TSX and fallback to non-hardware paths.

Licensing

The license for this project is MIT.


lib.rs:

intel-tsx-rtm

This crates provides a simple set of wrappers around Intel's TSX RTM instructions and associated intrinsics. It uses code to provide runtime detection of CPUs without TSX and fallback to non-hardware paths. It is best to start with HardwareMemoryTransactionManager.

It will only compile with nightly (as of February 8th, 2018) because it uses the asm! macro.

Dependencies

~0.6–0.9MB
~18K SLoC