• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file opd_perfmon.h
3  * perfmonctl() handling
4  *
5  * @remark Copyright 2003 OProfile authors
6  * @remark Read the file COPYING
7  *
8  * @author John Levon
9  */
10 
11 #ifndef OPD_PERFMON_H
12 #define OPD_PERFMON_H
13 
14 #ifdef __ia64__
15 
16 #include <stdlib.h>
17 
18 void perfmon_init(void);
19 void perfmon_exit(void);
20 void perfmon_start(void);
21 void perfmon_stop(void);
22 
23 /* The following is from asm/perfmon.h. When it's installed on
24  * enough boxes, we can remove this and include the platform
25  * perfmon.h
26  */
27 
28 typedef unsigned char pfm_uuid_t[16];	/* custom sampling buffer identifier type */
29 
30 /*
31  * Request structure used to define a context
32  */
33 typedef struct {
34 	pfm_uuid_t     ctx_smpl_buf_id;	 /* which buffer format to use (if needed) */
35 	unsigned long  ctx_flags;	 /* noblock/block */
36 	unsigned short ctx_nextra_sets;	 /* number of extra event sets (you always get 1) */
37 	unsigned short ctx_reserved1;	 /* for future use */
38 	int	       ctx_fd;		 /* return arg: unique identification for context */
39 	void	       *ctx_smpl_vaddr;	 /* return arg: virtual address of sampling buffer, is used */
40 	unsigned long  ctx_reserved2[11];/* for future use */
41 } pfarg_context_t;
42 
43 /*
44  * Request structure used to write/read a PMC or PMD
45  */
46 typedef struct {
47 	unsigned int	reg_num;	   /* which register */
48 	unsigned short	reg_set;	   /* event set for this register */
49 	unsigned short	reg_reserved1;	   /* for future use */
50 
51 	unsigned long	reg_value;	   /* initial pmc/pmd value */
52 	unsigned long	reg_flags;	   /* input: pmc/pmd flags, return: reg error */
53 
54 	unsigned long	reg_long_reset;	   /* reset after buffer overflow notification */
55 	unsigned long	reg_short_reset;   /* reset after counter overflow */
56 
57 	unsigned long	reg_reset_pmds[4]; /* which other counters to reset on overflow */
58 	unsigned long	reg_random_seed;   /* seed value when randomization is used */
59 	unsigned long	reg_random_mask;   /* bitmask used to limit random value */
60 	unsigned long   reg_last_reset_val;/* return: PMD last reset value */
61 
62 	unsigned long	reg_smpl_pmds[4];  /* which pmds are accessed when PMC overflows */
63 	unsigned long	reg_smpl_eventid;  /* opaque sampling event identifier */
64 
65 	unsigned long   reg_reserved2[3];   /* for future use */
66 } pfarg_reg_t;
67 
68 typedef struct {
69 	pid_t		load_pid;	   /* process to load the context into */
70 	unsigned short	load_set;	   /* first event set to load */
71 	unsigned short	load_reserved1;	   /* for future use */
72 	unsigned long	load_reserved2[3]; /* for future use */
73 } pfarg_load_t;
74 
75 #define PFM_WRITE_PMCS      0x01
76 #define PFM_WRITE_PMDS      0x02
77 #define PFM_STOP            0x04
78 #define PFM_START           0x05
79 #define PFM_CREATE_CONTEXT  0x08
80 #define PFM_LOAD_CONTEXT    0x10
81 #define PFM_FL_SYSTEM_WIDE  0x02
82 
83 #else
84 
perfmon_init(void)85 void perfmon_init(void)
86 {
87 }
88 
89 
perfmon_exit(void)90 void perfmon_exit(void)
91 {
92 }
93 
94 
perfmon_start(void)95 void perfmon_start(void)
96 {
97 }
98 
99 
perfmon_stop(void)100 void perfmon_stop(void)
101 {
102 }
103 
104 #endif /* __ia64__ */
105 
106 #endif /* OPD_PERFMON_H */
107