xref: /haiku/src/apps/debuganalyzer/gui/thread_window/GeneralPage.cpp (revision b6b0567fbd186f8ce8a0c90bdc7a7b5b4c649678)
1 /*
2  * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Distributed under the terms of the MIT License.
4  */
5 
6 #include "thread_window/GeneralPage.h"
7 
8 #include <stdio.h>
9 
10 
11 ThreadWindow::GeneralPage::GeneralPage()
12 	:
13 	AbstractGeneralPage(),
14 	fModel(NULL),
15 	fThread(NULL),
16 	fThreadNameView(NULL),
17 	fThreadIDView(NULL),
18 	fTeamView(NULL),
19 	fRunTimeView(NULL),
20 	fWaitTimeView(NULL),
21 	fLatencyView(NULL),
22 	fPreemptionView(NULL),
23 	fUnspecifiedTimeView(NULL)
24 {
25 	fThreadNameView = AddDataView("Name:");
26 	fThreadIDView = AddDataView("ID:");
27 	fTeamView = AddDataView("Team:");
28 	fRunTimeView = AddDataView("Run Time:");
29 	fWaitTimeView = AddDataView("Wait Time:");
30 	fLatencyView = AddDataView("Latencies:");
31 	fPreemptionView = AddDataView("Preemptions:");
32 	fUnspecifiedTimeView = AddDataView("Unspecified Time:");
33 }
34 
35 
36 ThreadWindow::GeneralPage::~GeneralPage()
37 {
38 }
39 
40 
41 void
42 ThreadWindow::GeneralPage::SetModel(Model* model, Model::Thread* thread)
43 {
44 	if (model == fModel && thread == fThread)
45 		return;
46 
47 	fModel = model;
48 	fThread = thread;
49 
50 	if (fThread != NULL) {
51 		// name
52 		fThreadNameView->SetText(fThread->Name());
53 
54 		// ID
55 		char buffer[128];
56 		snprintf(buffer, sizeof(buffer), "%ld", fThread->ID());
57 		fThreadIDView->SetText(buffer);
58 
59 		// team
60 		fTeamView->SetText(thread->GetTeam()->Name());
61 
62 		// run time
63 		snprintf(buffer, sizeof(buffer), "%lld μs (%lld)",
64 			fThread->TotalRunTime(), fThread->Runs());
65 		fRunTimeView->SetText(buffer);
66 
67 		// wait time
68 		snprintf(buffer, sizeof(buffer), "%lld μs (%lld)",
69 			fThread->TotalWaitTime(), fThread->Waits());
70 		fWaitTimeView->SetText(buffer);
71 
72 		// latencies
73 		snprintf(buffer, sizeof(buffer), "%lld μs (%lld)",
74 			fThread->TotalLatency(), fThread->Latencies());
75 		fLatencyView->SetText(buffer);
76 
77 		// preemptions
78 		snprintf(buffer, sizeof(buffer), "%lld μs (%lld)",
79 			fThread->TotalRerunTime(), fThread->Preemptions());
80 		fPreemptionView->SetText(buffer);
81 
82 		// unspecified time
83 		snprintf(buffer, sizeof(buffer), "%lld μs",
84 			fThread->UnspecifiedWaitTime());
85 		fUnspecifiedTimeView->SetText(buffer);
86 	} else {
87 		fThreadNameView->SetText("");
88 		fThreadIDView->SetText("");
89 		fTeamView->SetText("");
90 		fRunTimeView->SetText("");
91 		fWaitTimeView->SetText("");
92 		fLatencyView->SetText("");
93 		fPreemptionView->SetText("");
94 		fUnspecifiedTimeView->SetText("");
95 	}
96 }
97