You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.7 KiB
49 lines
1.7 KiB
#ifndef APM_PerfMon_h |
|
#define APM_PerfMon_h |
|
|
|
// macros to make integrating into code easier |
|
#define APM_PERFMON_REGISTER static int myFunc = APM_PerfMon::recordFunctionName(__func__); APM_PerfMon perfMon(myFunc); |
|
#define APM_PERFMON_REGISTER_NAME(functionName) static int myFunc = APM_PerfMon::recordFunctionName(functionName); APM_PerfMon perfMon(myFunc); |
|
|
|
#define PERFMON_MAX_FUNCTIONS 50 |
|
#define PERFMON_FUNCTION_NAME_LENGTH 20 |
|
|
|
__extension__ typedef int __guard __attribute__((mode (__DI__))); |
|
|
|
extern "C" int __cxa_guard_acquire(__guard *); |
|
extern "C" void __cxa_guard_release (__guard *); |
|
extern "C" void __cxa_guard_abort (__guard *); |
|
|
|
#include "HardwareSerial.h" |
|
|
|
class APM_PerfMon |
|
{ |
|
public: |
|
// static variables |
|
static int nextFuncNum; |
|
static char functionNames[PERFMON_MAX_FUNCTIONS][PERFMON_FUNCTION_NAME_LENGTH]; |
|
static unsigned long time[PERFMON_MAX_FUNCTIONS]; |
|
static unsigned long numCalls[PERFMON_MAX_FUNCTIONS]; |
|
static unsigned long allStartTime; |
|
static unsigned long allEndTime; |
|
static APM_PerfMon* lastCreated; |
|
|
|
// static methods |
|
static int recordFunctionName(const char funcName[]); |
|
static void DisplayResults(HardwareSerial* aSerial); |
|
static void ClearAll(); |
|
static int strLen(char* str); |
|
|
|
// normal variables |
|
int _funcNum; |
|
unsigned long _startTime; |
|
APM_PerfMon* _parent; |
|
|
|
// normal methods |
|
APM_PerfMon(int funcNum); // Constructor - records function start time |
|
~APM_PerfMon(); // Destructor - records function end time |
|
void stop(); // stops recording time spent in this function - meant to be called by a child. |
|
void start(); // restarts recording time spent in this function |
|
}; |
|
|
|
#endif // APM_PerfMon_h
|