1 /*******************************************************************************
2 * Copyright (c) 2009 Ericsson
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
10 * Yann N. Dauphin (dhaemon@gmail.com) - Implementation for stats
11 * Alvaro Sanchez-Leon (alvsan09@gmail.com) - Initial API and implementation
12 *******************************************************************************/
14 package org
.eclipse
.linuxtools
.lttng
.ui
.views
.statistics
.evProcessor
;
16 import java
.util
.HashMap
;
19 import org
.eclipse
.linuxtools
.lttng
.core
.state
.StateStrings
;
20 import org
.eclipse
.linuxtools
.lttng
.core
.state
.evProcessor
.AbsEventToHandlerResolver
;
21 import org
.eclipse
.linuxtools
.lttng
.core
.state
.evProcessor
.ILttngEventProcessor
;
24 * Provide the handlers that will count the CPU Time, Cumulative CPU Time and
25 * Elapsed Time and update the appropriate tree.
27 * Builds a Map from string event name to a processing handler object, the
28 * processors implement the same interface to facilitate transparent methods
31 * The map key STring is the entry point of the raw events, using a hash speeds
32 * up the resolution of the appropriate processor
37 public class StatsTimeCountHandlerFactory
extends AbsEventToHandlerResolver
{
39 // -----------------------------------------------------------------------
41 // -----------------------------------------------------------------------
43 private final Map
<String
, ILttngEventProcessor
> eventNametoBeforeProcessor
= new HashMap
<String
, ILttngEventProcessor
>();
44 ILttngEventProcessor afterhandler
;
45 private static StatsTimeCountHandlerFactory instance
= null;
46 private StatsTimeCountHandlers instantiateHandler
= new StatsTimeCountHandlers();
48 // -----------------------------------------------------------------------
50 // -----------------------------------------------------------------------
52 private StatsTimeCountHandlerFactory() {
54 //create one instance of each individual event handler and add the instance to the map
55 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_SYSCALL_ENTRY
56 .getInName(), instantiateHandler
.getSyscallEntryBeforeHandler());
58 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_SYSCALL_EXIT
59 .getInName(), instantiateHandler
.getsySyscallExitBeforeHandler());
61 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_TRAP_ENTRY
62 .getInName(), instantiateHandler
.getTrapEntryBeforeHandler());
64 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_TRAP_EXIT
65 .getInName(), instantiateHandler
.getTrapExitBeforeHandler());
67 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_PAGE_FAULT_ENTRY
68 .getInName(), instantiateHandler
.getTrapEntryBeforeHandler());
70 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_PAGE_FAULT_EXIT
71 .getInName(), instantiateHandler
.getTrapExitBeforeHandler());
73 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY
74 .getInName(), instantiateHandler
.getTrapEntryBeforeHandler());
76 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_PAGE_FAULT_NOSEM_EXIT
77 .getInName(), instantiateHandler
.getTrapExitBeforeHandler());
79 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_IRQ_ENTRY
80 .getInName(), instantiateHandler
.getIrqEntryBeforeHandler());
82 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_IRQ_EXIT
83 .getInName(), instantiateHandler
.getIrqExitBeforeHandler());
85 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_SOFT_IRQ_ENTRY
86 .getInName(), instantiateHandler
.getSoftIrqEntryBeforeHandler());
88 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_SOFT_IRQ_EXIT
89 .getInName(), instantiateHandler
.getSoftIrqExitBeforeHandler());
91 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_FUNCTION_ENTRY
92 .getInName(), instantiateHandler
.getFunctionEntryBeforeHandler());
94 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_FUNCTION_EXIT
95 .getInName(), instantiateHandler
.getFunctionExitBeforeHandler());
97 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_SCHED_SCHEDULE
98 .getInName(), instantiateHandler
.getSchedChangeBeforeHandler());
100 eventNametoBeforeProcessor
.put(StateStrings
.Events
.LTT_EVENT_PROCESS_EXIT
101 .getInName(), instantiateHandler
.getProcessExitHandler());
103 afterhandler
= instantiateHandler
.getAfterHandler();
107 // -----------------------------------------------------------------------
109 // -----------------------------------------------------------------------
111 * The event processors are common to all traces an multiple instances will
112 * use more memory unnecessarily
116 public static AbsEventToHandlerResolver
getInstance() {
117 if (instance
== null) {
118 instance
= new StatsTimeCountHandlerFactory();
125 public ILttngEventProcessor
getAfterProcessor(String eventType
) {
130 public ILttngEventProcessor
getBeforeProcessor(String eventType
) {
131 return eventNametoBeforeProcessor
.get(eventType
);
135 public ILttngEventProcessor
getfinishProcessor() {
136 return instantiateHandler
.getTracesetEndHandler();
140 public ILttngEventProcessor
getStateUpdaterProcessor(String eventType
) {