mirror of
https://github.com/hardkernel/linux.git
synced 2026-04-14 09:30:40 +09:00
49 lines
1.1 KiB
C++
49 lines
1.1 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 DRIVER_H
|
|
#define DRIVER_H
|
|
|
|
#include "mxml/mxml.h"
|
|
|
|
class Counter;
|
|
|
|
class Driver {
|
|
public:
|
|
static Driver *getHead() { return head; }
|
|
|
|
virtual ~Driver() {}
|
|
|
|
// Returns true if this driver can manage the counter
|
|
virtual bool claimCounter(const Counter &counter) const = 0;
|
|
// Clears and disables all counters
|
|
virtual void resetCounters() = 0;
|
|
// Enables and prepares the counter for capture
|
|
virtual void setupCounter(Counter &counter) = 0;
|
|
|
|
// Emits available counters
|
|
virtual int writeCounters(mxml_node_t *root) const = 0;
|
|
// Emits possible dynamically generated events/counters
|
|
virtual void writeEvents(mxml_node_t *) const {}
|
|
|
|
Driver *getNext() const { return next; }
|
|
|
|
protected:
|
|
Driver ();
|
|
|
|
private:
|
|
static Driver *head;
|
|
Driver *next;
|
|
|
|
// Intentionally unimplemented
|
|
Driver(const Driver &);
|
|
Driver &operator=(const Driver &);
|
|
};
|
|
|
|
#endif // DRIVER_H
|