1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* 3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Copyright (C) Texas Instruments - http://www.ti.com/ 4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is free software; you can redistribute it and/or 6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * modify it under the terms of the GNU Lesser General Public 7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License as published by the Free Software Foundation; either 8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * version 2.1 of the License, or (at your option) any later version. 9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is distributed in the hope that it will be useful, 12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * but WITHOUT ANY WARRANTY; without even the implied warranty of 13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Lesser General Public License for more details. 15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * You should have received a copy of the GNU Lesser General Public 18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License along with this library; if not, write to the Free Software 19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef __PERF_RT_H 23fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define __PERF_RT_H 24fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 25fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ============================================================================ 26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin DEBUG STRUCTURES 27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin============================================================================ */ 28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct PERF_RTdata_uptime 29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* data needed for uptime calculations */ 31fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin double start_uptime; 32fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin double start_idletime; 33fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin double last_uptime; 34fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin double last_idletime; 35fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int measuring; 36fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int success; 37fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 38fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* statistics */ 39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin long n; 40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin double x, xx; 41fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 42fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* real-time data */ 43fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_STRUCT last_reporting; 44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} PERF_RTdata_uptime; 45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct PERF_RTdata_rate 47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* rate parameters */ 49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_MODULETYPE modulesAndFlags; 50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long size; 51fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 52fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* data needed for frame rate calculations */ 53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_STRUCT last_timestamp; 54fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int skip; 55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* statistics: 57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin n, x, xx: whole lifecycle 58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin tn, tx, txx: temporal statistics (for grandularity) 59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin tn0: tn in the last temporal statistics phase (since the last executing phase) 60fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if frame rate is less than 0.5fps and tn0 is less than 10 in the last phase, 61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin we ignore and do not print the frames unless debug & 4 is set. 62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin an, ax, axx: average temporal statistics - yields stdev */ 63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin long n, tn, tn0, an; 64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long x, tx; 65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin double xx, txx, ax, axx; 66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* real-time data */ 68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_STRUCT last_reporting; 69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} PERF_RTdata_rate; 70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct PERF_RTdata_delay 72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* delay parameters */ 74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* NONE for now */ 75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* data needed for delay calculations */ 77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_STRUCT last_timestamp; 78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 79fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* statistics: this is real-time in nature, so no "buffering" is performed. 80fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin therefore, no need for temporal statistics 81fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 82fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin long n; 83fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long x; 84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin double xx; 85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} PERF_RTdata_delay; 86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct PERF_RTdata_sts 88fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 89fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int capturing; 90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long size_min, size_max; 91fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 92fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long last_burst; /* last burst so we don't count the 93fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin last delay of each raw burst into 94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the modified number */ 95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_RTdata_delay dSingle; /* single shot-to-shot */ 97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_RTdata_delay dBurst, dABurst; /* raw burst, average of all bursts */ 98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_RTdata_delay dBurst2, dABurst2; /* modified burst, average */ 99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} PERF_RTdata_sts; 100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct PERF_RT_Private 102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* configuration */ 104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FILE *fRt; /* file to real-time output (Buffer) */ 105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin long granularity; 106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int summary; 107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int detailed; 108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int debug; /* bit: 1 & any - print temporal stats 109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2 - print difference between temporal average and true average 110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 4 - use all frames for rates, not just after 10 frames 111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* state data for reporting */ 114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_STRUCT first_time; 115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* uptime data */ 117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin struct PERF_RTdata_uptime *dUptime; /* uptime data */ 118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* rate data */ 120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int steadyState; /* are we in steady state? */ 121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int needSteadyState; /* do we need steady state? */ 122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin struct PERF_RTdata_rate *dRate; /* rate data */ 123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int nDRate; /* number of dRate structures */ 124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int maxDRate; /* maximum number of dRates */ 125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int encoder; /* encoder, sending arbitrary sizes */ 126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int decoder; /* decoder, receiving arbitrary sizes */ 127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long only_moduleandflags; /* the module and flags we care about - if detailed is 0 */ 128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* shot-to-shot data */ 130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin struct PERF_RTdata_sts *dSTS; /* single-shot and burst modes */ 131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} PERF_RT_Private; 133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid 135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinPERF_RT_done(PERF_Private *perf); 136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinPERF_RT_Private * 138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinPERF_RT_create(PERF_Private *perf, PERF_Config *config, PERF_MODULETYPE eModule); 139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid 141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin__rt_Boundary(PERF_Private *perf,PERF_BOUNDARYTYPE eBoundary); 142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid 144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin__rt_Buffer(PERF_Private *perf,unsigned long ulAddress1, 145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long ulAddress2, 146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long ulSize, 147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_MODULETYPE eModule); 148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid 150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin__rt_Command(PERF_Private *perf, 151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long ulCommand, 152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long ulArgument, 153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_MODULETYPE eModule); 154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid 156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin__rt_Create(PERF_Private *perf); 157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid 159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin__rt_Done(PERF_Private *perf); 160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid 162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin__rt_Log(PERF_Private *perf, 163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long ulData1, unsigned long ulData2, 164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long ulData3); 165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid 167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin__rt_SyncAV(PERF_Private *perf, 168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin float pfTimeAudio, 169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin float pfTimeVideo, 170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SYNCOPTYPE eSyncOperation); 171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid 173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin__rt_ThreadCreated(PERF_Private *perf, 174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long ulThreadID, 175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long ulThreadName); 176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 179