| /** |
| * Copyright (C) ARM Limited 2013. 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 void writeCounters(mxml_node_t *root) const = 0; |
| // Emits possible dynamically generated events/counters |
| virtual void writeEvents(mxml_node_t *root) const {} |
| |
| Driver *getNext() const { return next; } |
| |
| protected: |
| Driver (); |
| |
| private: |
| static Driver *head; |
| Driver *next; |
| }; |
| |
| #endif // DRIVER_H |