semaphore: remove redundant leave_critical_section in sem_trywait_slow #18052
+0
−1
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 removes a redundant leave_critical_section() call in the semaphore try-wait operation. Analysis shows the critical section is already properly released at the common exit point (the 'out' label), making the intermediate call unnecessary. This elimination of code duplication simplifies the logic flow and reduces redundant operations.
Changes Made
Impact
• Code Quality: Eliminates redundant critical section release
• Maintainability: Simplifies error handling logic in semaphore operations
• Performance: Removes unnecessary critical section management operations
• Clarity: Makes control flow more obvious by using single exit point
Testing
Test Environment:
• Host: Linux x86_64
• Board: sim (simulator platform)
• Configuration: NuttX with semaphore support
Test Procedure:
Test Results:
Semaphore Try-Wait Operations:
Critical Section Management:
Multi-task Scenarios:
Stress Testing:
Verification Checklist:
• ✅ sem_trywait() functions work correctly without redundant release
• ✅ Critical section properly managed through single exit point
• ✅ Error handling paths work correctly
• ✅ Semaphore state remains consistent
• ✅ No premature critical section releases
• ✅ No dangling critical sections
• ✅ No regressions in semaphore operations
• ✅ OSTest passed without failures
Related Issues
Removes code duplication in semaphore operations by eliminating redundant critical section management.