status_t DebuggerInterface::GetNextDebugEvent(DebugEvent*& _event) { while (true) { debug_debugger_message_data message; int32 messageCode; ssize_t size = read_port(fDebuggerPort, &messageCode, &message, sizeof(message)); if (size < 0) { if (size == B_INTERRUPTED) continue; return size; } if (message.origin.team != fTeamID) continue; bool ignore = false; status_t error = _CreateDebugEvent(messageCode, message, ignore, _event); if (error != B_OK) return error; if (ignore) { if (message.origin.thread >= 0 && message.origin.nub_port >= 0) continue_thread(message.origin.nub_port, message.origin.thread); continue; } return B_OK; } }
status_t LocalDebuggerInterface::GetNextDebugEvent(DebugEvent*& _event) { while (true) { char buffer[2048]; int32 messageCode; ssize_t size = read_port(fDebuggerPort, &messageCode, buffer, sizeof(buffer)); if (size < 0) { if (size == B_INTERRUPTED) continue; return size; } if (messageCode <= B_DEBUGGER_MESSAGE_HANDED_OVER) { debug_debugger_message_data message; memcpy(&message, buffer, size); if (message.origin.team != fTeamID) continue; bool ignore = false; status_t error = _CreateDebugEvent(messageCode, message, ignore, _event); if (error != B_OK) return error; if (ignore) { if (message.origin.thread >= 0 && message.origin.nub_port >= 0) error = continue_thread(message.origin.nub_port, message.origin.thread); if (error != B_OK) return error; continue; } return B_OK; } KMessage message; size = message.SetTo(buffer); if (size != B_OK) return size; return _GetNextSystemWatchEvent(_event, message); } return B_OK; }
status_t LocalDebuggerInterface::ContinueThread(thread_id thread) { return continue_thread(fNubPort, thread); }
status_t DebuggerInterface::ContinueThread(thread_id thread) { continue_thread(fNubPort, thread); return B_OK; }