* set_port_owner() was the only usable call of the port API, and of course it

was used this way in the debugger. Doing this later should be harmless,
  AFAICT, but Ingo will probably know better.
* Beware, though, the debugger currently does not work anymore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33730 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2009-10-22 16:10:28 +00:00
parent 48c06f4214
commit 5c056f9f10

View File

@ -2512,6 +2512,7 @@ install_team_debugger(team_id teamID, port_id debuggerPort,
bool releaseDebugInfoLock = true;
port_id oldDebuggerPort = -1;
port_id nubPort = -1;
bool handOverPort = false;
cpu_status state = disable_interrupts();
GRAB_TEAM_DEBUG_INFO_LOCK(team->debug_info);
@ -2546,16 +2547,7 @@ install_team_debugger(team_id teamID, port_id debuggerPort,
releaseDebugInfoLock = false;
handOver = true;
done = true;
// finally set the new port owner
if (set_port_owner(nubPort, debuggerTeam) != B_OK) {
// The old debugger must just have died. Just proceed as
// if there was no debugger installed. We may still be too
// early, in which case we'll fail, but this race condition
// should be unbelievably rare and relatively harmless.
handOver = false;
done = false;
}
handOverPort = true;
}
} else {
// there's already a debugger installed
@ -2576,6 +2568,15 @@ install_team_debugger(team_id teamID, port_id debuggerPort,
restore_interrupts(state);
if (handOverPort && set_port_owner(nubPort, debuggerTeam) != B_OK) {
// The old debugger must just have died. Just proceed as
// if there was no debugger installed. We may still be too
// early, in which case we'll fail, but this race condition
// should be unbelievably rare and relatively harmless.
handOver = false;
done = false;
}
if (handOver) {
// prepare the handed-over message
debug_handed_over notification;