waitObject
WaitObjectType* waitObject = group->WaitObjectAt(i);
if (!objectNodes.AddItem(new ObjectNode(waitObject)))
if (threadState->waitObject != NULL) {
threadState->waitObject->Type(),
threadState->waitObject->Object());
Model::ThreadWaitObjectGroup* waitObject)
addr_t waitObject = event->previous_thread_wait_object;
waitObject = 0;
event->previous_thread_wait_object_type, waitObject));
&& lastEvent.waitObject == waitObject) {
if (thread->waitObject != NULL) {
thread->waitObject->AddWait(diffTime);
thread->waitObject = NULL;
lastEvent = SchedulingEvent(time, state, waitObject);
SchedulingEvent event(time, state, waitObject);
Model::ThreadWaitObjectGroup* waitObject)
AddState(thread, time, WAITING, waitObject);
Model::ThreadWaitObjectGroup* waitObject;
Model::ThreadWaitObjectGroup* waitObject)
waitObject(waitObject),
threadWaitObject = events[lower].waitObject;
Model::WaitObjectGroup::WaitObjectGroup(WaitObject* waitObject)
fWaitObjects.AddItem(waitObject);
WaitObject* waitObject = fWaitObjects.ItemAt(i);
fWaits += waitObject->Waits();
fTotalWaitTime += waitObject->TotalWaitTime();
Model::ThreadWaitObject::ThreadWaitObject(WaitObject* waitObject)
fWaitObject(waitObject),
Model::Thread::AddThreadWaitObject(WaitObject* waitObject,
= new(std::nothrow) ThreadWaitObject(waitObject);
= ThreadWaitObjectGroupFor(waitObject->Type(), waitObject->Object());
WaitObject* waitObject = new(std::nothrow) WaitObject(event);
if (waitObject == NULL)
= WaitObjectGroupFor(waitObject->Type(), waitObject->Object());
waitObjectGroup = new(std::nothrow) WaitObjectGroup(waitObject);
delete waitObject;
waitObjectGroup->AddWaitObject(waitObject);
return waitObject;
Model::AddThreadWaitObject(thread_id threadID, WaitObject* waitObject,
return thread->AddThreadWaitObject(waitObject, _threadWaitObjectGroup);
Model::WaitObjectGroup::AddWaitObject(WaitObject* waitObject)
fWaitObjects.AddItem(waitObject);
WaitObject* waitObject,
waitObject = other.waitObject;
waitObject = NULL;
WaitObjectGroup(WaitObject* waitObject);
inline void AddWaitObject(WaitObject* waitObject);
ThreadWaitObject(WaitObject* waitObject);
ThreadWaitObject* AddThreadWaitObject(WaitObject* waitObject,
ThreadWaitObject* waitObject;
waitObject = 0;
event->previous_thread_wait_object_type, waitObject);
if (thread->waitObject != NULL) {
thread->waitObject->AddWait(diffTime);
thread->waitObject = NULL;
Model::WaitObject* waitObject = waitObjectGroup->MostRecentWaitObject();
|| threadWaitObjectGroup->MostRecentWaitObject() != waitObject) {
= fModel->AddThreadWaitObject(thread->ID(), waitObject,
thread->waitObject = threadWaitObjectGroup->MostRecentThreadWaitObject();
addr_t waitObject = event->previous_thread_wait_object;
sprintf(buffer, "mutex \"%s\"", waitObject->name);
sprintf(buffer, "mutex %p (%s)", object, waitObject->name);
sprintf(buffer, "rwlock \"%s\"", waitObject->name);
sprintf(buffer, "rwlock %p (%s)", object, waitObject->name);
sprintf(buffer, "other %p (%s)", object, waitObject->name);
scheduling_analysis_wait_object* waitObject
if (groupCount == 0 || strcmp(waitObject->name, "?") == 0
|| waitObject->type != group->objects[0]->wait_object->type
|| strcmp(waitObject->name,
scheduling_analysis_wait_object* waitObject
wait_object_to_string(waitObject, buffer);
scheduling_analysis_wait_object* waitObject
wait_object_to_string(waitObject, buffer);
wait_object_to_string(scheduling_analysis_wait_object* waitObject, char* buffer,
uint32 type = waitObject->type;
void* object = waitObject->object;
sprintf(buffer, "sem \"%s\"", waitObject->name);
waitObject->name);
sprintf(buffer, "cvar \"%s\"", waitObject->name);
sprintf(buffer, "cvar %p (%s %p)", object, waitObject->name,
waitObject->referenced_object);
WaitObject* waitObject = fWaitObjectTable.Lookup(key);
if (waitObject != NULL) {
fWaitObjectTable.RemoveUnchecked(waitObject);
fUsedWaitObjects.Remove(waitObject);
fFreeWaitObjects.Add(waitObject, false);
WaitObject* waitObject = fWaitObjectTable.Lookup(key);
if (waitObject != NULL) {
fUsedWaitObjects.Remove(waitObject);
fUsedWaitObjects.Add(waitObject);
waitObject = fFreeWaitObjects.RemoveHead();
if (waitObject == NULL) {
waitObject = fUsedWaitObjects.RemoveHead();
fWaitObjectTable.RemoveUnchecked(waitObject);
waitObject->object = object;
waitObject->type = type;
fWaitObjectTable.InsertUnchecked(waitObject);
fUsedWaitObjects.Add(waitObject);
ThreadWaitObject(thread_id thread, WaitObject* waitObject)
wait_object = waitObject;
WaitObject* waitObject = new(memory) WaitObject(type, object);
Insert(waitObject);
strcpy(waitObject->name, "?");
*_waitObject = waitObject;
WaitObject* waitObject = WaitObjectFor(type, object);
if (waitObject == NULL)
if (waitObject->name[0] != '\0') {
Remove(waitObject);
status_t error = AddWaitObject(type, object, &waitObject);
strlcpy(waitObject->name, name, sizeof(waitObject->name));
waitObject->referenced_object = referencedObject;
WaitObject* waitObject = WaitObjectFor(type, object);
if (waitObject == NULL || waitObject->name[0] != '\0')
strlcpy(waitObject->name, name, sizeof(waitObject->name));
waitObject->referenced_object = referencedObject;
WaitObject* waitObject = WaitObjectFor(type, object);
if (waitObject == NULL) {
|| threadWaitObject->wait_object != waitObject) {
waitObject);
thread->waitObject = threadWaitObject;
WaitObject* waitObject = dynamic_cast<WaitObject*>(object);
if (waitObject != NULL && waitObject->name[0] == '\0')
} else if (WaitObject* waitObject
_PolishWaitObject(waitObject);
void _PolishWaitObject(WaitObject* waitObject)
if (waitObject->name[0] != '\0')
switch (waitObject->type) {
if (get_sem_info((sem_id)(addr_t)waitObject->object, &info)
strlcpy(waitObject->name, info.name,
sizeof(waitObject->name));
= (ConditionVariable*)waitObject->object;
waitObject->referenced_object = (void*)variable->Object();
strlcpy(waitObject->name, variable->ObjectType(),
sizeof(waitObject->name));
mutex* lock = (mutex*)waitObject->object;
strlcpy(waitObject->name, lock->name, sizeof(waitObject->name));
rw_lock* lock = (rw_lock*)waitObject->object;
strlcpy(waitObject->name, lock->name, sizeof(waitObject->name));
const char* name = (const char*)waitObject->object;
strlcpy(waitObject->name, name, sizeof(waitObject->name));
if (waitObject->name[0] != '\0')
strcpy(waitObject->name, "?");
void* waitObject = (void*)entry->PreviousWaitObject();
waitObject = NULL;
waitObject);
ThreadWaitObject* waitObject;
void* waitObject = (void*)entry->PreviousWaitObject();
waitObject = NULL;
entry->PreviousWaitObjectType(), waitObject);
if (thread->waitObject != NULL) {
thread->waitObject->wait_time += diffTime;
thread->waitObject->waits++;
thread->waitObject = NULL;