1 /*******************************************************************************
2 * Copyright (c) 2015 École Polytechnique de Montréal
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *******************************************************************************/
10 package org
.eclipse
.tracecompass
.internal
.lttng2
.kernel
.core
.analysis
.graph
.handlers
;
12 import org
.eclipse
.tracecompass
.analysis
.os
.linux
.core
.model
.HostThread
;
13 import org
.eclipse
.tracecompass
.internal
.lttng2
.kernel
.core
.analysis
.graph
.building
.LttngKernelExecGraphProvider
;
14 import org
.eclipse
.tracecompass
.internal
.lttng2
.kernel
.core
.analysis
.graph
.building
.LttngKernelExecGraphProvider
.ProcessStatus
;
15 import org
.eclipse
.tracecompass
.internal
.lttng2
.kernel
.core
.analysis
.graph
.model
.EventField
;
16 import org
.eclipse
.tracecompass
.internal
.lttng2
.kernel
.core
.analysis
.graph
.model
.LttngSystemModel
;
17 import org
.eclipse
.tracecompass
.internal
.lttng2
.kernel
.core
.analysis
.graph
.model
.LttngWorker
;
18 import org
.eclipse
.tracecompass
.internal
.lttng2
.kernel
.core
.trace
.layout
.LttngEventLayout
;
19 import org
.eclipse
.tracecompass
.tmf
.core
.event
.ITmfEvent
;
22 * Handles the LTTng statedump events necessary for the initialization of the
25 * @author Francis Giraldeau
27 public class TraceEventHandlerStatedump
extends BaseHandler
{
33 * The parent graph provider
35 public TraceEventHandlerStatedump(LttngKernelExecGraphProvider provider
) {
40 public void handleEvent(ITmfEvent event
) {
41 LttngEventLayout eventLayout
= getProvider().getEventLayout();
42 LttngSystemModel system
= getProvider().getSystem();
43 String eventName
= event
.getName();
44 if (!eventName
.equals(eventLayout
.eventStatedumpProcessState())) {
48 Integer tid
= EventField
.getInt(event
, eventLayout
.fieldTid());
49 String name
= EventField
.getOrDefault(event
, eventLayout
.fieldName(), Messages
.TraceEventHandlerSched_UnknownThreadName
);
50 Integer status
= EventField
.getInt(event
, eventLayout
.fieldStatus());
52 String host
= event
.getTrace().getHostId();
53 long ts
= event
.getTimestamp().getValue();
55 HostThread ht
= new HostThread(host
, tid
);
56 LttngWorker task
= system
.findWorker(ht
);
58 task
= new LttngWorker(ht
, name
, ts
);
59 system
.addWorker(task
);
64 task
.setStatus(ProcessStatus
.getStatus(status
));