 43e40f25d2
			
		
	
	
	43e40f25d2
	
	
	
		
			
			Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Michael Kerrisk <mtk.manpages@gmail.com> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Acked-by: Dave Jones <davej@redhat.com>
		
			
				
	
	
		
			83 lines
		
	
	
	
		
			3.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
	
		
			3.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2002-2003 Hewlett-Packard Co
 | |
|  *               Stephane Eranian <eranian@hpl.hp.com>
 | |
|  *
 | |
|  * This file implements the default sampling buffer format
 | |
|  * for Linux/ia64 perfmon subsystem.
 | |
|  */
 | |
| #ifndef __PERFMON_DEFAULT_SMPL_H__
 | |
| #define __PERFMON_DEFAULT_SMPL_H__ 1
 | |
| 
 | |
| #define PFM_DEFAULT_SMPL_UUID { \
 | |
| 		0x4d, 0x72, 0xbe, 0xc0, 0x06, 0x64, 0x41, 0x43, 0x82, 0xb4, 0xd3, 0xfd, 0x27, 0x24, 0x3c, 0x97}
 | |
| 
 | |
| /*
 | |
|  * format specific parameters (passed at context creation)
 | |
|  */
 | |
| typedef struct {
 | |
| 	unsigned long buf_size;		/* size of the buffer in bytes */
 | |
| 	unsigned int  flags;		/* buffer specific flags */
 | |
| 	unsigned int  res1;		/* for future use */
 | |
| 	unsigned long reserved[2];	/* for future use */
 | |
| } pfm_default_smpl_arg_t;
 | |
| 
 | |
| /*
 | |
|  * combined context+format specific structure. Can be passed
 | |
|  * to PFM_CONTEXT_CREATE
 | |
|  */
 | |
| typedef struct {
 | |
| 	pfarg_context_t		ctx_arg;
 | |
| 	pfm_default_smpl_arg_t	buf_arg;
 | |
| } pfm_default_smpl_ctx_arg_t;
 | |
| 
 | |
| /*
 | |
|  * This header is at the beginning of the sampling buffer returned to the user.
 | |
|  * It is directly followed by the first record.
 | |
|  */
 | |
| typedef struct {
 | |
| 	unsigned long	hdr_count;		/* how many valid entries */
 | |
| 	unsigned long	hdr_cur_offs;		/* current offset from top of buffer */
 | |
| 	unsigned long	hdr_reserved2;		/* reserved for future use */
 | |
| 
 | |
| 	unsigned long	hdr_overflows;		/* how many times the buffer overflowed */
 | |
| 	unsigned long   hdr_buf_size;		/* how many bytes in the buffer */
 | |
| 
 | |
| 	unsigned int	hdr_version;		/* contains perfmon version (smpl format diffs) */
 | |
| 	unsigned int	hdr_reserved1;		/* for future use */
 | |
| 	unsigned long	hdr_reserved[10];	/* for future use */
 | |
| } pfm_default_smpl_hdr_t;
 | |
| 
 | |
| /*
 | |
|  * Entry header in the sampling buffer.  The header is directly followed
 | |
|  * with the values of the PMD registers of interest saved in increasing 
 | |
|  * index order: PMD4, PMD5, and so on. How many PMDs are present depends 
 | |
|  * on how the session was programmed.
 | |
|  *
 | |
|  * In the case where multiple counters overflow at the same time, multiple
 | |
|  * entries are written consecutively.
 | |
|  *
 | |
|  * last_reset_value member indicates the initial value of the overflowed PMD. 
 | |
|  */
 | |
| typedef struct {
 | |
|         int             pid;                    /* thread id (for NPTL, this is gettid()) */
 | |
|         unsigned char   reserved1[3];           /* reserved for future use */
 | |
|         unsigned char   ovfl_pmd;               /* index of overflowed PMD */
 | |
| 
 | |
|         unsigned long   last_reset_val;         /* initial value of overflowed PMD */
 | |
|         unsigned long   ip;                     /* where did the overflow interrupt happened  */
 | |
|         unsigned long   tstamp;                 /* ar.itc when entering perfmon intr. handler */
 | |
| 
 | |
|         unsigned short  cpu;                    /* cpu on which the overflow occurred */
 | |
|         unsigned short  set;                    /* event set active when overflow occurred   */
 | |
|         int    		tgid;              	/* thread group id (for NPTL, this is getpid()) */
 | |
| } pfm_default_smpl_entry_t;
 | |
| 
 | |
| #define PFM_DEFAULT_MAX_PMDS		64 /* how many pmds supported by data structures (sizeof(unsigned long) */
 | |
| #define PFM_DEFAULT_MAX_ENTRY_SIZE	(sizeof(pfm_default_smpl_entry_t)+(sizeof(unsigned long)*PFM_DEFAULT_MAX_PMDS))
 | |
| #define PFM_DEFAULT_SMPL_MIN_BUF_SIZE	(sizeof(pfm_default_smpl_hdr_t)+PFM_DEFAULT_MAX_ENTRY_SIZE)
 | |
| 
 | |
| #define PFM_DEFAULT_SMPL_VERSION_MAJ	2U
 | |
| #define PFM_DEFAULT_SMPL_VERSION_MIN	0U
 | |
| #define PFM_DEFAULT_SMPL_VERSION	(((PFM_DEFAULT_SMPL_VERSION_MAJ&0xffff)<<16)|(PFM_DEFAULT_SMPL_VERSION_MIN & 0xffff))
 | |
| 
 | |
| #endif /* __PERFMON_DEFAULT_SMPL_H__ */
 |