-
Notifications
You must be signed in to change notification settings - Fork 0
Feat/shm #246
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
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces shared memory support and refactors several core components to improve API design and eliminate global mutable state. The changes focus on making the codebase more modular and thread-safe.
Key changes:
- Added POSIX shared memory wrapper with comprehensive test coverage and examples
- Refactored IPC initialization to use const reference instead of move semantics
- Redesigned EgoClock API from static to instance-based to support multiple named clocks
Reviewed Changes
Copilot reviewed 48 out of 48 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| modules/common/realtime/include/grape/realtime/shared_memory.h | New POSIX shared memory API with RAII semantics |
| modules/common/realtime/src/shared_memory.cpp | Implementation of shared memory creation, mapping, and management |
| modules/common/realtime/tests/shared_memory_tests.cpp | Comprehensive test coverage for shared memory operations |
| modules/common/realtime/examples/shm_futex_example.cpp | Producer-consumer example using shared memory and futex |
| modules/common/realtime/examples/shared_memory_bench.cpp | Performance benchmarks for shared memory operations |
| modules/common/ipc/include/grape/ipc/session.h | Changed init() parameter from rvalue to const reference |
| modules/common/ipc/src/session.cpp | Refactored to use atomic flag and atexit instead of RAII Manager |
| modules/common/ipc/py/session_bindings.cpp | Updated Python bindings to match new signature |
| modules/experimental/robot/ego_clock/include/grape/ego_clock.h | Changed from static API to instance-based with factory method |
| modules/experimental/robot/ego_clock/src/ego_clock.cpp | Removed global state, added Impl class with per-instance receiver |
| modules/experimental/robot/ego_clock/src/clock_data.h | Changed ClockTopic from struct to class with topic name composition |
| modules/experimental/robot/ego_clock/src/ego_clock_driver.cpp | Added clock_name to Config and ClockTopic initialization |
| modules/common/utils/include/grape/utils/file_system.h | Added getSystemName() and moved getHostName() from ip.h |
| modules/common/utils/src/file_system.cpp | Implementation of getSystemName() with env/file/hostname fallback |
| modules/experimental/robot/locomotion/interface/include/grape/locomotion/topics.h | Refactored topics to store composed topic_name instead of robot_name |
| external/third_party_versions.cmake | Updated SDL3 from 3.2.24 to 3.2.26 |
| external/CMakeLists.txt | Enabled eCAL apps, ftxui, timeplugins, and additional third-party libs |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
No description provided.