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
5 of 9 tasks
elBoberido opened this issue Jun 5, 2024 · 0 comments · Fixed by #2335 or #2348
Open
5 of 9 tasks

32-Bit Support #2301

elBoberido opened this issue Jun 5, 2024 · 0 comments · Fixed by #2335 or #2348
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

  • Implement Add std::atomic abstraction #2329 to ensure that all lock-free algorithms perform the C++17 std::atomic<T>::is_always_lock_free with a static_assert to prevent compilation on targets which do not support the atomic data type without a process local lock
  • Fix all warnings on 32 bit
  • Implement provisional 32<->64 bit mixed-mode support
    • Implement spin-lock semaphore for condition variable
    • Implement spin-lock mutex for locking policy
  • Implement production-ready 32<->64 bit mixed-mode support on Linux and Windows
    • Implement futex-based semaphore and mutex on Linux
    • Implement WaitOnAddressBased semaphore and mutes on Windows
  • Adjust the UsedChunkList for torn-reads and torn-writes 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
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jul 24, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jul 24, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jul 24, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jul 24, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jul 24, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Jul 24, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Aug 22, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Aug 22, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Aug 22, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Aug 22, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Aug 22, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Aug 22, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Aug 22, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Aug 22, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Aug 22, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 15, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 16, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 19, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 19, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 19, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 19, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 19, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 20, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 20, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 20, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 20, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 21, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 23, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 23, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 23, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 23, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 23, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 23, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 23, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 23, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 23, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 23, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 23, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 23, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 26, 2024
elBoberido added a commit to elBoberido/iceoryx that referenced this issue Sep 27, 2024
elBoberido added a commit that referenced this issue Sep 27, 2024
@elBoberido elBoberido linked a pull request Sep 27, 2024 that will close this issue
21 tasks
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

Successfully merging a pull request may close this issue.

1 participant