Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR includes three important improvements to the uORB system:
1. unit_test Bug Fix (Commit: a53d032)
Fixed the error message caused by inconsistent definitions of
pthread_ton different platforms in the uORB unit test module. Some platforms definepthread_tas a pointer type, while others define it as an integral type, which caused compilation errors or warnings when directly using it in certain contexts.Changes:
pthread_ttypesystem/uorb/test/unit_test.c(6 lines deleted)2. Merge set_info to orb_advertise_multi_queue_info (Commit: 0295e58)
Merged the
set_infofunctionality into a new unified APIorb_advertise_multi_queue_info(), which allows advertising a topic with device information in a single call.Previous workflow:
orb_advertise_multi_queue()orb_set_info()to set device informationNew workflow:
orb_advertise_multi_queue_info()- does both in one stepChanges:
system/uorb/uORB/uORB.c(46 lines changed, 54 insertions, 38 deletions)system/uorb/uORB/uORB.h(46 lines changed, 54 insertions, 38 deletions)orb_advertise_multi_queue_info()3. Loop Bug Fix in epoll (Commit: d1d8823)
Fixed a critical bug in the uORB epoll implementation where only the first
POLLINevent was being processed when multiple events arrived simultaneously.Problem:
When multiple file descriptors had pending events, the epoll event loop would only handle the first event and exit, leaving subsequent events unprocessed. This caused event loss and application hangs waiting for notifications that were never delivered.
Solution:
Fixed the loop logic to properly iterate through all pending events in a single epoll_wait() call, ensuring all ready file descriptors are serviced.
Changes:
system/uorb/uORB/epoll.c(9 lines changed, 6 insertions, 3 deletions)Impact
Testing
unit test