diff options
author | Roland Grunberg | 2013-11-25 19:39:54 +0000 |
---|---|---|
committer | Roland Grunberg | 2013-12-12 19:42:51 +0000 |
commit | 3f0dc0a9245758cb4c6f45d63472d7696cf45cf4 (patch) | |
tree | 1a32a063b077c68cb49387ee8819546bec7b0bfa /oprofile | |
parent | 726106ba623520859ddd1ab7713c1ef00688b718 (diff) | |
download | org.eclipse.linuxtools-3f0dc0a9245758cb4c6f45d63472d7696cf45cf4.tar.gz org.eclipse.linuxtools-3f0dc0a9245758cb4c6f45d63472d7696cf45cf4.tar.xz org.eclipse.linuxtools-3f0dc0a9245758cb4c6f45d63472d7696cf45cf4.zip |
Support the selection of multiple events when OPerf is in use.
Change-Id: Ica4eb797f799f0c65096cefe96baf0796b719ac7
Reviewed-on: https://git.eclipse.org/r/19135
Tested-by: Hudson CI
Reviewed-by: Roland Grunberg <rgrunber@redhat.com>
IP-Clean: Roland Grunberg <rgrunber@redhat.com>
Tested-by: Roland Grunberg <rgrunber@redhat.com>
Diffstat (limited to 'oprofile')
7 files changed, 137 insertions, 76 deletions
diff --git a/oprofile/org.eclipse.linuxtools.oprofile.launch.tests/src/org/eclipse/linuxtools/oprofile/launch/tests/TestLaunching.java b/oprofile/org.eclipse.linuxtools.oprofile.launch.tests/src/org/eclipse/linuxtools/oprofile/launch/tests/TestLaunching.java index dd285d7953..893ead25b2 100644 --- a/oprofile/org.eclipse.linuxtools.oprofile.launch.tests/src/org/eclipse/linuxtools/oprofile/launch/tests/TestLaunching.java +++ b/oprofile/org.eclipse.linuxtools.oprofile.launch.tests/src/org/eclipse/linuxtools/oprofile/launch/tests/TestLaunching.java @@ -92,7 +92,7 @@ public class TestLaunching extends AbstractTest { wc.setAttribute(OprofileLaunchPlugin.ATTR_USE_DEFAULT_EVENT, false); wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_ENABLED(0), true); wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_COUNT(0), 100000); - wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_EVENT(0), "FAKE_EVENT"); //$NON-NLS-1$ + wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_EVENT(0, 0), "FAKE_EVENT"); //$NON-NLS-1$ wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_PROFILE_KERNEL(0), true); wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_PROFILE_USER(0), true); wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_UNIT_MASK(0), 0); diff --git a/oprofile/org.eclipse.linuxtools.oprofile.launch.tests/src/org/eclipse/linuxtools/oprofile/launch/tests/TestManualLaunching.java b/oprofile/org.eclipse.linuxtools.oprofile.launch.tests/src/org/eclipse/linuxtools/oprofile/launch/tests/TestManualLaunching.java index a03802351a..e69b93a6fa 100644 --- a/oprofile/org.eclipse.linuxtools.oprofile.launch.tests/src/org/eclipse/linuxtools/oprofile/launch/tests/TestManualLaunching.java +++ b/oprofile/org.eclipse.linuxtools.oprofile.launch.tests/src/org/eclipse/linuxtools/oprofile/launch/tests/TestManualLaunching.java @@ -92,7 +92,7 @@ public class TestManualLaunching extends AbstractTest { wc.setAttribute(OprofileLaunchPlugin.ATTR_USE_DEFAULT_EVENT, false); wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_ENABLED(0), true); wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_COUNT(0), 100000); - wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_EVENT(0), "FAKE_EVENT"); //$NON-NLS-1$ + wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_EVENT(0, 0), "FAKE_EVENT"); //$NON-NLS-1$ wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_PROFILE_KERNEL(0), true); wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_PROFILE_USER(0), true); wc.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_UNIT_MASK(0), 0); diff --git a/oprofile/org.eclipse.linuxtools.oprofile.launch.tests/src/org/eclipse/linuxtools/oprofile/launch/tests/utils/OprofileTestingEventConfigTab.java b/oprofile/org.eclipse.linuxtools.oprofile.launch.tests/src/org/eclipse/linuxtools/oprofile/launch/tests/utils/OprofileTestingEventConfigTab.java index 38854e82c6..39044e51f0 100644 --- a/oprofile/org.eclipse.linuxtools.oprofile.launch.tests/src/org/eclipse/linuxtools/oprofile/launch/tests/utils/OprofileTestingEventConfigTab.java +++ b/oprofile/org.eclipse.linuxtools.oprofile.launch.tests/src/org/eclipse/linuxtools/oprofile/launch/tests/utils/OprofileTestingEventConfigTab.java @@ -61,9 +61,6 @@ public class OprofileTestingEventConfigTab extends AbstractEventConfigTab { protected OprofileCounter[] getOprofileCounters(ILaunchConfiguration config) { // setup and return mock counters OprofileCounter[] ctrs = new OprofileCounter[] { getOprofileCounter(1) }; - if (config != null) { - ctrs[0].loadConfiguration(config); - } return ctrs; } @@ -96,7 +93,7 @@ public class OprofileTestingEventConfigTab extends AbstractEventConfigTab { // mock counter OprofileCounter ctr = new OprofileCounter(i, events); ctr.setCount(1); - ctr.setEvent(event); + ctr.setEvents(new OpEvent [] {event}); return ctr; } diff --git a/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/OprofileLaunchPlugin.java b/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/OprofileLaunchPlugin.java index a704b13799..0e13fafaa5 100644 --- a/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/OprofileLaunchPlugin.java +++ b/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/OprofileLaunchPlugin.java @@ -52,11 +52,12 @@ public class OprofileLaunchPlugin extends AbstractUIPlugin { // Counter Attributes \\ private static final String ATTR_COUNTER(int nr) { return ID_LAUNCH_PROFILE + ".COUNTER_" + nr; } //$NON-NLS-1$ public static final String ATTR_COUNTER_ENABLED(int nr) { return ATTR_COUNTER(nr) + ".ENABLED"; } //$NON-NLS-1$ - public static final String ATTR_COUNTER_EVENT(int nr) { return ATTR_COUNTER(nr) + ".EVENT"; } //$NON-NLS-1$ + public static final String ATTR_COUNTER_EVENT(int nr, int ev) { return ATTR_COUNTER(nr) + ".EVENT " + ev; } //$NON-NLS-1$ public static final String ATTR_COUNTER_PROFILE_KERNEL(int nr) { return ATTR_COUNTER(nr) + ".PROFILE_KERNEL"; } //$NON-NLS-1$ public static final String ATTR_COUNTER_PROFILE_USER(int nr) { return ATTR_COUNTER(nr) + ".PROFILE_USER"; } //$NON-NLS-1$ public static final String ATTR_COUNTER_COUNT(int nr) { return ATTR_COUNTER(nr) + ".COUNT"; } //$NON-NLS-1$ public static final String ATTR_COUNTER_UNIT_MASK(int nr) { return ATTR_COUNTER(nr) + ".UNIT_MASK"; } //$NON-NLS-1$ + public static final String ATTR_NUMBER_OF_EVENTS(int nr) { return ATTR_COUNTER(nr) + ".EVENTS"; } //$NON-NLS-1$ public static final String ICON_PATH = "icons/"; //$NON-NLS-1$ diff --git a/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/configuration/AbstractEventConfigTab.java b/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/configuration/AbstractEventConfigTab.java index 1cedde2818..94711f1d33 100644 --- a/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/configuration/AbstractEventConfigTab.java +++ b/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/configuration/AbstractEventConfigTab.java @@ -30,6 +30,7 @@ import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; +import org.eclipse.linuxtools.internal.oprofile.core.Oprofile.OprofileProject; import org.eclipse.linuxtools.internal.oprofile.core.OprofileCorePlugin; import org.eclipse.linuxtools.internal.oprofile.core.daemon.OpEvent; import org.eclipse.linuxtools.internal.oprofile.core.daemon.OpUnitMask; @@ -229,7 +230,8 @@ AbstractLaunchConfigurationTab { counters[i].loadConfiguration(config); for (CounterSubTab counterSubTab : counterSubTabs){ - if(counterSubTab.enabledCheck.getSelection() && counterSubTab.eventList.getList().getSelectionIndex() == -1){ + int nr = counterSubTab.counter.getNumber(); + if(counterSubTab.enabledCheck.getSelection() && config.getAttribute(OprofileLaunchPlugin.ATTR_NUMBER_OF_EVENTS(nr), 0) == 0){ valid = false; } } @@ -237,22 +239,25 @@ AbstractLaunchConfigurationTab { if (counters[i].getEnabled()) { ++numEnabledEvents; - if (counters[i].getEvent() == null) { - valid = false; - break; - } + for (OpEvent event : counters[i].getEvents()) { + if (event == null) { + valid = false; + break; + } - // First check min count - int min = counters[i].getEvent().getMinCount(); - if (counters[i].getCount() < min) { - valid = false; - break; - } + // First check min count + int min = event.getMinCount(); + if (counters[i].getCount() < min) { + valid = false; + break; + } - // Next ask oprofile if it is valid - if (!checkEventSetupValidity(counters[i].getNumber(), counters[i].getEvent().getText(), counters[i].getEvent().getUnitMask().getMaskValue())) { - valid = false; - break; + // Next ask oprofile if it is valid + if (!checkEventSetupValidity( + counters[i].getNumber(), event.getText(), event.getUnitMask().getMaskValue())) { + valid = false; + break; + } } } } @@ -564,7 +569,13 @@ AbstractLaunchConfigurationTab { } }); - eventList = new ListViewer(parent, SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER); + int options = SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER; + if (OprofileProject.getProfilingBinary().equals(OprofileProject.OPERF_BINARY)) { + options |= SWT.MULTI; + } else { + options |= SWT.SINGLE; + } + eventList = new ListViewer(parent, options); eventList.getList().setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, true)); eventList.setLabelProvider(new ILabelProvider(){ @@ -712,18 +723,18 @@ AbstractLaunchConfigurationTab { boolean enabled = counter.getEnabled(); enabledCheck.setSelection(enabled); - if (counter.getEvent() == null) { + if (counter.getEvents().length == 0 || counter.getEvents()[0] == null) { // Default to first in list - counter.setEvent(counter.getValidEvents()[0]); + counter.setEvents(new OpEvent [] {counter.getValidEvents()[0]}); } //load default states profileKernelCheck.setSelection(counter.getProfileKernel()); profileUserCheck.setSelection(counter.getProfileUser()); countText.setText(Integer.toString(counter.getCount())); - eventDescText.setText(counter.getEvent().getTextDescription()); - unitMaskViewer.displayEvent(counter.getEvent()); - eventList.setSelection(new StructuredSelection(counter.getEvent())); + eventDescText.setText(counter.getEvents()[0].getTextDescription()); + unitMaskViewer.displayEvent(counter.getEvents()[0]); + eventList.setSelection(new StructuredSelection(counter.getEvents())); } /** @@ -768,21 +779,33 @@ AbstractLaunchConfigurationTab { * and updates the UnitMask and event description text box. */ private void handleEventListSelectionChange() { - int index = eventList.getList().getSelectionIndex(); - if (index != -1){ - OpEvent event = (OpEvent) eventList.getElementAt(index); - counter.setEvent(event); - eventDescText.setText(event.getTextDescription()); - unitMaskViewer.displayEvent(event); - - // Check the min count to update the error message (events can have + int [] indices = eventList.getList().getSelectionIndices(); + if (indices.length != 0) { + ArrayList<OpEvent> tmp = new ArrayList<OpEvent> (); + for (int index : indices) { + OpEvent event = (OpEvent) eventList.getElementAt(index); + tmp.add(event); + eventDescText.setText(event.getTextDescription()); + unitMaskViewer.displayEvent(event); + } + + // Check the min count to update the error message (events + // can have // different minimum reset counts) - int min = counter.getEvent().getMinCount(); - if ((counter.getCount() < min) && (!defaultEventCheck.getSelection())){ + int min = Integer.MIN_VALUE; + for (OpEvent ev : tmp) { + // We want the largest of the min values + if (ev.getMinCount() > min) { + min = ev.getMinCount(); + } + } + if ((counter.getCount() < min) + && (!defaultEventCheck.getSelection())) { setErrorMessage(getMinCountErrorMessage(min)); } + + counter.setEvents(tmp.toArray(new OpEvent[0])); } else { - counter.setEvent(null); eventDescText.setText(""); //$NON-NLS-1$ if(unitMaskViewer != null){ unitMaskViewer.displayEvent(null); @@ -821,7 +844,13 @@ AbstractLaunchConfigurationTab { counter.setCount(count); // Check minimum count - int min = counter.getEvent().getMinCount(); + int min = Integer.MIN_VALUE; + for (OpEvent event : counter.getEvents()) { + // We want the largest of the min values + if (event != null && event.getMinCount() > min) { + min = event.getMinCount(); + } + } if ((count < min) && (!defaultEventCheck.getSelection())) { errorMessage = getMinCountErrorMessage(min); } diff --git a/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/configuration/OprofileCounter.java b/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/configuration/OprofileCounter.java index a8d25fc99c..e941472333 100644 --- a/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/configuration/OprofileCounter.java +++ b/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/configuration/OprofileCounter.java @@ -13,6 +13,8 @@ package org.eclipse.linuxtools.internal.oprofile.launch.configuration; import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.List; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.ILaunchConfiguration; @@ -38,8 +40,8 @@ public class OprofileCounter { // Is this counter enabled? private boolean _enabled; - // The event to collect on this counter - private OprofileDaemonEvent daemonEvent; + // The event(s) to collect on this counter + private OprofileDaemonEvent[] daemonEvent; // List of valid events on this counter private OpEvent[] eventList = null; @@ -61,7 +63,7 @@ public class OprofileCounter { number = nr; _enabled = false; eventList = events; - daemonEvent = new OprofileDaemonEvent(); + daemonEvent = new OprofileDaemonEvent [] {new OprofileDaemonEvent()}; } /** @@ -93,8 +95,20 @@ public class OprofileCounter { * Method setEvent. * @param event the event for this counter */ - public void setEvent(OpEvent event) { - daemonEvent.setEvent(event); + public void setEvents(OpEvent [] events) { + OprofileDaemonEvent [] newDaemonEvent = new OprofileDaemonEvent[events.length]; + for (int i = 0; i < events.length; i++) { + if (i > daemonEvent.length - 1) { + OprofileDaemonEvent de = new OprofileDaemonEvent(); + de.setEvent(events[i]); + de.setResetCount(daemonEvent[0].getResetCount()); + newDaemonEvent[i] = de; + } else { + daemonEvent[i].setEvent(events[i]); + newDaemonEvent[i] = daemonEvent[i]; + } + } + daemonEvent = newDaemonEvent; } /** @@ -102,7 +116,9 @@ public class OprofileCounter { * @param profileKernel whether this counter should count kernel events */ public void setProfileKernel(boolean profileKernel) { - daemonEvent.setProfileKernel(profileKernel); + for (int i = 0; i < daemonEvent.length; i++) { + daemonEvent[i].setProfileKernel(profileKernel); + } } /** @@ -110,7 +126,9 @@ public class OprofileCounter { * @param profileUser whether this counter should count user events */ public void setProfileUser(boolean profileUser) { - daemonEvent.setProfileUser(profileUser); + for (int i = 0; i < daemonEvent.length; i++) { + daemonEvent[i].setProfileUser(profileUser); + } } /** @@ -118,7 +136,9 @@ public class OprofileCounter { * @param count the number of events between samples for this counter */ public void setCount(int count) { - daemonEvent.setResetCount(count); + for (int i = 0; i < daemonEvent.length; i++) { + daemonEvent[i].setResetCount(count); + } } /** @@ -128,13 +148,17 @@ public class OprofileCounter { */ public void saveConfiguration(ILaunchConfigurationWorkingCopy config) { config.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_ENABLED(number), _enabled); - if (daemonEvent.getEvent() != null) { - config.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_EVENT(number), daemonEvent.getEvent().getText()); - config.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_UNIT_MASK(number), daemonEvent.getEvent().getUnitMask().getMaskValue()); + config.setAttribute(OprofileLaunchPlugin.ATTR_NUMBER_OF_EVENTS(number), daemonEvent.length); + + for (int i = 0; i < daemonEvent.length; i++) { + if (daemonEvent[i].getEvent() != null) { + config.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_EVENT(number, i), daemonEvent[i].getEvent().getText()); + config.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_UNIT_MASK(number), daemonEvent[i].getEvent().getUnitMask().getMaskValue()); + } + config.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_PROFILE_KERNEL(number), daemonEvent[i].getProfileKernel()); + config.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_PROFILE_USER(number), daemonEvent[i].getProfileUser()); + config.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_COUNT(number), daemonEvent[i].getResetCount()); } - config.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_PROFILE_KERNEL(number), daemonEvent.getProfileKernel()); - config.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_PROFILE_USER(number), daemonEvent.getProfileUser()); - config.setAttribute(OprofileLaunchPlugin.ATTR_COUNTER_COUNT(number), daemonEvent.getResetCount()); } /** @@ -144,29 +168,33 @@ public class OprofileCounter { public void loadConfiguration(ILaunchConfiguration config) { try { _enabled = config.getAttribute(OprofileLaunchPlugin.ATTR_COUNTER_ENABLED(number), false); + int numEvents = config.getAttribute(OprofileLaunchPlugin.ATTR_NUMBER_OF_EVENTS(number), 1); + daemonEvent = new OprofileDaemonEvent[numEvents]; + + for (int i = 0; i < numEvents; i++) { + String str = config.getAttribute(OprofileLaunchPlugin.ATTR_COUNTER_EVENT(number, i), ""); //$NON-NLS-1$ + int maskValue = config.getAttribute(OprofileLaunchPlugin.ATTR_COUNTER_UNIT_MASK(number), OpUnitMask.SET_DEFAULT_MASK); - String str = config.getAttribute(OprofileLaunchPlugin.ATTR_COUNTER_EVENT(number), ""); //$NON-NLS-1$ - daemonEvent.setEvent(_eventFromString(str)); + daemonEvent[i] = new OprofileDaemonEvent(); + daemonEvent[i].setEvent(_eventFromString(str)); - if (daemonEvent.getEvent() == null) { - return; + if (daemonEvent[i].getEvent() == null) { + continue; + } + + daemonEvent[i].getEvent().getUnitMask().setMaskValue(maskValue); + daemonEvent[i].setProfileKernel(config.getAttribute(OprofileLaunchPlugin.ATTR_COUNTER_PROFILE_KERNEL(number), false)); + daemonEvent[i].setProfileUser(config.getAttribute(OprofileLaunchPlugin.ATTR_COUNTER_PROFILE_USER(number), false)); + + daemonEvent[i].setResetCount(config.getAttribute(OprofileLaunchPlugin.ATTR_COUNTER_COUNT(number), OprofileDaemonEvent.COUNT_UNINITIALIZED)); } - - - int maskValue = config.getAttribute(OprofileLaunchPlugin.ATTR_COUNTER_UNIT_MASK(number), OpUnitMask.SET_DEFAULT_MASK); - daemonEvent.getEvent().getUnitMask().setMaskValue(maskValue); - - daemonEvent.setProfileKernel(config.getAttribute(OprofileLaunchPlugin.ATTR_COUNTER_PROFILE_KERNEL(number), false)); - daemonEvent.setProfileUser(config.getAttribute(OprofileLaunchPlugin.ATTR_COUNTER_PROFILE_USER(number), false)); - - daemonEvent.setResetCount(config.getAttribute(OprofileLaunchPlugin.ATTR_COUNTER_COUNT(number), OprofileDaemonEvent.COUNT_UNINITIALIZED)); } catch (CoreException ce) { } } public OpUnitMask getUnitMask() { - OpEvent event = daemonEvent.getEvent(); + OpEvent event = daemonEvent[0].getEvent(); if (event != null) { return event.getUnitMask(); @@ -204,8 +232,12 @@ public class OprofileCounter { * Method getEvent. * @return the event for this counter */ - public OpEvent getEvent() { - return daemonEvent.getEvent(); + public OpEvent [] getEvents() { + List<OpEvent> res = new ArrayList<OpEvent> (); + for (OprofileDaemonEvent de : daemonEvent) { + res.add(de.getEvent()); + } + return res.toArray(new OpEvent[0]); } /** @@ -213,7 +245,7 @@ public class OprofileCounter { * @return whether this counter is counting kernel events */ public boolean getProfileKernel() { - return daemonEvent.getProfileKernel(); + return daemonEvent[0].getProfileKernel(); } /** @@ -221,7 +253,7 @@ public class OprofileCounter { * @return whether this counter is counting user events */ public boolean getProfileUser() { - return daemonEvent.getProfileUser(); + return daemonEvent[0].getProfileUser(); } /** @@ -229,7 +261,7 @@ public class OprofileCounter { * @return the number of events between samples for this counter */ public int getCount() { - return daemonEvent.getResetCount(); + return daemonEvent[0].getResetCount(); } /** @@ -245,7 +277,7 @@ public class OprofileCounter { * <B>Not</B> valid if this counter is not enabled! * @return the OprofileDaemonEvent */ - public OprofileDaemonEvent getDaemonEvent() { + public OprofileDaemonEvent [] getDaemonEvents() { return daemonEvent; } diff --git a/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/launching/AbstractOprofileLaunchConfigurationDelegate.java b/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/launching/AbstractOprofileLaunchConfigurationDelegate.java index 7a8478cfd7..5cb52d36cc 100644 --- a/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/launching/AbstractOprofileLaunchConfigurationDelegate.java +++ b/oprofile/org.eclipse.linuxtools.oprofile.launch/src/org/eclipse/linuxtools/internal/oprofile/launch/launching/AbstractOprofileLaunchConfigurationDelegate.java @@ -77,8 +77,10 @@ public abstract class AbstractOprofileLaunchConfigurationDelegate extends Profil OprofileCounter[] counters = oprofileCounters(config); for (int i = 0; i < counters.length; ++i) { - if (counters[i].getEnabled()) - events.add(counters[i].getDaemonEvent()); + if (counters[i].getEnabled()) { + OprofileDaemonEvent[] counterEvents = counters[i].getDaemonEvents(); + events.addAll(Arrays.asList(counterEvents)); + } } daemonEvents = new OprofileDaemonEvent[events.size()]; |