Logo Search packages:      
Sourcecode: u-boot-linaro version File versions  Download package

IxPerfProfAcc.h

Go to the documentation of this file.
/**
 * @file IxPerfProfAcc.h
 *
 * @brief  Header file for the IXP400 Perf Prof component (IxPerfProfAcc)
 *
 * 
 * @par
 * IXP400 SW Release version 2.0
 * 
 * -- Copyright Notice --
 * 
 * @par
 * Copyright 2001-2005, Intel Corporation.
 * All rights reserved.
 * 
 * @par
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the Intel Corporation nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 * 
 * @par
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * 
 * @par
 * -- End of Copyright Notice --
 */

/**
 * @defgroup IxPerfProfAcc IXP400 Performance Profiling (IxPerfProfAcc) API 
 *
 * @brief IXP400 Performance Profiling Utility component Public API. 
 * @li NOTE: Xcycle measurement is not supported in Linux.
 *
 *
 * @{
 */
#ifndef IXPERFPROFACC_H
#define IXPERFPROFACC_H

#include "IxOsal.h"

#ifdef __linux
#include <linux/proc_fs.h>
#endif

/*
 * Section for #define
 */
/**
 * @ingroup IxPerfProfAcc
 *
 * @def IX_PERFPROF_ACC_XSCALE_PMU_MAX_PROFILE_SAMPLES
 *
 * @brief This is the maximum number of profiling samples allowed, which can be
 * modified according to the user's discretion
 */
#define IX_PERFPROF_ACC_XSCALE_PMU_MAX_PROFILE_SAMPLES      0xFFFF

/**
 * @ingroup IxPerfProfAcc
 *
 * @def IX_PERFPROF_ACC_BUS_PMU_MAX_PECS      
 *
 * @brief This is the maximum number of Programmable Event Counters available. 
 *        This is a hardware specific and fixed value. Do not change.
 *        
 */
#define IX_PERFPROF_ACC_BUS_PMU_MAX_PECS        7

/**  
 * @ingroup IxPerfProfAcc
 *
 * @def IX_PERFPROF_ACC_XCYCLE_MAX_NUM_OF_MEASUREMENTS
 *
 * @brief Max number of measurement allowed. This constant is used when 
 *        creating storage array for Xcycle. When run in continuous mode,  
 *        Xcycle will wrap around and re-use buffer. 
 */
#define IX_PERFPROF_ACC_XCYCLE_MAX_NUM_OF_MEASUREMENTS 600

#ifdef __linux
/**
 * @ingroup IxPerfProfAcc
 *
 * @def IX_PERFPROF_ACC_XSCALE_PMU_SYMBOL_ACCURACY
 *
 * @brief Level of accuracy required for matching the PC Address to
 *        symbol address. This is used when the XScale PMU time/event
 *        sampling functions get the PC address and search for the 
 *        corresponding symbol address.
 */
#define IX_PERFPROF_ACC_XSCALE_PMU_SYMBOL_ACCURACY 0xffff

#endif /*__linux*/

/**  
 * @ingroup IxPerfProfAcc
 *
 * @def IX_PERFPROF_ACC_LOG
 *
 * @brief Mechanism for logging a formatted message for the PerfProfAcc component
 *
 * @param level UINT32 [in] - trace level
 * @param device UINT32 [in] - output device
 * @param str char* [in] - format string, similar to printf().
 * @param a UINT32 [in] - first argument to display
 * @param b UINT32 [in] - second argument to display
 * @param c UINT32 [in] - third argument to display
 * @param d UINT32 [in] - fourth argument to display
 * @param e UINT32 [in] - fifth argument to display
 * @param f UINT32 [in] - sixth argument to display
 *
 * @return none
 */
#ifndef NDEBUG
#define IX_PERFPROF_ACC_LOG(level, device, str, a, b, c, d, e, f)\
             (ixOsalLog (level, device, str, a, b, c, d, e, f))
#else /*do nothing*/
#define IX_PERFPROF_ACC_LOG(level, device, str, a, b, c, d, e, f) 
#endif /*ifdef NDEBUG */

/*
 * Section for struct
 */

/**
 * @brief contains summary of samples taken 
 * 
 * Structure contains all details of each program counter value - frequency 
 * that PC occurs 
 */
00150 typedef struct
{
00152       UINT32 programCounter;  /**<the program counter value of the sample*/
00153       UINT32 freq;            /**<the frequency of the occurence of the sample*/
} IxPerfProfAccXscalePmuSamplePcProfile;

/**
 * @brief contains results of a counter
 *
 * Structure contains the results of a counter, which are split into the lower 
 * and upper 32 bits of the final count
 */
00162 typedef struct
{
00164     UINT32 lower32BitsEventCount; /**<lower 32bits value of the event counter*/        
00165     UINT32 upper32BitsEventCount; /**<upper 32bits value of the event counter*/
}   IxPerfProfAccXscalePmuEvtCnt;

/**
 * @brief contains results of counters and their overflow 
 * 
 * Structure contains all values of counters and associated overflows.  The 
 * specific event and clock counters are determined by the user
 */
00174 typedef struct
{
00176     UINT32 clk_value;           /**<current value of clock counter*/                 
00177     UINT32 clk_samples;        /**<number of clock counter overflows*/
00178     UINT32 event1_value;        /**<current value of event 1 counter*/    
00179     UINT32 event1_samples;     /**<number of event 1 counter overflows*/
00180     UINT32 event2_value;        /**<current value of event 2 counter*/
00181     UINT32 event2_samples;     /**<number of event 2 counter overflows*/
00182     UINT32 event3_value;        /**<current value of event 3 counter*/
00183     UINT32 event3_samples;     /**<number of event 3 counter overflows*/
00184     UINT32 event4_value;        /**<current value of event 4 counter*/
00185     UINT32 event4_samples;     /**<number of event 4 counter overflows*/
} IxPerfProfAccXscalePmuResults;

/** 
 * 
 * @brief Results obtained from Xcycle run 
 */ 
00192 typedef struct 
{
00194     float maxIdlePercentage;        /**<maximum percentage of Idle cycles*/
00195     float minIdlePercentage;        /**<minimum percentage of Idle cycles*/
00196     float aveIdlePercentage;        /**<average percentage of Idle cycles*/
00197     UINT32 totalMeasurements;       /**<total number of measurement made */
} IxPerfProfAccXcycleResults; 

/**
 *
 * @brief Results obtained from running the Bus Pmu component. The results
 *        are obtained when the get functions is called.
 *        
 */
00206 typedef struct
{
00208     UINT32 statsToGetLower27Bit[IX_PERFPROF_ACC_BUS_PMU_MAX_PECS]; /**<Lower 27 Bit of counter value */
00209     UINT32 statsToGetUpper32Bit[IX_PERFPROF_ACC_BUS_PMU_MAX_PECS]; /**<Upper 32 Bit of counter value */
} IxPerfProfAccBusPmuResults;

/*
 * Section for enum
 */

/**
 * @ingroup IxPerfProfAcc
 * 
 * @enum IxPerfProfAccBusPmuEventCounters1
 *
 * @brief Type of bus pmu events supported on PEC 1.
 *
 * Lists all bus pmu events.  
 */
00225 typedef enum
{
00227       IX_PERFPROF_ACC_BUS_PMU_PEC1_NORTH_NPEA_GRANT_SELECT = 1, /**< Select North NPEA grant on PEC1*/
00228       IX_PERFPROF_ACC_BUS_PMU_PEC1_NORTH_NPEB_GRANT_SELECT, /**< Select North NPEB grant on PEC1*/
00229       IX_PERFPROF_ACC_BUS_PMU_PEC1_NORTH_NPEC_GRANT_SELECT, /**< Select North NPEC grant on PEC1*/
00230       IX_PERFPROF_ACC_BUS_PMU_PEC1_NORTH_BUS_IDLE_SELECT, /**< Select North bus idle on PEC1*/
00231       IX_PERFPROF_ACC_BUS_PMU_PEC1_NORTH_NPEA_REQ_SELECT, /**< Select North NPEA req on PEC1*/
00232       IX_PERFPROF_ACC_BUS_PMU_PEC1_NORTH_NPEB_REQ_SELECT, /**< Select North NPEB req on PEC1*/
00233       IX_PERFPROF_ACC_BUS_PMU_PEC1_NORTH_NPEC_REQ_SELECT, /**< Select North NPEC req on PEC1*/

00235       IX_PERFPROF_ACC_BUS_PMU_PEC1_SOUTH_GSKT_GRANT_SELECT, /**< Select south gasket grant on PEC1*/
00236       IX_PERFPROF_ACC_BUS_PMU_PEC1_SOUTH_ABB_GRANT_SELECT, /**< Select south abb grant on PEC1*/
00237       IX_PERFPROF_ACC_BUS_PMU_PEC1_SOUTH_PCI_GRANT_SELECT, /**< Select south pci grant on PEC1*/
00238       IX_PERFPROF_ACC_BUS_PMU_PEC1_SOUTH_APB_GRANT_SELECT, /**< Select south apb grant on PEC1*/
00239       IX_PERFPROF_ACC_BUS_PMU_PEC1_SOUTH_GSKT_REQ_SELECT, /**< Select south gasket request on PEC1*/
00240       IX_PERFPROF_ACC_BUS_PMU_PEC1_SOUTH_ABB_REQ_SELECT, /**< Select south abb request on PEC1*/
00241       IX_PERFPROF_ACC_BUS_PMU_PEC1_SOUTH_PCI_REQ_SELECT, /**< Select south pci request on PEC1*/
00242       IX_PERFPROF_ACC_BUS_PMU_PEC1_SOUTH_APB_REQ_SELECT, /**< Select south apb request on PEC1*/

00244       IX_PERFPROF_ACC_BUS_PMU_PEC1_SDR_0_HIT_SELECT, /**< Select sdram0 hit on PEC1*/
00245       IX_PERFPROF_ACC_BUS_PMU_PEC1_SDR_1_HIT_SELECT, /**< Select sdram1 hit on PEC1*/
00246       IX_PERFPROF_ACC_BUS_PMU_PEC1_SDR_2_HIT_SELECT, /**< Select sdram2 hit on PEC1*/
00247       IX_PERFPROF_ACC_BUS_PMU_PEC1_SDR_3_HIT_SELECT, /**< Select sdram3 hit on PEC1*/
00248       IX_PERFPROF_ACC_BUS_PMU_PEC1_SDR_4_MISS_SELECT, /**< Select sdram4 miss on PEC1*/
00249       IX_PERFPROF_ACC_BUS_PMU_PEC1_SDR_5_MISS_SELECT, /**< Select sdram5 miss on PEC1*/
00250       IX_PERFPROF_ACC_BUS_PMU_PEC1_SDR_6_MISS_SELECT, /**< Select sdram6 miss on PEC1*/
00251       IX_PERFPROF_ACC_BUS_PMU_PEC1_SDR_7_MISS_SELECT /**< Select sdram7 miss on PEC1*/
} IxPerfProfAccBusPmuEventCounters1;

/**
 * @ingroup IxPerfProfAcc
 *
 * @enum IxPerfProfAccBusPmuEventCounters2
 *
 * @brief Type of bus pmu events supported on PEC 2.
 *
 * Lists all bus pmu events.
 */
00263 typedef enum
{
00265       IX_PERFPROF_ACC_BUS_PMU_PEC2_NORTH_NPEA_XFER_SELECT = 24, /**< Select North NPEA transfer on PEC2*/
00266       IX_PERFPROF_ACC_BUS_PMU_PEC2_NORTH_NPEB_XFER_SELECT, /**< Select North NPEB transfer on PEC2*/
00267       IX_PERFPROF_ACC_BUS_PMU_PEC2_NORTH_NPEC_XFER_SELECT, /**< Select North NPEC transfer on PEC2*/
00268       IX_PERFPROF_ACC_BUS_PMU_PEC2_NORTH_BUS_WRITE_SELECT, /**< Select North bus write on PEC2*/
00269       IX_PERFPROF_ACC_BUS_PMU_PEC2_NORTH_NPEA_OWN_SELECT, /**< Select North NPEA own on PEC2*/
00270       IX_PERFPROF_ACC_BUS_PMU_PEC2_NORTH_NPEB_OWN_SELECT, /**< Select North NPEB own on PEC2*/
00271       IX_PERFPROF_ACC_BUS_PMU_PEC2_NORTH_NPEC_OWN_SELECT, /**< Select North NPEC own on PEC2*/

00273       IX_PERFPROF_ACC_BUS_PMU_PEC2_SOUTH_GSKT_XFER_SELECT, /**< Select South gasket transfer on PEC2*/
00274       IX_PERFPROF_ACC_BUS_PMU_PEC2_SOUTH_ABB_XFER_SELECT, /**< Select South abb transfer on PEC2*/
00275       IX_PERFPROF_ACC_BUS_PMU_PEC2_SOUTH_PCI_XFER_SELECT, /**< Select South pci transfer on PEC2*/
00276       IX_PERFPROF_ACC_BUS_PMU_PEC2_SOUTH_APB_XFER_SELECT, /**< Select South apb transfer on PEC2*/
00277       IX_PERFPROF_ACC_BUS_PMU_PEC2_SOUTH_GSKT_OWN_SELECT, /**< Select South gasket own on PEC2*/
00278       IX_PERFPROF_ACC_BUS_PMU_PEC2_SOUTH_ABB_OWN_SELECT, /**< Select South abb own on PEC2*/
00279       IX_PERFPROF_ACC_BUS_PMU_PEC2_SOUTH_PCI_OWN_SELECT, /**< Select South pci own on PEC2*/
00280       IX_PERFPROF_ACC_BUS_PMU_PEC2_SOUTH_APB_OWN_SELECT, /**< Select South apb own transfer on PEC2*/

00282       IX_PERFPROF_ACC_BUS_PMU_PEC2_SDR_1_HIT_SELECT, /**< Select sdram1 hit on PEC2*/
00283       IX_PERFPROF_ACC_BUS_PMU_PEC2_SDR_2_HIT_SELECT, /**< Select sdram2 hit on PEC2*/
00284       IX_PERFPROF_ACC_BUS_PMU_PEC2_SDR_3_HIT_SELECT, /**< Select sdram3 hit on PEC2*/
00285       IX_PERFPROF_ACC_BUS_PMU_PEC2_SDR_4_HIT_SELECT, /**< Select sdram4 hit on PEC2*/
00286       IX_PERFPROF_ACC_BUS_PMU_PEC2_SDR_5_MISS_SELECT, /**< Select sdram5 miss on PEC2*/
00287       IX_PERFPROF_ACC_BUS_PMU_PEC2_SDR_6_MISS_SELECT, /**< Select sdram6 miss on PEC2*/
00288       IX_PERFPROF_ACC_BUS_PMU_PEC2_SDR_7_MISS_SELECT, /**< Select sdram7 miss on PEC2*/
00289       IX_PERFPROF_ACC_BUS_PMU_PEC2_SDR_0_MISS_SELECT /**< Select sdram0 miss on PEC2*/
} IxPerfProfAccBusPmuEventCounters2;

/**
 * @ingroup IxPerfProfAcc
 *
 * @enum IxPerfProfAccBusPmuEventCounters3
 *
 * @brief Type of bus pmu events supported on PEC 3.
 *
 * Lists all bus pmu events.
 */
00301 typedef enum
{
00303       IX_PERFPROF_ACC_BUS_PMU_PEC3_NORTH_NPEA_RETRY_SELECT = 47, /**< Select north NPEA retry on PEC3*/
00304       IX_PERFPROF_ACC_BUS_PMU_PEC3_NORTH_NPEB_RETRY_SELECT, /**< Select north NPEB retry on PEC3*/
00305       IX_PERFPROF_ACC_BUS_PMU_PEC3_NORTH_NPEC_RETRY_SELECT, /**< Select north NPEC retry on PEC3*/
00306       IX_PERFPROF_ACC_BUS_PMU_PEC3_NORTH_BUS_READ_SELECT, /**< Select north bus read on PEC3*/
00307       IX_PERFPROF_ACC_BUS_PMU_PEC3_NORTH_NPEA_WRITE_SELECT, /**< Select north NPEA write on PEC3*/
00308       IX_PERFPROF_ACC_BUS_PMU_PEC3_NORTH_NPEB_WRITE_SELECT, /**< Select north NPEB write on PEC3*/
00309       IX_PERFPROF_ACC_BUS_PMU_PEC3_NORTH_NPEC_WRITE_SELECT, /**< Select north NPEC wirte on PEC3*/

00311       IX_PERFPROF_ACC_BUS_PMU_PEC3_SOUTH_GSKT_RETRY_SELECT, /**< Select south gasket retry on PEC3*/
00312       IX_PERFPROF_ACC_BUS_PMU_PEC3_SOUTH_ABB_RETRY_SELECT, /**< Select south abb retry on PEC3*/
00313       IX_PERFPROF_ACC_BUS_PMU_PEC3_SOUTH_PCI_RETRY_SELECT, /**< Select south pci retry on PEC3*/
00314       IX_PERFPROF_ACC_BUS_PMU_PEC3_SOUTH_APB_RETRY_SELECT, /**< Select south apb retry on PEC3*/
00315       IX_PERFPROF_ACC_BUS_PMU_PEC3_SOUTH_GSKT_WRITE_SELECT, /**< Select south gasket write on PEC3*/
00316       IX_PERFPROF_ACC_BUS_PMU_PEC3_SOUTH_ABB_WRITE_SELECT, /**< Select south abb write on PEC3*/
00317       IX_PERFPROF_ACC_BUS_PMU_PEC3_SOUTH_PCI_WRITE_SELECT, /**< Select south pci write on PEC3*/
00318       IX_PERFPROF_ACC_BUS_PMU_PEC3_SOUTH_APB_WRITE_SELECT, /**< Select south apb write on PEC3*/

00320       IX_PERFPROF_ACC_BUS_PMU_PEC3_SDR_2_HIT_SELECT, /**< Select sdram2 hit on PEC3*/
00321       IX_PERFPROF_ACC_BUS_PMU_PEC3_SDR_3_HIT_SELECT, /**< Select sdram3 hit on PEC3*/
00322       IX_PERFPROF_ACC_BUS_PMU_PEC3_SDR_4_HIT_SELECT, /**< Select sdram4 hit on PEC3*/
00323       IX_PERFPROF_ACC_BUS_PMU_PEC3_SDR_5_HIT_SELECT, /**< Select sdram5 hit on PEC3*/
00324       IX_PERFPROF_ACC_BUS_PMU_PEC3_SDR_6_MISS_SELECT, /**< Select sdram6 miss on PEC3*/
00325       IX_PERFPROF_ACC_BUS_PMU_PEC3_SDR_7_MISS_SELECT, /**< Select sdram7 miss on PEC3*/
00326       IX_PERFPROF_ACC_BUS_PMU_PEC3_SDR_0_MISS_SELECT, /**< Select sdram0 miss on PEC3*/
00327       IX_PERFPROF_ACC_BUS_PMU_PEC3_SDR_1_MISS_SELECT /**< Select sdram1 miss on PEC3*/
} IxPerfProfAccBusPmuEventCounters3;

/**
 * @ingroup IxPerfProfAcc
 *
 * @enum IxPerfProfAccBusPmuEventCounters4
 *
 * @brief Type of bus pmu events supported on PEC 4.
 *
 * Lists all bus pmu events.
 */
00339 typedef enum
{
00341       IX_PERFPROF_ACC_BUS_PMU_PEC4_SOUTH_PCI_SPLIT_SELECT = 70, /**< Select south pci split on PEC4*/
00342       IX_PERFPROF_ACC_BUS_PMU_PEC4_SOUTH_EXP_SPLIT_SELECT, /**< Select south expansion split on PEC4*/
00343       IX_PERFPROF_ACC_BUS_PMU_PEC4_SOUTH_APB_GRANT_SELECT, /**< Select south apb grant on PEC4*/
00344       IX_PERFPROF_ACC_BUS_PMU_PEC4_SOUTH_APB_XFER_SELECT, /**< Select south apb transfer on PEC4*/
00345       IX_PERFPROF_ACC_BUS_PMU_PEC4_SOUTH_GSKT_READ_SELECT, /**< Select south gasket read on PEC4*/
00346       IX_PERFPROF_ACC_BUS_PMU_PEC4_SOUTH_ABB_READ_SELECT, /**< Select south abb read on PEC4*/
00347       IX_PERFPROF_ACC_BUS_PMU_PEC4_SOUTH_PCI_READ_SELECT, /**< Select south pci read on PEC4*/
00348       IX_PERFPROF_ACC_BUS_PMU_PEC4_SOUTH_APB_READ_SELECT, /**< Select south apb read on PEC4*/

00350       IX_PERFPROF_ACC_BUS_PMU_PEC4_NORTH_ABB_SPLIT_SELECT, /**< Select north abb split on PEC4*/
00351       IX_PERFPROF_ACC_BUS_PMU_PEC4_NORTH_NPEA_REQ_SELECT, /**< Select north NPEA req on PEC4*/
00352       IX_PERFPROF_ACC_BUS_PMU_PEC4_NORTH_NPEA_READ_SELECT, /**< Select north NPEA read on PEC4*/
00353       IX_PERFPROF_ACC_BUS_PMU_PEC4_NORTH_NPEB_READ_SELECT, /**< Select north NPEB read on PEC4*/
00354       IX_PERFPROF_ACC_BUS_PMU_PEC4_NORTH_NPEC_READ_SELECT, /**< Select north NPEC read on PEC4*/

00356       IX_PERFPROF_ACC_BUS_PMU_PEC4_SDR_3_HIT_SELECT, /**< Select sdram3 hit on PEC4*/
00357       IX_PERFPROF_ACC_BUS_PMU_PEC4_SDR_4_HIT_SELECT, /**< Select sdram4 hit on PEC4*/
00358       IX_PERFPROF_ACC_BUS_PMU_PEC4_SDR_5_HIT_SELECT, /**< Select sdram5 hit on PEC4*/
00359       IX_PERFPROF_ACC_BUS_PMU_PEC4_SDR_6_HIT_SELECT, /**< Select sdram6 hit on PEC4*/
00360       IX_PERFPROF_ACC_BUS_PMU_PEC4_SDR_7_MISS_SELECT, /**< Select sdram7 miss on PEC4*/
00361       IX_PERFPROF_ACC_BUS_PMU_PEC4_SDR_0_MISS_SELECT, /**< Select sdram0 miss on PEC4*/
00362       IX_PERFPROF_ACC_BUS_PMU_PEC4_SDR_1_MISS_SELECT, /**< Select sdram1 miss on PEC4*/
00363       IX_PERFPROF_ACC_BUS_PMU_PEC4_SDR_2_MISS_SELECT /**< Select sdram2 miss on PEC4*/
} IxPerfProfAccBusPmuEventCounters4;

/**
 * @ingroup IxPerfProfAcc
 *
 * @enum IxPerfProfAccBusPmuEventCounters5
 *
 * @brief Type of bus pmu events supported on PEC 5.
 *
 * Lists all bus pmu events.
 */
00375 typedef enum
{
00377       IX_PERFPROF_ACC_BUS_PMU_PEC5_SOUTH_ABB_GRANT_SELECT = 91, /**< Select south abb grant on PEC5*/
00378       IX_PERFPROF_ACC_BUS_PMU_PEC5_SOUTH_ABB_XFER_SELECT, /**< Select south abb transfer on PEC5*/
00379       IX_PERFPROF_ACC_BUS_PMU_PEC5_SOUTH_ABB_RETRY_SELECT, /**< Select south abb retry on PEC5*/
00380       IX_PERFPROF_ACC_BUS_PMU_PEC5_SOUTH_EXP_SPLIT_SELECT, /**< Select south expansion split on PEC5*/
00381       IX_PERFPROF_ACC_BUS_PMU_PEC5_SOUTH_ABB_REQ_SELECT, /**< Select south abb request on PEC5*/
00382       IX_PERFPROF_ACC_BUS_PMU_PEC5_SOUTH_ABB_OWN_SELECT, /**< Select south abb own on PEC5*/
00383       IX_PERFPROF_ACC_BUS_PMU_PEC5_SOUTH_BUS_IDLE_SELECT, /**< Select south bus idle on PEC5*/

00385       IX_PERFPROF_ACC_BUS_PMU_PEC5_NORTH_NPEB_GRANT_SELECT, /**< Select north NPEB grant on PEC5*/
00386       IX_PERFPROF_ACC_BUS_PMU_PEC5_NORTH_NPEB_XFER_SELECT, /**< Select north NPEB transfer on PEC5*/
00387       IX_PERFPROF_ACC_BUS_PMU_PEC5_NORTH_NPEB_RETRY_SELECT, /**< Select north NPEB retry on PEC5*/
00388       IX_PERFPROF_ACC_BUS_PMU_PEC5_NORTH_NPEB_REQ_SELECT, /**< Select north NPEB request on PEC5*/
00389       IX_PERFPROF_ACC_BUS_PMU_PEC5_NORTH_NPEB_OWN_SELECT, /**< Select north NPEB own on PEC5*/
00390       IX_PERFPROF_ACC_BUS_PMU_PEC5_NORTH_NPEB_WRITE_SELECT, /**< Select north NPEB write on PEC5*/
00391       IX_PERFPROF_ACC_BUS_PMU_PEC5_NORTH_NPEB_READ_SELECT, /**< Select north NPEB read on PEC5*/

00393       IX_PERFPROF_ACC_BUS_PMU_PEC5_SDR_4_HIT_SELECT, /**< Select north sdram4 hit on PEC5*/
00394       IX_PERFPROF_ACC_BUS_PMU_PEC5_SDR_5_HIT_SELECT, /**< Select north sdram5 hit on PEC5*/
00395       IX_PERFPROF_ACC_BUS_PMU_PEC5_SDR_6_HIT_SELECT, /**< Select north sdram6 hit on PEC5*/
00396       IX_PERFPROF_ACC_BUS_PMU_PEC5_SDR_7_HIT_SELECT, /**< Select north sdram7 hit on PEC5*/
00397       IX_PERFPROF_ACC_BUS_PMU_PEC5_SDR_0_MISS_SELECT, /**< Select north sdram0 miss on PEC5*/
00398       IX_PERFPROF_ACC_BUS_PMU_PEC5_SDR_1_MISS_SELECT, /**< Select north sdram1 miss on PEC5*/
00399       IX_PERFPROF_ACC_BUS_PMU_PEC5_SDR_2_MISS_SELECT, /**< Select north sdram2 miss on PEC5*/
00400       IX_PERFPROF_ACC_BUS_PMU_PEC5_SDR_3_MISS_SELECT /**< Select north sdram3 miss on PEC5*/
} IxPerfProfAccBusPmuEventCounters5;

/**
 * @ingroup IxPerfProfAcc
 *
 * @enum IxPerfProfAccBusPmuEventCounters6
 *
 * @brief Type of bus pmu events supported on PEC 6.
 *
 * Lists all bus pmu events.
 */
00412 typedef enum
{
00414       IX_PERFPROF_ACC_BUS_PMU_PEC6_SOUTH_PCI_GRANT_SELECT = 113, /**< Select south pci grant on PEC6*/
00415       IX_PERFPROF_ACC_BUS_PMU_PEC6_SOUTH_PCI_XFER_SELECT, /**< Select south pci transfer on PEC6*/
00416       IX_PERFPROF_ACC_BUS_PMU_PEC6_SOUTH_PCI_RETRY_SELECT, /**< Select south pci retry on PEC6*/
00417       IX_PERFPROF_ACC_BUS_PMU_PEC6_SOUTH_PCI_SPLIT_SELECT, /**< Select south pci split on PEC6*/
00418       IX_PERFPROF_ACC_BUS_PMU_PEC6_SOUTH_PCI_REQ_SELECT, /**< Select south pci request on PEC6*/
00419       IX_PERFPROF_ACC_BUS_PMU_PEC6_SOUTH_PCI_OWN_SELECT, /**< Select south pci own on PEC6*/
00420       IX_PERFPROF_ACC_BUS_PMU_PEC6_SOUTH_BUS_WRITE_SELECT, /**< Select south pci write on PEC6*/

00422       IX_PERFPROF_ACC_BUS_PMU_PEC6_NORTH_NPEC_GRANT_SELECT, /**< Select north NPEC grant on PEC6*/
00423       IX_PERFPROF_ACC_BUS_PMU_PEC6_NORTH_NPEC_XFER_SELECT, /**< Select north NPEC transfer on PEC6*/
00424       IX_PERFPROF_ACC_BUS_PMU_PEC6_NORTH_NPEC_RETRY_SELECT, /**< Select north NPEC retry on PEC6*/
00425       IX_PERFPROF_ACC_BUS_PMU_PEC6_NORTH_NPEC_REQ_SELECT, /**< Select north NPEC request on PEC6*/
00426       IX_PERFPROF_ACC_BUS_PMU_PEC6_NORTH_NPEC_OWN_SELECT, /**< Select north NPEC own on PEC6*/
00427       IX_PERFPROF_ACC_BUS_PMU_PEC6_NORTH_NPEB_WRITE_SELECT, /**< Select north NPEB write on PEC6*/
00428       IX_PERFPROF_ACC_BUS_PMU_PEC6_NORTH_NPEC_READ_SELECT, /**< Select north NPEC read on PEC6*/

00430       IX_PERFPROF_ACC_BUS_PMU_PEC6_SDR_5_HIT_SELECT, /**< Select sdram5 hit on PEC6*/
00431       IX_PERFPROF_ACC_BUS_PMU_PEC6_SDR_6_HIT_SELECT, /**< Select sdram6 hit on PEC6*/
00432       IX_PERFPROF_ACC_BUS_PMU_PEC6_SDR_7_HIT_SELECT, /**< Select sdram7 hit on PEC6*/
00433       IX_PERFPROF_ACC_BUS_PMU_PEC6_SDR_0_HIT_SELECT, /**< Select sdram0 hit on PEC6*/
00434       IX_PERFPROF_ACC_BUS_PMU_PEC6_SDR_1_MISS_SELECT, /**< Select sdram1 miss on PEC6*/
00435       IX_PERFPROF_ACC_BUS_PMU_PEC6_SDR_2_MISS_SELECT, /**< Select sdram2 miss on PEC6*/
00436       IX_PERFPROF_ACC_BUS_PMU_PEC6_SDR_3_MISS_SELECT, /**< Select sdram3 miss on PEC6*/
00437       IX_PERFPROF_ACC_BUS_PMU_PEC6_SDR_4_MISS_SELECT /**< Select sdram4 miss on PEC6*/
} IxPerfProfAccBusPmuEventCounters6;

/**
 * @ingroup IxPerfProfAcc
 *
 * @enum IxPerfProfAccBusPmuEventCounters7
 *
 * @brief Type of bus pmu events supported on PEC 7.
 *
 * Lists all bus pmu events.
 */
00449 typedef enum
{
00451       IX_PERFPROF_ACC_BUS_PMU_PEC7_SOUTH_APB_RETRY_SELECT = 135, /**< Select south apb retry on PEC7*/
00452       IX_PERFPROF_ACC_BUS_PMU_PEC7_SOUTH_APB_REQ_SELECT, /**< Select south apb request on PEC7*/
00453       IX_PERFPROF_ACC_BUS_PMU_PEC7_SOUTH_APB_OWN_SELECT, /**< Select south apb own on PEC7*/
00454       IX_PERFPROF_ACC_BUS_PMU_PEC7_SOUTH_BUS_READ_SELECT, /**< Select south bus read on PEC7*/
00455       IX_PERFPROF_ACC_BUS_PMU_PEC7_CYCLE_COUNT_SELECT /**< Select cycle count on PEC7*/
} IxPerfProfAccBusPmuEventCounters7;

/** 
 * @ingroup IxPerfProfAcc 
 * 
 * @enum IxPerfProfAccXscalePmuEvent 
 * 
 * @brief Type of xscale pmu events supported 
 * 
 * Lists all xscale pmu events.  The maximum is a default value that the user 
 * should not exceed. 
 */ 
00468 typedef enum 
{
00470     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_CACHE_MISS=0,      /**< cache miss*/ 
00471     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_CACHE_INSTRUCTION,/**< cache instruction*/ 
00472     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_STALL,     /**< event stall*/ 
00473     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_INST_TLB_MISS, /**< instruction tlb miss*/ 
00474     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_DATA_TLB_MISS, /**< data tlb miss*/ 
00475     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_BRANCH_EXEC,   /**< branch executed*/ 
00476     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_BRANCH_MISPREDICT, /**<branch mispredict*/ 
00477     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_INST_EXEC, /**< instruction executed*/ 
00478     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_FULL_EVERYCYCLE,   /**< 
                                                         *Stall - data cache 
                                                         *buffers are full. 
                                                                                     *This event occurs 
                                                                                     *every cycle where 
                                                                                     *condition present 
                                                                                     */ 
00485     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_ONCE,    /**< 
                                               *Stall - data cache buffers are 
                                                                     *full.This event occurs once 
                                                                     *for each contiguous sequence 
                                                                     */ 
00490     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_DATA_CACHE_ACCESS, /**< data cache access*/ 
00491     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_DATA_CACHE_MISS,   /**< data cache miss*/ 
00492     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_DATA_CACHE_WRITEBACK,  /**<data cache 
                                                             *writeback 
                                                                                     */ 
00495     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_SW_CHANGE_PC,  /**< sw change pc*/ 
00496     IX_PERFPROF_ACC_XSCALE_PMU_EVENT_MAX    /**< max value*/ 
} IxPerfProfAccXscalePmuEvent;

/**
 * @ingroup IxPerfProfAcc
 *
 * @enum IxPerfProfAccStatus
 *
 * @brief Invalid Status Definitions  
 *
 * These status will be used by the APIs to return to the user.
 */
00508 typedef enum
{
00510       IX_PERFPROF_ACC_STATUS_SUCCESS = IX_SUCCESS,    /**< success*/
00511       IX_PERFPROF_ACC_STATUS_FAIL = IX_FAIL,          /**< fail*/
00512       IX_PERFPROF_ACC_STATUS_ANOTHER_UTIL_IN_PROGRESS,/**<another utility in 
                                                                               *progress
                                                                               */ 
00515       IX_PERFPROF_ACC_STATUS_XCYCLE_MEASUREMENT_IN_PROGRESS, /**<measurement in
                                                                                          *progress
                                                                                          */
00518       IX_PERFPROF_ACC_STATUS_XCYCLE_NO_BASELINE, /**<no baseline yet*/   
00519       IX_PERFPROF_ACC_STATUS_XCYCLE_MEASUREMENT_REQUEST_OUT_OF_RANGE, /**< 
                                                                                          * Measurement chosen 
                                                                                          * is out of range
                                                                                          */
00523       IX_PERFPROF_ACC_STATUS_XCYCLE_PRIORITY_SET_FAIL,  /**<
                                                           * Cannot set 
                                                                                     * task priority
                                                           */
00527       IX_PERFPROF_ACC_STATUS_XCYCLE_THREAD_CREATE_FAIL, /**< 
                                                           * Fail create thread
                                                           */
00530       IX_PERFPROF_ACC_STATUS_XCYCLE_PRIORITY_RESTORE_FAIL,  /**<
                                                               *cannot restore
                                                               *priority
                                                               */
00534       IX_PERFPROF_ACC_STATUS_XCYCLE_MEASUREMENT_NOT_RUNNING, /**< xcycle not running*/
00535       IX_PERFPROF_ACC_STATUS_XSCALE_PMU_NUM_INVALID, /**< invalid number 
                                                      *entered
                                                      */
00538       IX_PERFPROF_ACC_STATUS_XSCALE_PMU_EVENT_INVALID, /**< invalid pmu event*/
00539       IX_PERFPROF_ACC_STATUS_XSCALE_PMU_START_NOT_CALLED, /**<a start process
                                                                               *was not called 
                                                                               *before attempting
                                                                               *a stop or results
                                                                               *get
                                                                               */
00545       IX_PERFPROF_ACC_STATUS_BUS_PMU_MODE_ERROR,  /**< invalid mode*/
00546       IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC1_ERROR,      /**< invalid pec1 entered*/
00547       IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC2_ERROR,      /**< invalid pec2 entered*/
00548       IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC3_ERROR,      /**< invalid pec3 entered*/
00549       IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC4_ERROR,      /**< invalid pec4 entered*/
00550       IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC5_ERROR,      /**< invalid pec5 entered*/
00551       IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC6_ERROR,      /**< invalid pec6 entered*/
00552       IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC7_ERROR,      /**< invalid pec7 entered*/
00553       IX_PERFPROF_ACC_STATUS_BUS_PMU_START_NOT_CALLED, /**<a start process
                                                                         *was not called 
                                                                         *before attempting
                                                                         *a stop 
                                                                               */
00558         IX_PERFPROF_ACC_STATUS_COMPONENT_NOT_SUPPORTED /**<Device or OS does not support component*/
} IxPerfProfAccStatus;

/**
 * @ingroup IxPerfProfAcc 
 * 
 * @enum IxPerfProfAccBusPmuMode
 *
 * @brief State selection of counters.
 *
 * These states will be used to determine the counters whose values are to be
 * read.
 */
00571 typedef enum
{
00573         IX_PERFPROF_ACC_BUS_PMU_MODE_HALT=0,   /**< halt state*/
00574         IX_PERFPROF_ACC_BUS_PMU_MODE_SOUTH,    /**< south state*/
00575         IX_PERFPROF_ACC_BUS_PMU_MODE_NORTH,    /**< north state*/
00576         IX_PERFPROF_ACC_BUS_PMU_MODE_SDRAM    /**< SDRAM state*/
} IxPerfProfAccBusPmuMode;

/*
 * Section for prototypes interface functions
 */

/**
 * @ingroup IxPerfProfAcc
 *
 * @fn ixPerfProfAccXscalePmuEventCountStart(
            BOOL clkCntDiv,
            UINT32 numEvents,
            IxPerfProfAccXscalePmuEvent pmuEvent1,
            IxPerfProfAccXscalePmuEvent pmuEvent2,
            IxPerfProfAccXscalePmuEvent pmuEvent3,
            IxPerfProfAccXscalePmuEvent pmuEvent4 )
 *
 * @brief This API will start the clock and event counting
 *
 * @param   clkCntDiv BOOL [in] - enables/disables the clock divider. When 
 *                true, the divider is enabled and the clock count will be incremented
 *          by one at each 64th processor clock cycle.  When false, the divider
 *                is disabled and the clock count will be incremented at every 
 *                processor clock cycle.
 * @param   numEvents UINT32 [in] - the number of PMU events that are to be 
 *                monitored as specified by the user. For clock counting only, this
 *                is set to zero.
 * @param   pmuEvent1 @ref IxPerfProfAccXscalePmuEvent [in] - the specific PMU 
 *                event to be monitored by counter 1
 * @param   pmuEvent2 @ref IxPerfProfAccXscalePmuEvent [in] - the specific PMU 
 *                event to be monitored by counter 2 
 * @param   pmuEvent3 @ref IxPerfProfAccXscalePmuEvent [in] - the specific PMU 
 *                event to be monitored by counter 3
 * @param   pmuEvent4 @ref IxPerfProfAccXscalePmuEvent [in] - the specific PMU 
 *                event to be monitored by counter 4
 *
 * This API will start the clock and xscale PMU event counting.  Up to 
 * 4 events can be monitored simultaneously. This API has to be called before
 * ixPerfProfAccXscalePmuEventCountStop can be called.
 *
 * @return 
 *    - IX_PERFPROF_ACC_STATUS_SUCCESS if clock and events counting are 
 *        started successfully
 *    - IX_PERFPROF_ACC_STATUS_FAIL if unable to start the counting
 *    - IX_PERFPROF_ACC_STATUS_XSCALE_PMU_NUM_INVALID if the number of events 
 *        specified is out of the valid range
 *    - IX_PERFPROF_ACC_STATUS_XSCALE_PMU_EVENT_INVALID if the value of the PMU 
 *      event specified does not exist
 *    - IX_PERFPROF_ACC_STATUS_ANOTHER_UTIL_IN_PROGRESS - another utility is 
 *      running 
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */
PUBLIC IxPerfProfAccStatus
ixPerfProfAccXscalePmuEventCountStart(
      BOOL clkCntDiv,
      UINT32 numEvents,
      IxPerfProfAccXscalePmuEvent pmuEvent1,
      IxPerfProfAccXscalePmuEvent pmuEvent2,
      IxPerfProfAccXscalePmuEvent pmuEvent3,
      IxPerfProfAccXscalePmuEvent pmuEvent4 );

/**
 * @ingroup IxPerfProfAcc
 *
 * @fn ixPerfProfAccXscalePmuEventCountStop (
   IxPerfProfAccXscalePmuResults *eventCountStopResults) 
 *
 * @brief This API will stop the clock and event counting
 *
 * @param *eventCountStopResults @ref IxPerfProfAccXscalePmuResults [out] - pointer 
 *            to struct containing results of counters and their overflow. It is the 
 *            users's responsibility to allocate the memory for this pointer. 
 *
 * This API will stop the clock and xscale PMU events that are being counted.
 * The results of the clock and events count will be stored in the pointer 
 * allocated by the user. It can only be called once 
 * IxPerfProfAccEventCountStart has been called. 
 *
 * @return 
 *      - IX_PERFPROF_ACC_STATUS_SUCCESS if clock and events counting are 
 *        stopped successfully
 *      - IX_PERFPROF_ACC_STATUS_XSCALE_PMU_START_NOT_CALLED if
 *        ixPerfProfAccXscalePmuEventCountStart is not called first.
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */

PUBLIC IxPerfProfAccStatus 
ixPerfProfAccXscalePmuEventCountStop(
   IxPerfProfAccXscalePmuResults *eventCountStopResults); 

/**
 * @ingroup IxPerfProfAcc
 *
 * @fn ixPerfProfAccXscalePmuTimeSampStart(
   UINT32 samplingRate,
   BOOL clkCntDiv) 
 *
 * @brief Starts the time based sampling
 *
 * @param   samplingRate UINT32 [in] - sampling rate is the number of
 *          clock counts before a counter overflow interrupt is generated,
 *          at which, a sample is taken; the rate specified cannot be greater
 *          than the counter size of 32bits or set to zero.
 * @param   clkCntDiv BOOL [in] - enables/disables the clock divider. When 
 *          true, the divider is enabled and the clock count will be incremented
 *          by one at each 64th processor clock cycle.  When false, the divider
 *                is disabled and the clock count will be incremented at every 
 *                processor clock cycle. 
 *
 * This API starts the time based sampling to determine the frequency with 
 * which lines of code are being executed.  Sampling is done at the rate 
 * specified by the user.  At each sample,the value of the program counter
 * is determined.  Each of these occurrences are recorded to determine the 
 * frequency with which the Xscale code is being executed. This API has to be 
 * called before ixPerfProfAccXscalePmuTimeSampStop can be called.
 *
 * @return
 *    - IX_PERFPROF_ACC_STATUS_SUCCESS if time based sampling is started 
 *        successfully
 *    - IX_PERFPROF_ACC_STATUS_FAIL if unable to start the sampling
 *    - IX_PERFPROF_ACC_STATUS_ANOTHER_UTIL_IN_PROGRESS - another utility is 
 *      running 
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */
PUBLIC IxPerfProfAccStatus 
ixPerfProfAccXscalePmuTimeSampStart(
      UINT32 samplingRate, 
      BOOL clkCntDiv);

/**
 * @ingroup IxPerfProfAcc
 *
 * @fn ixPerfProfAccXscalePmuTimeSampStop(
   IxPerfProfAccXscalePmuEvtCnt *clkCount,
   IxPerfProfAccXscalePmuSamplePcProfile *timeProfile)
 *
 * @brief Stops the time based sampling
 *
 * @param   *clkCount @ref IxPerfProfAccXscalePmuEvtCnt [out]  - pointer to the 
 *                struct containing the final clock count and its overflow.  It is the
 *                user's responsibility to allocate the memory for this pointer.
 * @param   *timeProfile @ref IxPerfProfAccXscalePmuSamplePcProfile [out] -
 *          pointer to the array of profiles for each program counter value;
 *          the user should set the size of the array to 
 *                IX_PERFPROF_ACC_XSCALE_PMU_MAX_PROFILE_SAMPLES.  It is the user's 
 *                responsibility to allocate the memory for this pointer.
 *
 * This API stops the time based sampling.  The results are stored in the 
 * pointers allocated by the user.  It can only be called once
 * ixPerfProfAccXscalePmuTimeSampStart has been called.
 *
 * @return
 *    - IX_PERFPROF_ACC_STATUS_SUCCESS if time based sampling is stopped 
 *        successfully
 *    - IX_PERFPROF_ACC_STATUS_XSCALE_PMU_START_NOT_CALLED if
 *      ixPerfProfAccXscalePmuTimeSampStart not called first
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */
PUBLIC IxPerfProfAccStatus
ixPerfProfAccXscalePmuTimeSampStop(
      IxPerfProfAccXscalePmuEvtCnt *clkCount,
      IxPerfProfAccXscalePmuSamplePcProfile *timeProfile);

/**
 * @ingroup IxPerfProfAcc
 *
 * @fn ixPerfProfAccXscalePmuEventSampStart(
   UINT32 numEvents,
   IxPerfProfAccXscalePmuEvent pmuEvent1,
   UINT32 eventRate1,
   IxPerfProfAccXscalePmuEvent pmuEvent2,
   UINT32 eventRate2,
   IxPerfProfAccXscalePmuEvent pmuEvent3,
   UINT32 eventRate3,
   IxPerfProfAccXscalePmuEvent pmuEvent4,
   UINT32 eventRate4)
 *
 * @brief Starts the event based sampling
 *
 * @param   numEvents UINT32 [in] - the number of PMU events that are 
 *                to be monitored as specified by the user. The value should be
 *          between 1-4 events at a time.
 * @param   pmuEvent1 @ref IxPerfProfAccXscalePmuEvent [in] - the specific PMU 
 *                event to be monitored by counter 1
 * @param   eventRate1 UINT32 [in] - sampling rate of counter 1. The rate is 
 *                the number of events before a sample taken.  If 0 is specified, the
 *                the full counter value (0xFFFFFFFF) is used. The rate must not be 
 *                greater than the full counter value.
 * @param   pmuEvent2 @ref IxPerfProfAccXscalePmuEvent [in] - the specific PMU 
 *                event to be monitored by counter 2 
 * @param   eventRate2 UINT32 [in] -  sampling rate of counter 2. The rate is 
 *                the number of events before a sample taken. If 0 is specified, the 
 *                full counter value (0xFFFFFFFF) is used. The rate must not be 
 *          greater than the full counter value.
 * @param   pmuEvent3 @ref IxPerfProfAccXscalePmuEvent [in] - the specific PMU 
 *                event to be monitored by counter 3
 * @param   eventRate3 UINT32 [in] -  sampling rate of counter 3. The rate is 
 *                the number of events before a sample taken.  If 0 is specified, the 
 *                full counter value (0xFFFFFFFF) is used.  The rate must not be 
 *          greater than the full counter value.
 * @param   pmuEvent4 @ref IxPerfProfAccXscalePmuEvent [in] - the specific PMU 
 *                event to be monitored by counter 4
 * @param   eventRate4 UINT32 [in] -  sampling rate of counter 4. The rate is 
 *                the number of events before a sample taken.  If 0 is specified, the 
 *                full counter value (0xFFFFFFFF) is used. The rate must not be 
 *          greater than the full counter value.
 *
 * Starts the event based sampling to determine the frequency with 
 * which events are being executed.  The sampling rate is the number of events,
 * as specified by the user,  before a counter overflow interrupt is 
 * generated.  A sample is taken at each counter overflow interrupt.  At each
 * sample,the value of the program counter determines the corresponding 
 * location in the code.  Each of these occurrences are recorded to determine 
 * the frequency with which the Xscale code in each event is executed. This API
 * has to be called before ixPerfProfAccXscalePmuEventSampStop can be called.
 *
 * @return
 *    - IX_PERFPROF_ACC_STATUS_SUCCESS if event based sampling is started 
 *      successfully
 *    - IX_PERFPROF_ACC_STATUS_FAIL if unable to start the sampling
 *    - IX_PERFPROF_ACC_STATUS_XSCALE_PMU_NUM_INVALID if the number of events 
 *        specified is out of the valid range
 *    - IX_PERFPROF_ACC_STATUS_XSCALE_PMU_EVENT_INVALID if the value of the
 *        PMU event specified does not exist
 *      - IX_PERFPROF_ACC_STATUS_ANOTHER_UTIL_IN_PROGRESS - another utility is
 *        running 
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */
PUBLIC IxPerfProfAccStatus
ixPerfProfAccXscalePmuEventSampStart(
      UINT32 numEvents,
      IxPerfProfAccXscalePmuEvent pmuEvent1,
      UINT32 eventRate1,
    IxPerfProfAccXscalePmuEvent pmuEvent2,
    UINT32 eventRate2,
    IxPerfProfAccXscalePmuEvent pmuEvent3,
    UINT32 eventRate3,
    IxPerfProfAccXscalePmuEvent pmuEvent4,
    UINT32 eventRate4);

/**
 * @ingroup IxPerfProfAcc
 *
 * @fn ixPerfProfAccXscalePmuEventSampStop(
   IxPerfProfAccXscalePmuSamplePcProfile *eventProfile1,
   IxPerfProfAccXscalePmuSamplePcProfile *eventProfile2,
   IxPerfProfAccXscalePmuSamplePcProfile *eventProfile3,
   IxPerfProfAccXscalePmuSamplePcProfile *eventProfile4)
 *
 * @brief Stops the event based sampling
 *
 * @param       *eventProfile1 @ref IxPerfProfAccXscalePmuSamplePcProfile [out] - 
 *              pointer to the array of profiles for each program counter value;
 *              the user should set the size of the array to 
 *                      IX_PERFPROF_ACC_XSCALE_PMU_MAX_PROFILE_SAMPLES. It is the 
 *                      users's responsibility to allocate memory for this pointer.
 * @param       *eventProfile2 @ref IxPerfProfAccXscalePmuSamplePcProfile [out] - 
 *              pointer to the array of profiles for each program counter value;
 *              the user should set the size of the array to 
 *                      IX_PERFPROF_ACC_XSCALE_PMU_MAX_PROFILE_SAMPLES.  It is the 
 *                      users's responsibility to allocate memory for this pointer.
 * @param       *eventProfile3 @ref IxPerfProfAccXscalePmuSamplePcProfile [out] - 
 *              pointer to the array of profiles for each program counter value;
 *              the user should set the size of the array to 
 *                      IX_PERFPROF_ACC_XSCALE_PMU_MAX_PROFILE_SAMPLES.  It is the 
 *                      users's responsibility to allocate memory for this pointer.
 * @param       *eventProfile4 @ref IxPerfProfAccXscalePmuSamplePcProfile [out] - 
 *              pointer to the array of profiles for each program counter value;
 *              the user should set the size of the array to 
 *                      IX_PERFPROF_ACC_XSCALE_PMU_MAX_PROFILE_SAMPLES.  It is the 
 *                      users's responsibility to allocate memory for this pointer.
 *
 * This API stops the event based sampling.  The results are stored in the 
 * pointers allocated by the user.  It can only be called once 
 * ixPerfProfAccEventSampStart has been called.
 *
 * @return 
 *      - IX_PERFPROF_ACC_STATUS_SUCCESS if event based sampling is stopped 
 *         successfully
 *      - IX_PERFPROF_ACC_STATUS_XSCALE_PMU_START_NOT_CALLED if
 *          ixPerfProfAccEventSampStart not called first.
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */
PUBLIC IxPerfProfAccStatus 
ixPerfProfAccXscalePmuEventSampStop(
    IxPerfProfAccXscalePmuSamplePcProfile *eventProfile1,
    IxPerfProfAccXscalePmuSamplePcProfile *eventProfile2,
    IxPerfProfAccXscalePmuSamplePcProfile *eventProfile3,
    IxPerfProfAccXscalePmuSamplePcProfile *eventProfile4);

/**                                                                             
 * @ingroup IxPerfProfAcc                                                      
 *                                                                              
 * @fn ixPerfProfAccXscalePmuResultsGet(IxPerfProfAccXscalePmuResults *results)     
 *                                                                              
 * @brief Reads the current value of the counters and their overflow                                        
 *                                                                              
 * @param *results @ref IxPerfProfAccXscalePmuResults [out] - pointer to the 
          results struct.  It is the user's responsibility to allocate memory
          for this pointer
 *                                                                              
 * This API reads the value of all four event counters and the clock counter, 
 * and the associated overflows.  It does not give results associated with 
 * sampling, i.e. PC and their frequencies.  This API can be called at any time
 * once a process has been started. If it is called before a process has started
 * the user should be aware that the values it contains are default values and 
 * might be meaningless.  The values of the counters are stored in the pointer 
 * allocated by the client.
 *                                                                    
 * @return - none
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */                                                                             
PUBLIC void                                                     
ixPerfProfAccXscalePmuResultsGet(IxPerfProfAccXscalePmuResults *results);    

/**
 * @ingroup IxPerfProfAcc
 * 
 * @fn ixPerfProfAccBusPmuStart(
        IxPerfProfAccBusPmuMode mode, 
        IxPerfProfAccBusPmuEventCounters1 pecEvent1,
        IxPerfProfAccBusPmuEventCounters2 pecEvent2, 
        IxPerfProfAccBusPmuEventCounters3 pecEvent3, 
        IxPerfProfAccBusPmuEventCounters4 pecEvent4,
        IxPerfProfAccBusPmuEventCounters5 pecEvent5, 
        IxPerfProfAccBusPmuEventCounters6 pecEvent6, 
        IxPerfProfAccBusPmuEventCounters7 pecEvent7)
 * @brief Initializes all the counters and selects events to be monitored.
 *
 * Function initializes all the counters and assigns the events associated 
 * with the counters. Users send in the mode and events they want to count.
 * This API verifies if the combination chosen is appropriate 
 * and sets all the registers accordingly. Selecting HALT mode will result
 * in an error. User should use ixPerfProfAccBusPmuStop() to HALT. 
 * 
 * 
 * @param mode @ref IxPerfProfAccStateBusPmuMode [in] - Mode selection.
 * @param pecEvent1 @ref IxPerfProfAccBusPmuEventCounters1 [in] - Event for PEC1.
 * @param pecEvent2 @ref IxPerfProfAccBusPmuEventCounters2 [in] - Event for PEC2.
 * @param pecEvent3 @ref IxPerfProfAccBusPmuEventCounters3 [in] - Event for PEC3.
 * @param pecEvent4 @ref IxPerfProfAccBusPmuEventCounters4 [in] - Event for PEC4.
 * @param pecEvent5 @ref IxPerfProfAccBusPmuEventCounters5 [in] - Event for PEC5.
 * @param pecEvent6 @ref IxPerfProfAccBusPmuEventCounters6 [in] - Event for PEC6.
 * @param pecEvent7 @ref IxPerfProfAccBusPmuEventCounters7 [in] - Event for PEC7.
 *
 * @return 
 *      - IX_PERFPROF_ACC_STATUS_SUCCESS - Initialization executed 
 *        successfully.  
 *      - IX_PERFPROF_ACC_STATUS_BUS_PMU_MODE_ERROR - Error in selection of 
 *            mode. Only NORTH, SOUTH and SDRAM modes are allowed. 
 *      - IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC1_ERROR - Error in selection of 
 *        event for PEC1
 *      - IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC2_ERROR - Error in selection of 
 *        event for PEC2 
 *      - IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC3_ERROR - Error in selection of 
 *        event for PEC3
 *      - IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC4_ERROR - Error in selection of 
 *        event for PEC4
 *      - IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC5_ERROR - Error in selection of 
 *        event for PEC5
 *      - IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC6_ERROR - Error in selection of 
 *        event for PEC6
 *      - IX_PERFPROF_ACC_STATUS_BUS_PMU_PEC7_ERROR - Error in selection of 
 *        event for PEC7
 *          - IX_PERFPROF_ACC_STATUS_ANOTHER_UTIL_IN_PROGRESS - another utility 
 *            is running
 *          - IX_PERFPROF_ACC_STATUS_FAIL - Failed to start because interrupt 
 *            service routine fails to bind.  
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 **/
PUBLIC 
IxPerfProfAccStatus ixPerfProfAccBusPmuStart (
        IxPerfProfAccBusPmuMode mode, 
        IxPerfProfAccBusPmuEventCounters1 pecEvent1,
        IxPerfProfAccBusPmuEventCounters2 pecEvent2, 
        IxPerfProfAccBusPmuEventCounters3 pecEvent3, 
        IxPerfProfAccBusPmuEventCounters4 pecEvent4,
        IxPerfProfAccBusPmuEventCounters5 pecEvent5, 
        IxPerfProfAccBusPmuEventCounters6 pecEvent6, 
        IxPerfProfAccBusPmuEventCounters7 pecEvent7);

/**
 * @ingroup IxPerfProfAcc
 * 
 * @fn ixPerfProfAccBusPmuStop(void)
 * @brief Stops all counters. 
 * 
 * This function stops all the PECs by setting the halt bit in the ESR.
 *
 *
 * @return 
 *      - IX_PERFPROF_ACC_STATUS_SUCCESS - Counters successfully halted.
 *      - IX_PERFPROF_ACC_STATUS_FAIL - Counters could'nt be halted. 
 *          - IX_PERFPROF_ACC_STATUS_BUS_PMU_START_NOT_CALLED - the 
 *            ixPerfProfAccBusPmuStart() function is not called.
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 **/
PUBLIC IxPerfProfAccStatus 
ixPerfProfAccBusPmuStop (void);

/**
 * @ingroup IxPerfProfAcc
 * 
 * @fn ixPerfProfAccBusPmuResultsGet (
            IxPerfProfAccBusPmuResults *busPmuResults)
 * @brief Gets values of all counters 
 * 
 * This function is responsible for getting all the counter values from the 
 * lower API and putting it into an array for the user.
 *
 * @param *busPmuResults @ref IxPerfProfAccBusPmuResults [out]
 *           - Pointer to a structure of arrays to store all counter values.
 *
 * @return  none
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 **/
PUBLIC void
ixPerfProfAccBusPmuResultsGet (IxPerfProfAccBusPmuResults *BusPmuResults);

/**
 * @ingroup IxPerfProfAcc
 * 
 * @fn ixPerfProfAccBusPmuPMSRGet (
      UINT32 *pmsrValue)
 * @brief Get values of PMSR  
 *
 * This API gets the Previous Master Slave Register
 * value and returns it to the calling function. This value indicates
 * which master or slave accessed the north, south bus or sdram last.
 * The value returned by this function is a 32 bit value and is read
 * from location of an offset 0x0024 of the base value.
 *
 * The PMSR value returned indicate the following:
 * <pre>
 *
 * *************************************************************************************
 * *  Bit    *  Name  *       Description                                              *
 * *                                                                                   * 
 * *************************************************************************************
 * * [31:18]  *Reserved*                                                               *
 * *************************************************************************************
 * * [17:12] *  PSS   * Indicates which of the slaves on                               *
 * *         *        *  ARBS was previously                                           *
 * *         *        * accessed by the AHBS.                                          * 
 * *         *        * [000001] Expansion Bus                                         *
 * *         *        * [000010] SDRAM Controller                                      *
 * *         *        * [000100] PCI                                                   *
 * *         *        * [001000] Queue Manager                                         * 
 * *         *        * [010000] AHB-APB Bridge                                        * 
 * *         *        * [100000] Reserved                                              *
 * *************************************************************************************
 * * [11:8]  *  PSN   * Indicates which of the Slaves on                               *
 * *         *        * ARBN was previously                                            *
 * *         *        * accessed the AHBN.                                             *
 * *         *        * [0001] SDRAM Controller                                        *
 * *         *        * [0010] AHB-AHB Bridge                                          *
 * *         *        * [0100] Reserved                                                *
 * *         *        * [1000] Reserved                                                *
 * *************************************************************************************
 * *  [7:4]  *  PMS   * Indicates which of the Masters on                              *
 * *         *        * ARBS was previously                                            *
 * *         *        * accessing the AHBS.                                            *
 * *         *        * [0001] Gasket                                                  *
 * *         *        * [0010] AHB-AHB Bridge                                          *
 * *         *        * [0100] PCI                                                     *
 * *         *        * [1000] APB                                                     *
 * *************************************************************************************
 * *  [3:0]  *  PMN   * Indicates which of the Masters on                              *
 * *         *        * ARBN was previously                                            *
 * *         *        * accessing the AHBN.                                            *
 * *         *        * [0001] NPEA                                                    *
 * *         *        * [0010] NPEB                                                    *
 * *         *        * [0100] NPEC                                                    *
 * *         *        * [1000] Reserved                                                *
 * *************************************************************************************
 * </pre>
 *
 * @param *pmsrValue UINT32 [out] - Pointer to return PMSR value. Users need to
 *                                          allocate storage for psmrValue.   
 *
 * @return none 
 *
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 **/
PUBLIC void
ixPerfProfAccBusPmuPMSRGet (
UINT32 *pmsrValue);


/** 
 * The APIs below are specifically used for Xcycle module. 
 **/

/**
 * @ingroup IxPerfProfAcc
 * 
 * @fn ixPerfProfAccXcycleBaselineRun (
            UINT32 *numBaselineCycle) 
 *
 * @brief Perform baseline for Xcycle 
 *
 * @param *numBaselineCycle UINT32 [out] - pointer to baseline value after
 *                            calibration. Calling function are responsible for 
 *                            allocating memory space for this pointer. 
 *
 * Global Data  : 
 *                        - None.
 *                        
 * This function MUST be run before the Xcycle tool can be used. This 
 * function must be run immediately when the OS boots up with no other 
 * addition programs running. 
 * Addition note :     This API will measure the time needed to perform
 * a fix amount of CPU instructions (~ 1 second worth of loops) as a 
 * highest priority task and with interrupt disabled. The time measured
 * is known as the baseline - interpreted as the shortest time 
 * needed to complete the amount of CPU instructions. The baseline is 
 * returned as unit of time in 66Mhz clock tick.  
 *
 * @return 
 *      - IX_PERFPROF_ACC_STATUS_SUCCESS - successful run, result is returned
 *      - IX_PERFPROF_ACC_STATUS_XCYCLE_PRIORITY_SET_FAIL - failed to change
 *         task priority
 *      - IX_PERFPROF_ACC_STATUS_XCYCLE_PRIORITY_RESTORE_FAIL - failed to
 *         restore task priority
 *      - IX_PERFPROF_ACC_STATUS_ANOTHER_UTIL_IN_PROGRESS - another utility 
 *         is running 
 *      - IX_PERFPROF_ACC_STATUS_XCYCLE_MEASUREMENT_IN_PROGRESS  - Xcycle 
 *      tool has already started
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */
PUBLIC IxPerfProfAccStatus
ixPerfProfAccXcycleBaselineRun(
      UINT32 *numBaselineCycle); 

/**
 * @ingroup IxPerfProfAcc
 * 
 * @fn ixPerfProfAccXcycleStart(
            UINT32 numMeasurementsRequested);
 *
 * @brief Start the measurement
 *
 * @param  numMeasurementsRequested UINT32 [in] - number of measurements 
 *                                        to perform. Value can be 0 to  
 *                                        IX_PERFPROF_ACC_XCYCLE_MAX_NUM_OF_MEASUREMENTS. 
 *                                        0 indicate continuous measurement. 
 *
 * Global Data  : 
 *                        - None.
 *                        
 * 
 * Start the measurements immediately. 
 * numMeasurementsRequested specifies number of measurements to run. 
 * If numMeasurementsRequested is set to 0, the measurement will
 * be performed continuously until IxPerfProfAccXcycleStop()
 * is called.  
 * It is estimated that 1 measurement takes approximately 1 second during 
 * low CPU utilization, therefore 128 measurement takes approximately 128 sec.
 * When CPU utilization is high, the measurement will take longer.
 * This function spawn a task the perform the measurement and returns. 
 * The measurement may continue even if this function returns. 
 *
 * IMPORTANT: Under heavy CPU utilization, the task spawn by this 
 * function may starve and fail to respond to stop command. User 
 * may need to kill the task manually in this case.  
 *
 * There are only IX_PERFPROF_ACC_XCYCLE_MAX_NUM_OF_MEASUREMENTS 
 * storage available so storing is wrapped around if measurements are  
 * more than IX_PERFPROF_ACC_XCYCLE_MAX_NUM_OF_MEASUREMENTS.
 *
 *
 * @return 
 *      - IX_PERFPROF_ACC_STATUS_SUCCESS - successful start, a thread is created 
 *       in the background to perform measurement. 
 *      - IX_PERFPROF_ACC_STATUS_XCYCLE_PRIORITY_SET_FAIL - failed to set
 *         task priority
 *      - IX_PERFPROF_ACC_STATUS_XCYCLE_THREAD_CREATE_FAIL - failed to create
 *       thread to perform measurement.
 *      - IX_PERFPROF_ACC_STATUS_XCYCLE_NO_BASELINE - baseline is not available 
 *      - IX_PERFPROF_ACC_STATUS_XCYCLE_MEASUREMENT_REQUEST_OUT_OF_RANGE -
 *       value is larger than IX_PERFPROF_ACC_XCYCLE_MAX_NUM_OF_MEASUREMENTS
 *      - IX_PERFPROF_ACC_STATUS_XCYCLE_MEASUREMENT_IN_PROGRESS   - Xcycle tool 
 *       has already started
 *      - IX_PERFPROF_ACC_STATUS_ANOTHER_UTIL_IN_PROGRESS - another utility is 
 *         running
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */
PUBLIC IxPerfProfAccStatus
ixPerfProfAccXcycleStart (
      UINT32 numMeasurementsRequested);  

/**
 * @ingroup IxPerfProfAcc
 * 
 * @fn ixPerfProfAccXcycleStop(void); 
 *
 * @brief Stop the Xcycle measurement
 *
 * @param None
 *
 * Global Data  : 
 *                        - None.
 *                        
 * Stop Xcycle measurements immediately. If the measurements have stopped 
 * or not started, return IX_PERFPROF_STATUS_XCYCLE_MEASUREMENT_NOT_RUNNING. 
 * Note: This function does not stop measurement cold. The measurement thread 
 * may need a few seconds to complete the last measurement. User needs to use
 * ixPerfProfAccXcycleInProgress() to determine if measurement is indeed
 * completed. 
 *
 * @return 
 *      - IX_PERFPROF_ACC_STATUS_SUCCESS - successful measurement is stopped
 *      - IX_PERFPROF_STATUS_XCYCLE_MEASUREMENT_NOT_RUNNING - no measurement running
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */
PUBLIC IxPerfProfAccStatus
ixPerfProfAccXcycleStop(void); 

/**
 * @ingroup IxPerfProfAcc
 * 
 * @fn ixPerfProfAccXcycleResultsGet(
      IxPerfProfAccXcycleResults *xcycleResult ) 
 *
 * @brief Get the results of Xcycle measurement
 *
 * @param *xcycleResult @ref IxPerfProfAccXcycleResults [out] - Pointer to 
 *                      results of last measurements. Calling function are 
 *                      responsible for allocating memory space for this pointer.
 *
 * Global Data  : 
 *                        - None.
 *                        
 * Retrieve the results of last measurement. User should use 
 * ixPerfProfAccXcycleInProgress() to check if measurement is completed 
 * before getting the results.
 *
 * @return 
 *      - IX_PERFPROF_ACC_STATUS_SUCCESS - successful 
 *      - IX_PERFPROF_ACC_STATUS_FAIL - result is not complete. 
 *      - IX_PERFPROF_ACC_STATUS_XCYCLE_NO_BASELINE - baseline is performed
 *      - IX_PERFPROF_ACC_STATUS_XCYCLE_MEASUREMENT_IN_PROGRESS  - Xcycle 
 *         tool is still running
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */
PUBLIC IxPerfProfAccStatus
ixPerfProfAccXcycleResultsGet (
    IxPerfProfAccXcycleResults *xcycleResult);  

/**
 * @ingroup IxPerfProfAcc
 * 
 * @fn ixPerfProfAccXcycleInProgress (void)
 *
 * @brief Check if Xcycle is running
 *
 * @param None
 * Global Data  : 
 *                        - None.
 *                        
 * Check if Xcycle measuring task is running. 
 *
 * @return 
 *      - TRUE - Xcycle is running  
 *      - FALSE - Xcycle is not running  
 *              
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */
PUBLIC BOOL
ixPerfProfAccXcycleInProgress(void); 

#ifdef __linux
/**
 * @ingroup IxPerfProfAcc
 *
 * @fn ixPerfProfAccXscalePmuTimeSampCreateProcFile 
 *
 * @brief Enables proc file to call module function
 *
 * @param None
 *
 * Global Data  :
 *                        - None.
 *
 * This function is declared globally to enable /proc directory system to call
 * and execute the function when the registered file is called. This function is not meant to 
 * be called by the user.
 *
 * @return
 *      - Length of data written to file.
 *
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */
int
ixPerfProfAccXscalePmuTimeSampCreateProcFile (char *buf, char **start, off_t offset,
                                      int count, int *eof, void *data);

/**
 * @ingroup IxPerfProfAcc
 *
 * @fn ixPerfProfAccXscalePmuEventSampCreateProcFile 
 *
 * @brief Enables proc file to call module function 
 *
 * @param None
 *
 * Global Data  :
 *                        - None.
 *
 * This function is declared globally to enable /proc directory system to call
 * and execute the function when the registered file is called. This function is not meant to 
 * be called by the user.
 *
 * @return
 *      - Length of data written to file.
 *
 * @li   Reentrant    : no
 * @li   ISR Callable : no
 *
 */
int
ixPerfProfAccXscalePmuEventSampCreateProcFile (char *buf, char **start, off_t offset,
                                      int count, int *eof, void *data);


#endif /* ifdef __linux */

#endif /* ndef IXPERFPROFACC_H */

/**
 *@} defgroup IxPerfProfAcc 
 */



Generated by  Doxygen 1.6.0   Back to index