Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

32-Bit Support #2301

Open
3 tasks
elBoberido opened this issue Jun 5, 2024 · 0 comments
Open
3 tasks

32-Bit Support #2301

elBoberido opened this issue Jun 5, 2024 · 0 comments
Assignees
Labels
feature request Feature request under evaluation

Comments

@elBoberido
Copy link
Member

elBoberido commented Jun 5, 2024

Brief feature description

The main reason iceoryx is not running on 32-Bit CPUs are the lock-free algorithms. Our implementations rely on 8 byte (64 bit) CAS operations being lock-free. However, currently available 32bit CPUs often support 8 byte CAS.

The goal is to get iceoryx running on the Kria KR260 Robotics Starter Kit

Detailed information

godbolt example with 64 bit data type

Additional hurdles

  • The UsedChunkList stores its data as 64 bit values and uses an atomic flag for synchronization for RouDi in case an application dies. With 32 bit CPUs this can lead to torn writes. These torn writes need to be detected when RouDi cleans up the remainder of a dead process.
  • There are a ton on warnings, e.g. usize_t is smaller than uint64_t on 32 bit

Additional information

Tasks

  • Use the C++17 std::atomic<T>::is_always_lock_free in all lock-free algorithms with a static_assert to prevent compilation on targets which do not support the atomic data type without a process local lock
  • Adjust the UsedChunkList
  • Fix all warnings on 32 Bit

Related issues

@elBoberido elBoberido added the feature request Feature request under evaluation label Jun 5, 2024
@elBoberido elBoberido self-assigned this Jun 5, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jun 7, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jun 7, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jun 7, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jun 7, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jun 7, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jun 7, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jun 7, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jun 7, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jun 7, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jun 7, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jun 7, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jul 1, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jul 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request Feature request under evaluation
Projects
None yet
Development

No branches or pull requests

1 participant