mirror of
https://github.com/hardkernel/linux.git
synced 2026-04-14 17:40:41 +09:00
57 lines
1.4 KiB
C++
57 lines
1.4 KiB
C++
/**
|
|
* Copyright (C) ARM Limited 2013-2014. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef PERFDRIVER_H
|
|
#define PERFDRIVER_H
|
|
|
|
#include "Driver.h"
|
|
|
|
// If debugfs is not mounted at /sys/kernel/debug, update DEBUGFS_PATH
|
|
#define DEBUGFS_PATH "/sys/kernel/debug"
|
|
#define EVENTS_PATH DEBUGFS_PATH "/tracing/events"
|
|
|
|
#define SCHED_SWITCH "sched/sched_switch"
|
|
|
|
class Buffer;
|
|
class DynBuf;
|
|
class PerfCounter;
|
|
class PerfGroup;
|
|
|
|
class PerfDriver : public Driver {
|
|
public:
|
|
PerfDriver();
|
|
~PerfDriver();
|
|
|
|
bool setup();
|
|
bool summary(Buffer *const buffer);
|
|
bool isSetup() const { return mIsSetup; }
|
|
|
|
bool claimCounter(const Counter &counter) const;
|
|
void resetCounters();
|
|
void setupCounter(Counter &counter);
|
|
|
|
int writeCounters(mxml_node_t *root) const;
|
|
|
|
bool enable(PerfGroup *group, Buffer *const buffer) const;
|
|
|
|
static long long getTracepointId(const char *const name, DynBuf *const printb);
|
|
|
|
private:
|
|
PerfCounter *findCounter(const Counter &counter) const;
|
|
void addCpuCounters(const char *const counterName, const int type, const int numCounters);
|
|
|
|
PerfCounter *mCounters;
|
|
bool mIsSetup;
|
|
|
|
// Intentionally undefined
|
|
PerfDriver(const PerfDriver &);
|
|
PerfDriver &operator=(const PerfDriver &);
|
|
};
|
|
|
|
#endif // PERFDRIVER_H
|