fix(fifo): implement proper blocking for FIFO read/write operations #123
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
Problem
Phase 7 of the FIFO tests (blocking read with fork) was failing because:
Solution
Drop the process manager lock before entering blocking paths:
The blocking implementation follows the established TCP double-check pattern:
blocked_in_syscallflagTest Results
All 10 FIFO test phases now pass:
Files Changed
kernel/src/ipc/pipe.rs- Addread_waiterstracking and wake mechanismkernel/src/ipc/fifo.rs- Addwithout_interruptswrappers for lock safetykernel/src/syscall/fs.rs- FIFO open blocking implementationkernel/src/syscall/handlers.rs- FIFO read/write blocking with proper lock release🤖 Generated with Claude Code