Go to file
Rodrigo Arias Mallo 3d8c84e17c Fix heap when size_t is not unsigned long long
When the width of size_t doesn't match the width of the unsigned long
long type, the number of leading zeros doesn't match, making the
heap_get_move() function return incorrect values. This is the case on
ARMv7 with 32 bits, where size_t is 32 bits but unsigned long long is 64
bits.

We check the size of size_t to select which builtin we need. The sizeof
operator cannot be used at preprocessing, so we rely on the
optimizations to only leave the proper assembly instruction.

Fixes: https://pm.bsc.es/gitlab/rarias/ovni/-/issues/193
2024-07-24 15:12:09 +02:00
.gitea/workflows Add Gitea CI workflow 2024-05-09 15:36:39 +02:00
cfg Switch the mark tracking for threads to active 2024-07-23 10:35:02 +02:00
cmake Add a fibonacci test to cause context switches 2024-03-21 17:07:19 +01:00
doc Document usage rules for the mark API 2024-07-23 10:35:08 +02:00
include Add ovni_mark_set() to the API 2024-06-19 12:26:35 +02:00
src Fix heap when size_t is not unsigned long long 2024-07-24 15:12:09 +02:00
test Set timeout to 30 seconds for tests 2024-07-24 15:12:09 +02:00
.clang-format Allow single line enums 2023-04-20 10:53:11 +02:00
.gitignore Ignore some directories and tags 2022-09-29 16:51:59 +02:00
.gitlab-ci.yml Cross compile for ARMv7, Aarch64 and RISC-V 64 2024-07-24 15:12:09 +02:00
.readthedocs.yaml Add .readthedocs.yaml file 2023-11-08 16:29:00 +01:00
CHANGELOG.md Add mark API to the changelog 2024-07-23 10:35:08 +02:00
CMakeLists.txt Release version 1.9.1 2024-05-10 15:31:38 +02:00
COPYING Add GPLv3 and MIT licenses 2021-11-03 11:32:17 +01:00
flake.lock Update OpenMP emulation model 2024-03-12 11:35:18 +01:00
flake.nix Cross compile for ARMv7, Aarch64 and RISC-V 64 2024-07-24 15:12:09 +02:00
mkdocs.yml Add documentation for the mark API 2024-06-20 11:08:29 +02:00
README.md Change the readme to markdown format 2022-11-14 10:40:26 +01:00

Ovni logo

The ovni project is composed of a runtime library (libovni.so), which generates a fast binary trace, and post-processing tools such as the emulator ovniemu, which transform the binary trace to the PRV format, suitable to be loaded in Paraver.

The libovni.so library is licensed under MIT, while the rest of tools are GPLv3 unless otherwise stated.

For more information, read the documentation online or take a look at the doc/ directory. You can display the documentation in HTML by running mkdocs serve from the root directory.

To build ovni you would need a C compiler, MPI and cmake version 3.20 or newer. To compile in build/ and install into $prefix use:

$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=$prefix ..
$ make
$ make install

To run the tests you can run (from the build directory):

$ make test

See cmake(1) and cmake-env-variables(7) to see more information about the variables affecting the generation and build process.