-
Notifications
You must be signed in to change notification settings - Fork 566
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
i#2019: bound signal delivery for arrivals in DR or gencode
Adds a new check for pending signals at the top of fcache_enter, to avoid entering a linked fragment after a signal arrived while in DR (where we can't safely unlink). This works by returning back to dispatch for signal delivery. This raises a complication for interrupted system call entries, for which we cannot easily remember multiple pieces of state (the post-syscall continuation plus the fact that we need to do a syscall): we instead go backward and point at the syscall instruction itself (which will produce a tail-bb). Adds unlinking of the last-entered fragment for signals that arrive in gencode, which handles signals arriving in the middle of fcache_enter. This also unlinks the target of an IBL for signals that arrive while there, except for the final jmp* which is punted to i#2042. Adds two new tests based on code from Edmund Grimley Evans from the issue tracker. A64's fcache_enter signal pending check is NYI here and left for i#2043 due to lack of conditional branch generation support. Fixes #2019 Fixes #2025 Review-URL: https://codereview.appspot.com/313910043
- Loading branch information
1 parent
98657e1
commit 5d3c252
Showing
17 changed files
with
603 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.