This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / include / xen / interface / trace.h
1 /******************************************************************************
2  * include/public/trace.h
3  * 
4  * Mark Williamson, (C) 2004 Intel Research Cambridge
5  * Copyright (C) 2005 Bin Ren
6  */
7
8 #ifndef __XEN_PUBLIC_TRACE_H__
9 #define __XEN_PUBLIC_TRACE_H__
10
11 /* Trace classes */
12 #define TRC_CLS_SHIFT 16
13 #define TRC_GEN     0x0001f000    /* General trace            */
14 #define TRC_SCHED   0x0002f000    /* Xen Scheduler trace      */
15 #define TRC_DOM0OP  0x0004f000    /* Xen DOM0 operation trace */
16 #define TRC_VMX     0x0008f000    /* Xen VMX trace            */
17 #define TRC_MEM     0x000af000    /* Xen memory trace         */
18 #define TRC_ALL     0xfffff000
19
20 /* Trace subclasses */
21 #define TRC_SUBCLS_SHIFT 12
22 /* trace subclasses for VMX */
23 #define TRC_VMXEXIT  0x00081000   /* VMX exit trace            */
24 #define TRC_VMXTIMER 0x00082000   /* VMX timer trace           */
25 #define TRC_VMXINT   0x00084000   /* VMX interrupt trace       */
26 #define TRC_VMXIO    0x00088000   /* VMX io emulation trace  */
27
28 /* Trace events per class */
29 #define TRC_LOST_RECORDS        (TRC_GEN + 1)
30
31 #define TRC_SCHED_DOM_ADD       (TRC_SCHED +  1)
32 #define TRC_SCHED_DOM_REM       (TRC_SCHED +  2)
33 #define TRC_SCHED_SLEEP         (TRC_SCHED +  3)
34 #define TRC_SCHED_WAKE          (TRC_SCHED +  4)
35 #define TRC_SCHED_YIELD         (TRC_SCHED +  5)
36 #define TRC_SCHED_BLOCK         (TRC_SCHED +  6)
37 #define TRC_SCHED_SHUTDOWN      (TRC_SCHED +  7)
38 #define TRC_SCHED_CTL           (TRC_SCHED +  8)
39 #define TRC_SCHED_ADJDOM        (TRC_SCHED +  9)
40 #define TRC_SCHED_SWITCH        (TRC_SCHED + 10)
41 #define TRC_SCHED_S_TIMER_FN    (TRC_SCHED + 11)
42 #define TRC_SCHED_T_TIMER_FN    (TRC_SCHED + 12)
43 #define TRC_SCHED_DOM_TIMER_FN  (TRC_SCHED + 13)
44 #define TRC_SCHED_SWITCH_INFPREV (TRC_SCHED + 14)
45 #define TRC_SCHED_SWITCH_INFNEXT (TRC_SCHED + 15)
46
47 #define TRC_MEM_PAGE_GRANT_MAP      (TRC_MEM + 1)
48 #define TRC_MEM_PAGE_GRANT_UNMAP    (TRC_MEM + 2)
49 #define TRC_MEM_PAGE_GRANT_TRANSFER (TRC_MEM + 3)
50
51 /* trace events per subclass */
52 #define TRC_VMX_VMEXIT          (TRC_VMXEXIT + 1)
53 #define TRC_VMX_VMENTRY         (TRC_VMXEXIT + 2)
54
55 #define TRC_VMX_TIMER_INTR      (TRC_VMXTIMER + 1)
56
57 #define TRC_VMX_INT             (TRC_VMXINT + 1)
58
59
60 /* This structure represents a single trace buffer record. */
61 struct t_rec {
62     uint64_t cycles;          /* cycle counter timestamp */
63     uint32_t event;           /* event ID                */
64     unsigned long data[5];    /* event data items        */
65 };
66
67 /*
68  * This structure contains the metadata for a single trace buffer.  The head
69  * field, indexes into an array of struct t_rec's.
70  */
71 struct t_buf {
72     uint32_t cons;      /* Next item to be consumed by control tools. */
73     uint32_t prod;      /* Next item to be produced by Xen.           */
74     /* 'nr_recs' records follow immediately after the meta-data header.    */
75 };
76
77 #endif /* __XEN_PUBLIC_TRACE_H__ */
78
79 /*
80  * Local variables:
81  * mode: C
82  * c-set-style: "BSD"
83  * c-basic-offset: 4
84  * tab-width: 4
85  * indent-tabs-mode: nil
86  * End:
87  */