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

Interoperability between 32-bit and 64-bit applications. #402

Open
elBoberido opened this issue Sep 27, 2024 · 0 comments
Open

Interoperability between 32-bit and 64-bit applications. #402

elBoberido opened this issue Sep 27, 2024 · 0 comments

Comments

@elBoberido
Copy link
Member

Brief feature description

Having interoperability between 32-bit and 64-bit applications would help porting legacy application to 64-bit by opening the path to port one application at a time and keep the system running.

Additionally, there are SoCs with 32-bit realtime cores and 64-bit performance cores. An interoperability between 32-bit and 64-bit application is a precondition for zero-copy between those cores.

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

Detailed information

Due to differences in the alignment of 64-bit PODs on 32-bit architectures compared to 64-bit architectures, it must be ensured that all data structures have the same data layout. With C++ and GCC this can be done via the -malign-double flag, which ensures that the alignment of 64-bit PODs on 32-bit architectures matches the alignment of the 64-bit architectures.

If Rust does not support such a compiler flag, all 64-bit data structures must have an explicit alignment to 8 bytes.

Additionally, POSIX data structures like ´sem_t´ have a different size on 32-bit than on 64-bit. These structures cannot be used in shared memory and need an replacement. On Linux, a futex based solution can be used and on Windows a similar approach with WaitOnAddress is feasible. Operating systems which do not support such a mechanism, can either use a spin based solution or a completely different concept which does not rely on such a data structure being placed into the shared memory.

References

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant