]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo_bsp/ps7_cortexa9_0/libsrc/standalone_v6_6/src/profile/profile.h
Update Zynq, MPSoc Cortex-A53 and MPSoc Cortex-R5 demo projects to build with the...
[freertos] / FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702 / RTOSDemo_bsp / ps7_cortexa9_0 / libsrc / standalone_v6_6 / src / profile / profile.h
1 /******************************************************************************
2 *
3 * Copyright (C) 2002 - 2014 Xilinx, Inc. All rights reserved.
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
6 * of this software and associated documentation files (the "Software"), to deal
7 * in the Software without restriction, including without limitation the rights
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 * copies of the Software, and to permit persons to whom the Software is
10 * furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
14 *
15 * Use of the Software is limited solely to applications:
16 * (a) running on a Xilinx device, or
17 * (b) that interact with a Xilinx device through a bus or interconnect.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * XILINX  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
24 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25 * SOFTWARE.
26 *
27 * Except as contained in this notice, the name of the Xilinx shall not be used
28 * in advertising or otherwise to promote the sale, use or other dealings in
29 * this Software without prior written authorization from Xilinx.
30 *
31 ******************************************************************************/
32
33 #ifndef PROFILE_H
34 #define PROFILE_H       1
35
36 #include <stdio.h>
37 #include "xil_types.h"
38 #include "profile_config.h"
39
40 #ifdef PROC_MICROBLAZE
41 #include "mblaze_nt_types.h"
42 #endif
43
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47
48 void _system_init( void ) ;
49 void _system_clean( void ) ;
50 void mcount(u32 frompc, u32 selfpc);
51 void profile_intr_handler( void ) ;
52 void _profile_init( void );
53
54
55
56 /****************************************************************************
57  * Profiling on hardware - Hash table maintained on hardware and data sent
58  * to xmd for gmon.out generation.
59  ****************************************************************************/
60 /*
61  * histogram counters are unsigned shorts (according to the kernel).
62  */
63 #define HISTCOUNTER     u16
64
65 struct tostruct {
66         u32  selfpc;
67         s32      count;
68         s16  link;
69         u16      pad;
70 };
71
72 struct fromstruct {
73         u32 frompc ;
74         s16 link ;
75         u16 pad ;
76 } ;
77
78 /*
79  * general rounding functions.
80  */
81 #define ROUNDDOWN(x,y)  (((x)/(y))*(y))
82 #define ROUNDUP(x,y)    ((((x)+(y)-1)/(y))*(y))
83
84 /*
85  * The profiling data structures are housed in this structure.
86  */
87 struct gmonparam {
88         s32             state;
89
90         /* Histogram Information */
91         u16             *kcount;        /* No. of bins in histogram */
92         u32             kcountsize;     /* Histogram samples */
93
94         /* Call-graph Information */
95         struct fromstruct       *froms;
96         u32             fromssize;
97         struct tostruct         *tos;
98         u32             tossize;
99
100         /* Initialization I/Ps */
101         u32     lowpc;
102         u32             highpc;
103         u32             textsize;
104         /* u32          cg_froms, */
105         /* u32          cg_tos, */
106 };
107 extern struct gmonparam *_gmonparam;
108 extern s32 n_gmon_sections;
109
110 /*
111  * Possible states of profiling.
112  */
113 #define GMON_PROF_ON    0
114 #define GMON_PROF_BUSY  1
115 #define GMON_PROF_ERROR 2
116 #define GMON_PROF_OFF   3
117
118 /*
119  * Sysctl definitions for extracting profiling information from the kernel.
120  */
121 #define GPROF_STATE     0       /* int: profiling enabling variable */
122 #define GPROF_COUNT     1       /* struct: profile tick count buffer */
123 #define GPROF_FROMS     2       /* struct: from location hash bucket */
124 #define GPROF_TOS       3       /* struct: destination/count structure */
125 #define GPROF_GMONPARAM 4       /* struct: profiling parameters (see above) */
126
127 #ifdef __cplusplus
128 }
129 #endif
130
131 #endif          /* PROFILE_H */