Import PSI KPI profiler code
[gstreamer-omap:libdce.git] / ducati / ti / dce / baseimage / profile.h
1 /* ====================================================================
2  *   Copyright (C) 2010 Texas Instruments Incorporated
3  *
4  *   All rights reserved. Property of Texas Instruments Incorporated.
5  *   Restricted rights to use, duplicate or disclose this code are
6  *   granted through contract.
7  *
8  *   The program may not be used without the written permission
9  *   of Texas Instruments Incorporated or against the terms and conditions
10  *   stipulated in the agreement under which this program has been
11  *   supplied.
12  * ==================================================================== */
13 /*
14 *   @file  profile.h
15 *   This file contains the function prototypes of the instrumentation
16 *   and the flags for defining the functionality
17 *
18 *   @path \WTSD_DucatiMMSW\platform\utils\
19 *
20 *  @rev 1.0
21 */
22 #ifndef _PROFILE_H
23 #define _PROFILE_H
24
25 #ifdef BUILD_PSI_KPI
26
27 #define PSI_KPI                 /* add the instrumentation (cpu load and allowing tracing) */
28
29 #endif /*BUILD_PSI_KPI*/
30
31
32 #include "omx_types.h"
33 #include "omx_core.h"
34 #include "omx_component.h"
35
36 #define IVA_DETAILS             /* for tracing IVA events */
37 #define OMX_DETAILS             /* for tracing OMX events */
38 #define PHYSICAL_BUFFER         /* print physical buffer address for OMX events */
39 #define CPU_LOAD_DETAILS        /* for tracing CPU IDLE % each frame */
40 //#define CINIT_ENABLE_DUCATI_LOAD  /* measure starts when codec is created */
41 #define OMX_ENABLE_DUCATI_LOAD  /* measure starts when OMX component is created */
42
43 #define USE_CTM_TIMER           /* CTM vs 32K for measuring CPU load */
44 #define INST_COST               /* measure the instrumentation cost during the test */
45 //#define COST_AFTER            /* allows estimating the instrumentation cost after completion */
46
47 /* Instrumentation Flags control */
48 typedef enum {
49     KPI_END_SUMMARY = (1 << 0),  /* print IVA and Ducati/Benelli summary at end of use case */
50     KPI_IVA_DETAILS = (1 << 1),  /* print IVA trace during the use case */
51     KPI_OMX_DETAILS = (1 << 2),  /* print OMX trace during the use case */
52     KPI_CPU_DETAILS = (1 << 3)   /* print Idle trace during the use case */
53 } KPI_inst_type;
54
55 /* Instrumentation internal Status */
56 typedef enum {
57     KPI_INST_RUN  = (1 << 0),    /* instrumentation running */
58     KPI_CPU_LOAD  = (1 << 1),    /* ducati/benelly load on */
59     KPI_IVA_LOAD  = (1 << 2),    /* IVA load on */
60     KPI_IVA_TRACE = (1 << 3),    /* IVA trace is active */
61     KPI_OMX_TRACE = (1 << 4),    /* OMX trace is active */
62     KPI_CPU_TRACE = (1 << 5),    /* CPU trace is active */
63     KPI_IVA_USED  = (1 << 6)     /* IVA used in the test */
64 } KPI_inst_status;
65
66 /* function protypes */
67 extern void kpi_instInit        (void);
68 extern void kpi_instDeinit      (void);
69 extern void kpi_before_codec    (void);
70 extern void kpi_after_codec     (void);
71
72 extern void kpi_omx_comp_init   (OMX_HANDLETYPE hComponent);
73 extern void kpi_omx_comp_deinit (OMX_HANDLETYPE hComponent);
74 extern void kpi_omx_comp_FTB    (OMX_HANDLETYPE hComponent, OMX_BUFFERHEADERTYPE *pBuffer);
75 extern void kpi_omx_comp_ETB    (OMX_HANDLETYPE hComponent, OMX_BUFFERHEADERTYPE *pBuffer);
76 extern void kpi_omx_comp_FBD    (OMX_HANDLETYPE hComponent, OMX_BUFFERHEADERTYPE *pBuffer);
77 extern void kpi_omx_comp_EBD    (OMX_HANDLETYPE hComponent, OMX_BUFFERHEADERTYPE *pBuffer);
78
79 /* use disableCoreInts in SMP: faster and appropriate for us, otherwise is disable (non SMP) */
80 #ifndef BUILD_FOR_SMP
81 #define  Hwi_disableCoreInts(   ) Hwi_disable(   )
82 #define  Hwi_restoreCoreInts( x ) Hwi_restore( x )
83 #endif//BUILD_FOR_SMP
84
85 #endif /*_PROFILE_H*/
86