⛏️ index : haiku.git

/*
 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */

#include "DebugEvent.h"

#include "CpuState.h"


// #pragma mark - DebugEvent


DebugEvent::DebugEvent(int32 eventType, team_id team,
	thread_id thread)
	:
	fEventType(eventType),
	fTeam(team),
	fThread(thread),
	fThreadStopped(false)
{
}


DebugEvent::~DebugEvent()
{
}


void
DebugEvent::SetThreadStopped(bool stopped)
{
	fThreadStopped = stopped;
}


// #pragma mark - CpuStateEvent


CpuStateEvent::CpuStateEvent(debug_debugger_message eventType, team_id team,
	thread_id thread, CpuState* state)
	:
	DebugEvent(eventType, team, thread),
	fCpuState(state)
{
	if (fCpuState != NULL)
		fCpuState->AcquireReference();
}


CpuStateEvent::~CpuStateEvent()
{
	if (fCpuState != NULL)
		fCpuState->ReleaseReference();
}


// #pragma mark - ThreadDebuggedEvent


ThreadDebuggedEvent::ThreadDebuggedEvent(team_id team, thread_id thread)
	:
	DebugEvent(B_DEBUGGER_MESSAGE_THREAD_DEBUGGED, team, thread)
{
}


// #pragma mark - DebuggerCallEvent


DebuggerCallEvent::DebuggerCallEvent(team_id team, thread_id thread,
	target_addr_t message)
	:
	DebugEvent(B_DEBUGGER_MESSAGE_DEBUGGER_CALL, team, thread),
	fMessage(message)
{
}


// #pragma mark - BreakpointHitEvent


BreakpointHitEvent::BreakpointHitEvent(team_id team, thread_id thread,
	CpuState* state)
	:
	CpuStateEvent(B_DEBUGGER_MESSAGE_BREAKPOINT_HIT, team, thread, state)
{
}


// #pragma mark - WatchpointHitEvent


WatchpointHitEvent::WatchpointHitEvent(team_id team, thread_id thread,
	CpuState* state)
	:
	CpuStateEvent(B_DEBUGGER_MESSAGE_WATCHPOINT_HIT, team, thread, state)
{
}



// #pragma mark - SingleStepEvent


SingleStepEvent::SingleStepEvent(team_id team, thread_id thread,
	CpuState* state)
	:
	CpuStateEvent(B_DEBUGGER_MESSAGE_SINGLE_STEP, team, thread, state)
{
}


// #pragma mark - ExceptionOccurredEvent


ExceptionOccurredEvent::ExceptionOccurredEvent(team_id team, thread_id thread,
	debug_exception_type exception)
	:
	DebugEvent(B_DEBUGGER_MESSAGE_EXCEPTION_OCCURRED, team, thread),
	fException(exception)
{
}


// #pragma mark - TeamDeletedEvent


TeamDeletedEvent::TeamDeletedEvent(team_id team, thread_id thread)
	:
	DebugEvent(B_DEBUGGER_MESSAGE_TEAM_DELETED, team, thread)
{
}


// #pragma mark - TeamExecEvent


TeamExecEvent::TeamExecEvent(team_id team, thread_id thread)
	:
	DebugEvent(B_DEBUGGER_MESSAGE_TEAM_EXEC, team, thread)
{
}


// #pragma mark - ThreadCreatedEvent


ThreadCreatedEvent::ThreadCreatedEvent(team_id team, thread_id thread,
	thread_id newThread)
	:
	DebugEvent(B_DEBUGGER_MESSAGE_THREAD_CREATED, team, thread),
	fNewThread(newThread)
{
}


// #pragma mark - ThreadRenamedEvent


ThreadRenamedEvent::ThreadRenamedEvent(team_id team, thread_id thread,
	thread_id renamedThread, const char* newName)
	:
	DebugEvent(DEBUGGER_MESSAGE_THREAD_RENAMED, team, thread),
	fRenamedThread(renamedThread)
{
	strlcpy(fName, newName, sizeof(fName));
}


// #pragma mark - ThreadPriorityChangedEvent


ThreadPriorityChangedEvent::ThreadPriorityChangedEvent(team_id team,
	thread_id thread, thread_id changedThread, int32 newPriority)
	:
	DebugEvent(DEBUGGER_MESSAGE_THREAD_PRIORITY_CHANGED, team, thread),
	fChangedThread(changedThread),
	fNewPriority(newPriority)
{
}


// #pragma mark - ThreadDeletedEvent


ThreadDeletedEvent::ThreadDeletedEvent(team_id team, thread_id thread)
	:
	DebugEvent(B_DEBUGGER_MESSAGE_THREAD_DELETED, team, thread)
{
}


// #pragma mark - ImageCreatedEvent


ImageCreatedEvent::ImageCreatedEvent(team_id team, thread_id thread,
	const ImageInfo& info)
	:
	DebugEvent(B_DEBUGGER_MESSAGE_IMAGE_CREATED, team, thread),
	fInfo(info)
{
}


// #pragma mark - ImageDeletedEvent


ImageDeletedEvent::ImageDeletedEvent(team_id team, thread_id thread,
	const ImageInfo& info)
	:
	DebugEvent(B_DEBUGGER_MESSAGE_IMAGE_DELETED, team, thread),
	fInfo(info)
{
}


// #pragma mark - PostSyscallEvent


PostSyscallEvent::PostSyscallEvent(team_id team, thread_id thread,
	const SyscallInfo& info)
	:
	DebugEvent(B_DEBUGGER_MESSAGE_POST_SYSCALL, team, thread),
	fInfo(info)
{
}


// #pragma mark - HandedOverEvent


HandedOverEvent::HandedOverEvent(team_id team, thread_id thread,
	thread_id causingThread)
	:
	DebugEvent(B_DEBUGGER_MESSAGE_HANDED_OVER, team, thread),
	fCausingThread(causingThread)
{
}


// #pragma mark - SignalReceivedEvent


SignalReceivedEvent::SignalReceivedEvent(team_id team, thread_id thread,
	const SignalInfo& info)
	:
	DebugEvent(B_DEBUGGER_MESSAGE_SIGNAL_RECEIVED, team, thread),
	fInfo(info)
{
}