/*******************************************************************************
* Copyright (c) 2004,2008 Red Hat, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Keith Seitz <keiths@redhat.com> - initial API and implementation
* Kent Sebastian <ksebasti@redhat.com>
*******************************************************************************/
package org.eclipse.linuxtools.internal.oprofile.core.daemon;
import org.eclipse.linuxtools.internal.oprofile.core.Oprofile;
/**
* This class represents an event used to configure the OProfile
* daemon.
*/
public class OprofileDaemonEvent {
public static final int COUNT_UNINITIALIZED = 0;
public static final int COUNT_INVALID = -1;
/**
* The event to collect on this counter
*/
private OpEvent event;
/**
* Boolean variable to enable/disable Profile kernel
*/
private boolean profileKernel;
/**
* Boolean variable to enable/disable Profile userspace
*/
private boolean profileUser;
/**
* Reset counter value
*/
private int count;
public OprofileDaemonEvent() {
profileKernel = true;
profileUser = true;
count = COUNT_UNINITIALIZED;
event = null;
}
/**
* Set the event to collect
* @param event the OProfile event
*/
public void setEvent(OpEvent event) {
this.event = event;
}
/**
* Get the event to collect
* @returns the OProfile event
*/
public OpEvent getEvent() {
return event;
}
/**
* Set whether to profile the kernel
* @param profileKernel whether to enable kernel profiling
*/
public void setProfileKernel(boolean profileKernel) {
this.profileKernel = profileKernel;
}
/**
* Get whether to profile the kernel
* @return whether to profile the kernel
*/
public boolean getProfileKernel() {
return profileKernel;
}
/**
* Set whether to profile userspace
* @param profileUser whether to profile userspace
*/
public void setProfileUser(boolean profileUser) {
this.profileUser = profileUser;
}
/**
* Get whether to profile userspace
* @return whether to profile userspace
*/
public boolean getProfileUser() {
return profileUser;
}
/**
* Set the reset count
* @param count the new count
*/
public void setResetCount(int count) {
this.count = count;
}
/**
* Get the reset count
* @return the reset count
*/
public int getResetCount() {
// FIXME: This isn't quite in the right place...
if (count == COUNT_UNINITIALIZED) {
// This is what Oprofile does in oprof_start.cpp:
double speed = Oprofile.getCpuFrequency();
if (speed == 0.0) {
count = event.getMinCount() * 30;
} else {
count = (int) speed * 20;
}
}
return count;
}
}