diff options
Diffstat (limited to 'include/trace/events')
-rw-r--r-- | include/trace/events/kvm.h | 1 | ||||
-rw-r--r-- | include/trace/events/lock.h | 55 | ||||
-rw-r--r-- | include/trace/events/module.h | 18 | ||||
-rw-r--r-- | include/trace/events/napi.h | 10 | ||||
-rw-r--r-- | include/trace/events/sched.h | 32 | ||||
-rw-r--r-- | include/trace/events/scsi.h | 345 | ||||
-rw-r--r-- | include/trace/events/signal.h | 52 |
7 files changed, 413 insertions, 100 deletions
diff --git a/include/trace/events/kvm.h b/include/trace/events/kvm.h index b17d49dfc3ef..6dd3a51ab1cb 100644 --- a/include/trace/events/kvm.h +++ b/include/trace/events/kvm.h | |||
@@ -5,7 +5,6 @@ | |||
5 | 5 | ||
6 | #undef TRACE_SYSTEM | 6 | #undef TRACE_SYSTEM |
7 | #define TRACE_SYSTEM kvm | 7 | #define TRACE_SYSTEM kvm |
8 | #define TRACE_INCLUDE_FILE kvm | ||
9 | 8 | ||
10 | #if defined(__KVM_HAVE_IOAPIC) | 9 | #if defined(__KVM_HAVE_IOAPIC) |
11 | TRACE_EVENT(kvm_set_irq, | 10 | TRACE_EVENT(kvm_set_irq, |
diff --git a/include/trace/events/lock.h b/include/trace/events/lock.h index 5c1dcfc16c60..2821b86de63b 100644 --- a/include/trace/events/lock.h +++ b/include/trace/events/lock.h | |||
@@ -35,15 +35,15 @@ TRACE_EVENT(lock_acquire, | |||
35 | __get_str(name)) | 35 | __get_str(name)) |
36 | ); | 36 | ); |
37 | 37 | ||
38 | TRACE_EVENT(lock_release, | 38 | DECLARE_EVENT_CLASS(lock, |
39 | 39 | ||
40 | TP_PROTO(struct lockdep_map *lock, int nested, unsigned long ip), | 40 | TP_PROTO(struct lockdep_map *lock, unsigned long ip), |
41 | 41 | ||
42 | TP_ARGS(lock, nested, ip), | 42 | TP_ARGS(lock, ip), |
43 | 43 | ||
44 | TP_STRUCT__entry( | 44 | TP_STRUCT__entry( |
45 | __string(name, lock->name) | 45 | __string( name, lock->name ) |
46 | __field(void *, lockdep_addr) | 46 | __field( void *, lockdep_addr ) |
47 | ), | 47 | ), |
48 | 48 | ||
49 | TP_fast_assign( | 49 | TP_fast_assign( |
@@ -51,51 +51,30 @@ TRACE_EVENT(lock_release, | |||
51 | __entry->lockdep_addr = lock; | 51 | __entry->lockdep_addr = lock; |
52 | ), | 52 | ), |
53 | 53 | ||
54 | TP_printk("%p %s", | 54 | TP_printk("%p %s", __entry->lockdep_addr, __get_str(name)) |
55 | __entry->lockdep_addr, __get_str(name)) | ||
56 | ); | 55 | ); |
57 | 56 | ||
58 | #ifdef CONFIG_LOCK_STAT | 57 | DEFINE_EVENT(lock, lock_release, |
59 | |||
60 | TRACE_EVENT(lock_contended, | ||
61 | 58 | ||
62 | TP_PROTO(struct lockdep_map *lock, unsigned long ip), | 59 | TP_PROTO(struct lockdep_map *lock, unsigned long ip), |
63 | 60 | ||
64 | TP_ARGS(lock, ip), | 61 | TP_ARGS(lock, ip) |
62 | ); | ||
65 | 63 | ||
66 | TP_STRUCT__entry( | 64 | #ifdef CONFIG_LOCK_STAT |
67 | __string(name, lock->name) | ||
68 | __field(void *, lockdep_addr) | ||
69 | ), | ||
70 | 65 | ||
71 | TP_fast_assign( | 66 | DEFINE_EVENT(lock, lock_contended, |
72 | __assign_str(name, lock->name); | ||
73 | __entry->lockdep_addr = lock; | ||
74 | ), | ||
75 | 67 | ||
76 | TP_printk("%p %s", | 68 | TP_PROTO(struct lockdep_map *lock, unsigned long ip), |
77 | __entry->lockdep_addr, __get_str(name)) | ||
78 | ); | ||
79 | 69 | ||
80 | TRACE_EVENT(lock_acquired, | 70 | TP_ARGS(lock, ip) |
81 | TP_PROTO(struct lockdep_map *lock, unsigned long ip, s64 waittime), | 71 | ); |
82 | 72 | ||
83 | TP_ARGS(lock, ip, waittime), | 73 | DEFINE_EVENT(lock, lock_acquired, |
84 | 74 | ||
85 | TP_STRUCT__entry( | 75 | TP_PROTO(struct lockdep_map *lock, unsigned long ip), |
86 | __string(name, lock->name) | ||
87 | __field(s64, wait_nsec) | ||
88 | __field(void *, lockdep_addr) | ||
89 | ), | ||
90 | 76 | ||
91 | TP_fast_assign( | 77 | TP_ARGS(lock, ip) |
92 | __assign_str(name, lock->name); | ||
93 | __entry->wait_nsec = waittime; | ||
94 | __entry->lockdep_addr = lock; | ||
95 | ), | ||
96 | TP_printk("%p %s (%llu ns)", __entry->lockdep_addr, | ||
97 | __get_str(name), | ||
98 | __entry->wait_nsec) | ||
99 | ); | 78 | ); |
100 | 79 | ||
101 | #endif | 80 | #endif |
diff --git a/include/trace/events/module.h b/include/trace/events/module.h index 4b0f48ba16a6..c7bb2f0482fe 100644 --- a/include/trace/events/module.h +++ b/include/trace/events/module.h | |||
@@ -51,11 +51,14 @@ TRACE_EVENT(module_free, | |||
51 | TP_printk("%s", __get_str(name)) | 51 | TP_printk("%s", __get_str(name)) |
52 | ); | 52 | ); |
53 | 53 | ||
54 | #ifdef CONFIG_MODULE_UNLOAD | ||
55 | /* trace_module_get/put are only used if CONFIG_MODULE_UNLOAD is defined */ | ||
56 | |||
54 | DECLARE_EVENT_CLASS(module_refcnt, | 57 | DECLARE_EVENT_CLASS(module_refcnt, |
55 | 58 | ||
56 | TP_PROTO(struct module *mod, unsigned long ip, int refcnt), | 59 | TP_PROTO(struct module *mod, unsigned long ip), |
57 | 60 | ||
58 | TP_ARGS(mod, ip, refcnt), | 61 | TP_ARGS(mod, ip), |
59 | 62 | ||
60 | TP_STRUCT__entry( | 63 | TP_STRUCT__entry( |
61 | __field( unsigned long, ip ) | 64 | __field( unsigned long, ip ) |
@@ -65,7 +68,7 @@ DECLARE_EVENT_CLASS(module_refcnt, | |||
65 | 68 | ||
66 | TP_fast_assign( | 69 | TP_fast_assign( |
67 | __entry->ip = ip; | 70 | __entry->ip = ip; |
68 | __entry->refcnt = refcnt; | 71 | __entry->refcnt = __this_cpu_read(mod->refptr->incs) + __this_cpu_read(mod->refptr->decs); |
69 | __assign_str(name, mod->name); | 72 | __assign_str(name, mod->name); |
70 | ), | 73 | ), |
71 | 74 | ||
@@ -75,17 +78,18 @@ DECLARE_EVENT_CLASS(module_refcnt, | |||
75 | 78 | ||
76 | DEFINE_EVENT(module_refcnt, module_get, | 79 | DEFINE_EVENT(module_refcnt, module_get, |
77 | 80 | ||
78 | TP_PROTO(struct module *mod, unsigned long ip, int refcnt), | 81 | TP_PROTO(struct module *mod, unsigned long ip), |
79 | 82 | ||
80 | TP_ARGS(mod, ip, refcnt) | 83 | TP_ARGS(mod, ip) |
81 | ); | 84 | ); |
82 | 85 | ||
83 | DEFINE_EVENT(module_refcnt, module_put, | 86 | DEFINE_EVENT(module_refcnt, module_put, |
84 | 87 | ||
85 | TP_PROTO(struct module *mod, unsigned long ip, int refcnt), | 88 | TP_PROTO(struct module *mod, unsigned long ip), |
86 | 89 | ||
87 | TP_ARGS(mod, ip, refcnt) | 90 | TP_ARGS(mod, ip) |
88 | ); | 91 | ); |
92 | #endif /* CONFIG_MODULE_UNLOAD */ | ||
89 | 93 | ||
90 | TRACE_EVENT(module_request, | 94 | TRACE_EVENT(module_request, |
91 | 95 | ||
diff --git a/include/trace/events/napi.h b/include/trace/events/napi.h index a8989c4547e7..188deca2f3c7 100644 --- a/include/trace/events/napi.h +++ b/include/trace/events/napi.h | |||
@@ -1,4 +1,7 @@ | |||
1 | #ifndef _TRACE_NAPI_H_ | 1 | #undef TRACE_SYSTEM |
2 | #define TRACE_SYSTEM napi | ||
3 | |||
4 | #if !defined(_TRACE_NAPI_H) || defined(TRACE_HEADER_MULTI_READ) | ||
2 | #define _TRACE_NAPI_H_ | 5 | #define _TRACE_NAPI_H_ |
3 | 6 | ||
4 | #include <linux/netdevice.h> | 7 | #include <linux/netdevice.h> |
@@ -8,4 +11,7 @@ DECLARE_TRACE(napi_poll, | |||
8 | TP_PROTO(struct napi_struct *napi), | 11 | TP_PROTO(struct napi_struct *napi), |
9 | TP_ARGS(napi)); | 12 | TP_ARGS(napi)); |
10 | 13 | ||
11 | #endif | 14 | #endif /* _TRACE_NAPI_H_ */ |
15 | |||
16 | /* This part must be outside protection */ | ||
17 | #include <trace/define_trace.h> | ||
diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h index cfceb0b73e20..4f733ecea46e 100644 --- a/include/trace/events/sched.h +++ b/include/trace/events/sched.h | |||
@@ -51,15 +51,12 @@ TRACE_EVENT(sched_kthread_stop_ret, | |||
51 | 51 | ||
52 | /* | 52 | /* |
53 | * Tracepoint for waiting on task to unschedule: | 53 | * Tracepoint for waiting on task to unschedule: |
54 | * | ||
55 | * (NOTE: the 'rq' argument is not used by generic trace events, | ||
56 | * but used by the latency tracer plugin. ) | ||
57 | */ | 54 | */ |
58 | TRACE_EVENT(sched_wait_task, | 55 | TRACE_EVENT(sched_wait_task, |
59 | 56 | ||
60 | TP_PROTO(struct rq *rq, struct task_struct *p), | 57 | TP_PROTO(struct task_struct *p), |
61 | 58 | ||
62 | TP_ARGS(rq, p), | 59 | TP_ARGS(p), |
63 | 60 | ||
64 | TP_STRUCT__entry( | 61 | TP_STRUCT__entry( |
65 | __array( char, comm, TASK_COMM_LEN ) | 62 | __array( char, comm, TASK_COMM_LEN ) |
@@ -79,15 +76,12 @@ TRACE_EVENT(sched_wait_task, | |||
79 | 76 | ||
80 | /* | 77 | /* |
81 | * Tracepoint for waking up a task: | 78 | * Tracepoint for waking up a task: |
82 | * | ||
83 | * (NOTE: the 'rq' argument is not used by generic trace events, | ||
84 | * but used by the latency tracer plugin. ) | ||
85 | */ | 79 | */ |
86 | DECLARE_EVENT_CLASS(sched_wakeup_template, | 80 | DECLARE_EVENT_CLASS(sched_wakeup_template, |
87 | 81 | ||
88 | TP_PROTO(struct rq *rq, struct task_struct *p, int success), | 82 | TP_PROTO(struct task_struct *p, int success), |
89 | 83 | ||
90 | TP_ARGS(rq, p, success), | 84 | TP_ARGS(p, success), |
91 | 85 | ||
92 | TP_STRUCT__entry( | 86 | TP_STRUCT__entry( |
93 | __array( char, comm, TASK_COMM_LEN ) | 87 | __array( char, comm, TASK_COMM_LEN ) |
@@ -111,31 +105,25 @@ DECLARE_EVENT_CLASS(sched_wakeup_template, | |||
111 | ); | 105 | ); |
112 | 106 | ||
113 | DEFINE_EVENT(sched_wakeup_template, sched_wakeup, | 107 | DEFINE_EVENT(sched_wakeup_template, sched_wakeup, |
114 | TP_PROTO(struct rq *rq, struct task_struct *p, int success), | 108 | TP_PROTO(struct task_struct *p, int success), |
115 | TP_ARGS(rq, p, success)); | 109 | TP_ARGS(p, success)); |
116 | 110 | ||
117 | /* | 111 | /* |
118 | * Tracepoint for waking up a new task: | 112 | * Tracepoint for waking up a new task: |
119 | * | ||
120 | * (NOTE: the 'rq' argument is not used by generic trace events, | ||
121 | * but used by the latency tracer plugin. ) | ||
122 | */ | 113 | */ |
123 | DEFINE_EVENT(sched_wakeup_template, sched_wakeup_new, | 114 | DEFINE_EVENT(sched_wakeup_template, sched_wakeup_new, |
124 | TP_PROTO(struct rq *rq, struct task_struct *p, int success), | 115 | TP_PROTO(struct task_struct *p, int success), |
125 | TP_ARGS(rq, p, success)); | 116 | TP_ARGS(p, success)); |
126 | 117 | ||
127 | /* | 118 | /* |
128 | * Tracepoint for task switches, performed by the scheduler: | 119 | * Tracepoint for task switches, performed by the scheduler: |
129 | * | ||
130 | * (NOTE: the 'rq' argument is not used by generic trace events, | ||
131 | * but used by the latency tracer plugin. ) | ||
132 | */ | 120 | */ |
133 | TRACE_EVENT(sched_switch, | 121 | TRACE_EVENT(sched_switch, |
134 | 122 | ||
135 | TP_PROTO(struct rq *rq, struct task_struct *prev, | 123 | TP_PROTO(struct task_struct *prev, |
136 | struct task_struct *next), | 124 | struct task_struct *next), |
137 | 125 | ||
138 | TP_ARGS(rq, prev, next), | 126 | TP_ARGS(prev, next), |
139 | 127 | ||
140 | TP_STRUCT__entry( | 128 | TP_STRUCT__entry( |
141 | __array( char, prev_comm, TASK_COMM_LEN ) | 129 | __array( char, prev_comm, TASK_COMM_LEN ) |
diff --git a/include/trace/events/scsi.h b/include/trace/events/scsi.h new file mode 100644 index 000000000000..25fbefdf2f2e --- /dev/null +++ b/include/trace/events/scsi.h | |||
@@ -0,0 +1,345 @@ | |||
1 | #undef TRACE_SYSTEM | ||
2 | #define TRACE_SYSTEM scsi | ||
3 | |||
4 | #if !defined(_TRACE_SCSI_H) || defined(TRACE_HEADER_MULTI_READ) | ||
5 | #define _TRACE_SCSI_H | ||
6 | |||
7 | #include <scsi/scsi_cmnd.h> | ||
8 | #include <scsi/scsi_host.h> | ||
9 | #include <linux/tracepoint.h> | ||
10 | #include <linux/trace_seq.h> | ||
11 | |||
12 | #define scsi_opcode_name(opcode) { opcode, #opcode } | ||
13 | #define show_opcode_name(val) \ | ||
14 | __print_symbolic(val, \ | ||
15 | scsi_opcode_name(TEST_UNIT_READY), \ | ||
16 | scsi_opcode_name(REZERO_UNIT), \ | ||
17 | scsi_opcode_name(REQUEST_SENSE), \ | ||
18 | scsi_opcode_name(FORMAT_UNIT), \ | ||
19 | scsi_opcode_name(READ_BLOCK_LIMITS), \ | ||
20 | scsi_opcode_name(REASSIGN_BLOCKS), \ | ||
21 | scsi_opcode_name(INITIALIZE_ELEMENT_STATUS), \ | ||
22 | scsi_opcode_name(READ_6), \ | ||
23 | scsi_opcode_name(WRITE_6), \ | ||
24 | scsi_opcode_name(SEEK_6), \ | ||
25 | scsi_opcode_name(READ_REVERSE), \ | ||
26 | scsi_opcode_name(WRITE_FILEMARKS), \ | ||
27 | scsi_opcode_name(SPACE), \ | ||
28 | scsi_opcode_name(INQUIRY), \ | ||
29 | scsi_opcode_name(RECOVER_BUFFERED_DATA), \ | ||
30 | scsi_opcode_name(MODE_SELECT), \ | ||
31 | scsi_opcode_name(RESERVE), \ | ||
32 | scsi_opcode_name(RELEASE), \ | ||
33 | scsi_opcode_name(COPY), \ | ||
34 | scsi_opcode_name(ERASE), \ | ||
35 | scsi_opcode_name(MODE_SENSE), \ | ||
36 | scsi_opcode_name(START_STOP), \ | ||
37 | scsi_opcode_name(RECEIVE_DIAGNOSTIC), \ | ||
38 | scsi_opcode_name(SEND_DIAGNOSTIC), \ | ||
39 | scsi_opcode_name(ALLOW_MEDIUM_REMOVAL), \ | ||
40 | scsi_opcode_name(SET_WINDOW), \ | ||
41 | scsi_opcode_name(READ_CAPACITY), \ | ||
42 | scsi_opcode_name(READ_10), \ | ||
43 | scsi_opcode_name(WRITE_10), \ | ||
44 | scsi_opcode_name(SEEK_10), \ | ||
45 | scsi_opcode_name(POSITION_TO_ELEMENT), \ | ||
46 | scsi_opcode_name(WRITE_VERIFY), \ | ||
47 | scsi_opcode_name(VERIFY), \ | ||
48 | scsi_opcode_name(SEARCH_HIGH), \ | ||
49 | scsi_opcode_name(SEARCH_EQUAL), \ | ||
50 | scsi_opcode_name(SEARCH_LOW), \ | ||
51 | scsi_opcode_name(SET_LIMITS), \ | ||
52 | scsi_opcode_name(PRE_FETCH), \ | ||
53 | scsi_opcode_name(READ_POSITION), \ | ||
54 | scsi_opcode_name(SYNCHRONIZE_CACHE), \ | ||
55 | scsi_opcode_name(LOCK_UNLOCK_CACHE), \ | ||
56 | scsi_opcode_name(READ_DEFECT_DATA), \ | ||
57 | scsi_opcode_name(MEDIUM_SCAN), \ | ||
58 | scsi_opcode_name(COMPARE), \ | ||
59 | scsi_opcode_name(COPY_VERIFY), \ | ||
60 | scsi_opcode_name(WRITE_BUFFER), \ | ||
61 | scsi_opcode_name(READ_BUFFER), \ | ||
62 | scsi_opcode_name(UPDATE_BLOCK), \ | ||
63 | scsi_opcode_name(READ_LONG), \ | ||
64 | scsi_opcode_name(WRITE_LONG), \ | ||
65 | scsi_opcode_name(CHANGE_DEFINITION), \ | ||
66 | scsi_opcode_name(WRITE_SAME), \ | ||
67 | scsi_opcode_name(UNMAP), \ | ||
68 | scsi_opcode_name(READ_TOC), \ | ||
69 | scsi_opcode_name(LOG_SELECT), \ | ||
70 | scsi_opcode_name(LOG_SENSE), \ | ||
71 | scsi_opcode_name(XDWRITEREAD_10), \ | ||
72 | scsi_opcode_name(MODE_SELECT_10), \ | ||
73 | scsi_opcode_name(RESERVE_10), \ | ||
74 | scsi_opcode_name(RELEASE_10), \ | ||
75 | scsi_opcode_name(MODE_SENSE_10), \ | ||
76 | scsi_opcode_name(PERSISTENT_RESERVE_IN), \ | ||
77 | scsi_opcode_name(PERSISTENT_RESERVE_OUT), \ | ||
78 | scsi_opcode_name(VARIABLE_LENGTH_CMD), \ | ||
79 | scsi_opcode_name(REPORT_LUNS), \ | ||
80 | scsi_opcode_name(MAINTENANCE_IN), \ | ||
81 | scsi_opcode_name(MAINTENANCE_OUT), \ | ||
82 | scsi_opcode_name(MOVE_MEDIUM), \ | ||
83 | scsi_opcode_name(EXCHANGE_MEDIUM), \ | ||
84 | scsi_opcode_name(READ_12), \ | ||
85 | scsi_opcode_name(WRITE_12), \ | ||
86 | scsi_opcode_name(WRITE_VERIFY_12), \ | ||
87 | scsi_opcode_name(SEARCH_HIGH_12), \ | ||
88 | scsi_opcode_name(SEARCH_EQUAL_12), \ | ||
89 | scsi_opcode_name(SEARCH_LOW_12), \ | ||
90 | scsi_opcode_name(READ_ELEMENT_STATUS), \ | ||
91 | scsi_opcode_name(SEND_VOLUME_TAG), \ | ||
92 | scsi_opcode_name(WRITE_LONG_2), \ | ||
93 | scsi_opcode_name(READ_16), \ | ||
94 | scsi_opcode_name(WRITE_16), \ | ||
95 | scsi_opcode_name(VERIFY_16), \ | ||
96 | scsi_opcode_name(WRITE_SAME_16), \ | ||
97 | scsi_opcode_name(SERVICE_ACTION_IN), \ | ||
98 | scsi_opcode_name(SAI_READ_CAPACITY_16), \ | ||
99 | scsi_opcode_name(SAI_GET_LBA_STATUS), \ | ||
100 | scsi_opcode_name(MI_REPORT_TARGET_PGS), \ | ||
101 | scsi_opcode_name(MO_SET_TARGET_PGS), \ | ||
102 | scsi_opcode_name(READ_32), \ | ||
103 | scsi_opcode_name(WRITE_32), \ | ||
104 | scsi_opcode_name(WRITE_SAME_32), \ | ||
105 | scsi_opcode_name(ATA_16), \ | ||
106 | scsi_opcode_name(ATA_12)) | ||
107 | |||
108 | #define scsi_hostbyte_name(result) { result, #result } | ||
109 | #define show_hostbyte_name(val) \ | ||
110 | __print_symbolic(val, \ | ||
111 | scsi_hostbyte_name(DID_OK), \ | ||
112 | scsi_hostbyte_name(DID_NO_CONNECT), \ | ||
113 | scsi_hostbyte_name(DID_BUS_BUSY), \ | ||
114 | scsi_hostbyte_name(DID_TIME_OUT), \ | ||
115 | scsi_hostbyte_name(DID_BAD_TARGET), \ | ||
116 | scsi_hostbyte_name(DID_ABORT), \ | ||
117 | scsi_hostbyte_name(DID_PARITY), \ | ||
118 | scsi_hostbyte_name(DID_ERROR), \ | ||
119 | scsi_hostbyte_name(DID_RESET), \ | ||
120 | scsi_hostbyte_name(DID_BAD_INTR), \ | ||
121 | scsi_hostbyte_name(DID_PASSTHROUGH), \ | ||
122 | scsi_hostbyte_name(DID_SOFT_ERROR), \ | ||
123 | scsi_hostbyte_name(DID_IMM_RETRY), \ | ||
124 | scsi_hostbyte_name(DID_REQUEUE), \ | ||
125 | scsi_hostbyte_name(DID_TRANSPORT_DISRUPTED), \ | ||
126 | scsi_hostbyte_name(DID_TRANSPORT_FAILFAST)) | ||
127 | |||
128 | #define scsi_driverbyte_name(result) { result, #result } | ||
129 | #define show_driverbyte_name(val) \ | ||
130 | __print_symbolic(val, \ | ||
131 | scsi_driverbyte_name(DRIVER_OK), \ | ||
132 | scsi_driverbyte_name(DRIVER_BUSY), \ | ||
133 | scsi_driverbyte_name(DRIVER_SOFT), \ | ||
134 | scsi_driverbyte_name(DRIVER_MEDIA), \ | ||
135 | scsi_driverbyte_name(DRIVER_ERROR), \ | ||
136 | scsi_driverbyte_name(DRIVER_INVALID), \ | ||
137 | scsi_driverbyte_name(DRIVER_TIMEOUT), \ | ||
138 | scsi_driverbyte_name(DRIVER_HARD), \ | ||
139 | scsi_driverbyte_name(DRIVER_SENSE)) | ||
140 | |||
141 | #define scsi_msgbyte_name(result) { result, #result } | ||
142 | #define show_msgbyte_name(val) \ | ||
143 | __print_symbolic(val, \ | ||
144 | scsi_msgbyte_name(COMMAND_COMPLETE), \ | ||
145 | scsi_msgbyte_name(EXTENDED_MESSAGE), \ | ||
146 | scsi_msgbyte_name(SAVE_POINTERS), \ | ||
147 | scsi_msgbyte_name(RESTORE_POINTERS), \ | ||
148 | scsi_msgbyte_name(DISCONNECT), \ | ||
149 | scsi_msgbyte_name(INITIATOR_ERROR), \ | ||
150 | scsi_msgbyte_name(ABORT_TASK_SET), \ | ||
151 | scsi_msgbyte_name(MESSAGE_REJECT), \ | ||
152 | scsi_msgbyte_name(NOP), \ | ||
153 | scsi_msgbyte_name(MSG_PARITY_ERROR), \ | ||
154 | scsi_msgbyte_name(LINKED_CMD_COMPLETE), \ | ||
155 | scsi_msgbyte_name(LINKED_FLG_CMD_COMPLETE), \ | ||
156 | scsi_msgbyte_name(TARGET_RESET), \ | ||
157 | scsi_msgbyte_name(ABORT_TASK), \ | ||
158 | scsi_msgbyte_name(CLEAR_TASK_SET), \ | ||
159 | scsi_msgbyte_name(INITIATE_RECOVERY), \ | ||
160 | scsi_msgbyte_name(RELEASE_RECOVERY), \ | ||
161 | scsi_msgbyte_name(CLEAR_ACA), \ | ||
162 | scsi_msgbyte_name(LOGICAL_UNIT_RESET), \ | ||
163 | scsi_msgbyte_name(SIMPLE_QUEUE_TAG), \ | ||
164 | scsi_msgbyte_name(HEAD_OF_QUEUE_TAG), \ | ||
165 | scsi_msgbyte_name(ORDERED_QUEUE_TAG), \ | ||
166 | scsi_msgbyte_name(IGNORE_WIDE_RESIDUE), \ | ||
167 | scsi_msgbyte_name(ACA), \ | ||
168 | scsi_msgbyte_name(QAS_REQUEST), \ | ||
169 | scsi_msgbyte_name(BUS_DEVICE_RESET), \ | ||
170 | scsi_msgbyte_name(ABORT)) | ||
171 | |||
172 | #define scsi_statusbyte_name(result) { result, #result } | ||
173 | #define show_statusbyte_name(val) \ | ||
174 | __print_symbolic(val, \ | ||
175 | scsi_statusbyte_name(SAM_STAT_GOOD), \ | ||
176 | scsi_statusbyte_name(SAM_STAT_CHECK_CONDITION), \ | ||
177 | scsi_statusbyte_name(SAM_STAT_CONDITION_MET), \ | ||
178 | scsi_statusbyte_name(SAM_STAT_BUSY), \ | ||
179 | scsi_statusbyte_name(SAM_STAT_INTERMEDIATE), \ | ||
180 | scsi_statusbyte_name(SAM_STAT_INTERMEDIATE_CONDITION_MET), \ | ||
181 | scsi_statusbyte_name(SAM_STAT_RESERVATION_CONFLICT), \ | ||
182 | scsi_statusbyte_name(SAM_STAT_COMMAND_TERMINATED), \ | ||
183 | scsi_statusbyte_name(SAM_STAT_TASK_SET_FULL), \ | ||
184 | scsi_statusbyte_name(SAM_STAT_ACA_ACTIVE), \ | ||
185 | scsi_statusbyte_name(SAM_STAT_TASK_ABORTED)) | ||
186 | |||
187 | const char *scsi_trace_parse_cdb(struct trace_seq*, unsigned char*, int); | ||
188 | #define __parse_cdb(cdb, len) scsi_trace_parse_cdb(p, cdb, len) | ||
189 | |||
190 | TRACE_EVENT(scsi_dispatch_cmd_start, | ||
191 | |||
192 | TP_PROTO(struct scsi_cmnd *cmd), | ||
193 | |||
194 | TP_ARGS(cmd), | ||
195 | |||
196 | TP_STRUCT__entry( | ||
197 | __field( unsigned int, host_no ) | ||
198 | __field( unsigned int, channel ) | ||
199 | __field( unsigned int, id ) | ||
200 | __field( unsigned int, lun ) | ||
201 | __field( unsigned int, opcode ) | ||
202 | __field( unsigned int, cmd_len ) | ||
203 | __field( unsigned int, data_sglen ) | ||
204 | __field( unsigned int, prot_sglen ) | ||
205 | __dynamic_array(unsigned char, cmnd, cmd->cmd_len) | ||
206 | ), | ||
207 | |||
208 | TP_fast_assign( | ||
209 | __entry->host_no = cmd->device->host->host_no; | ||
210 | __entry->channel = cmd->device->channel; | ||
211 | __entry->id = cmd->device->id; | ||
212 | __entry->lun = cmd->device->lun; | ||
213 | __entry->opcode = cmd->cmnd[0]; | ||
214 | __entry->cmd_len = cmd->cmd_len; | ||
215 | __entry->data_sglen = scsi_sg_count(cmd); | ||
216 | __entry->prot_sglen = scsi_prot_sg_count(cmd); | ||
217 | memcpy(__get_dynamic_array(cmnd), cmd->cmnd, cmd->cmd_len); | ||
218 | ), | ||
219 | |||
220 | TP_printk("host_no=%u channel=%u id=%u lun=%u data_sgl=%u prot_sgl=%u" \ | ||
221 | " cmnd=(%s %s raw=%s)", | ||
222 | __entry->host_no, __entry->channel, __entry->id, | ||
223 | __entry->lun, __entry->data_sglen, __entry->prot_sglen, | ||
224 | show_opcode_name(__entry->opcode), | ||
225 | __parse_cdb(__get_dynamic_array(cmnd), __entry->cmd_len), | ||
226 | __print_hex(__get_dynamic_array(cmnd), __entry->cmd_len)) | ||
227 | ); | ||
228 | |||
229 | TRACE_EVENT(scsi_dispatch_cmd_error, | ||
230 | |||
231 | TP_PROTO(struct scsi_cmnd *cmd, int rtn), | ||
232 | |||
233 | TP_ARGS(cmd, rtn), | ||
234 | |||
235 | TP_STRUCT__entry( | ||
236 | __field( unsigned int, host_no ) | ||
237 | __field( unsigned int, channel ) | ||
238 | __field( unsigned int, id ) | ||
239 | __field( unsigned int, lun ) | ||
240 | __field( int, rtn ) | ||
241 | __field( unsigned int, opcode ) | ||
242 | __field( unsigned int, cmd_len ) | ||
243 | __field( unsigned int, data_sglen ) | ||
244 | __field( unsigned int, prot_sglen ) | ||
245 | __dynamic_array(unsigned char, cmnd, cmd->cmd_len) | ||
246 | ), | ||
247 | |||
248 | TP_fast_assign( | ||
249 | __entry->host_no = cmd->device->host->host_no; | ||
250 | __entry->channel = cmd->device->channel; | ||
251 | __entry->id = cmd->device->id; | ||
252 | __entry->lun = cmd->device->lun; | ||
253 | __entry->rtn = rtn; | ||
254 | __entry->opcode = cmd->cmnd[0]; | ||
255 | __entry->cmd_len = cmd->cmd_len; | ||
256 | __entry->data_sglen = scsi_sg_count(cmd); | ||
257 | __entry->prot_sglen = scsi_prot_sg_count(cmd); | ||
258 | memcpy(__get_dynamic_array(cmnd), cmd->cmnd, cmd->cmd_len); | ||
259 | ), | ||
260 | |||
261 | TP_printk("host_no=%u channel=%u id=%u lun=%u data_sgl=%u prot_sgl=%u" \ | ||
262 | " cmnd=(%s %s raw=%s) rtn=%d", | ||
263 | __entry->host_no, __entry->channel, __entry->id, | ||
264 | __entry->lun, __entry->data_sglen, __entry->prot_sglen, | ||
265 | show_opcode_name(__entry->opcode), | ||
266 | __parse_cdb(__get_dynamic_array(cmnd), __entry->cmd_len), | ||
267 | __print_hex(__get_dynamic_array(cmnd), __entry->cmd_len), | ||
268 | __entry->rtn) | ||
269 | ); | ||
270 | |||
271 | DECLARE_EVENT_CLASS(scsi_cmd_done_timeout_template, | ||
272 | |||
273 | TP_PROTO(struct scsi_cmnd *cmd), | ||
274 | |||
275 | TP_ARGS(cmd), | ||
276 | |||
277 | TP_STRUCT__entry( | ||
278 | __field( unsigned int, host_no ) | ||
279 | __field( unsigned int, channel ) | ||
280 | __field( unsigned int, id ) | ||
281 | __field( unsigned int, lun ) | ||
282 | __field( int, result ) | ||
283 | __field( unsigned int, opcode ) | ||
284 | __field( unsigned int, cmd_len ) | ||
285 | __field( unsigned int, data_sglen ) | ||
286 | __field( unsigned int, prot_sglen ) | ||
287 | __dynamic_array(unsigned char, cmnd, cmd->cmd_len) | ||
288 | ), | ||
289 | |||
290 | TP_fast_assign( | ||
291 | __entry->host_no = cmd->device->host->host_no; | ||
292 | __entry->channel = cmd->device->channel; | ||
293 | __entry->id = cmd->device->id; | ||
294 | __entry->lun = cmd->device->lun; | ||
295 | __entry->result = cmd->result; | ||
296 | __entry->opcode = cmd->cmnd[0]; | ||
297 | __entry->cmd_len = cmd->cmd_len; | ||
298 | __entry->data_sglen = scsi_sg_count(cmd); | ||
299 | __entry->prot_sglen = scsi_prot_sg_count(cmd); | ||
300 | memcpy(__get_dynamic_array(cmnd), cmd->cmnd, cmd->cmd_len); | ||
301 | ), | ||
302 | |||
303 | TP_printk("host_no=%u channel=%u id=%u lun=%u data_sgl=%u " \ | ||
304 | "prot_sgl=%u cmnd=(%s %s raw=%s) result=(driver=%s host=%s " \ | ||
305 | "message=%s status=%s)", | ||
306 | __entry->host_no, __entry->channel, __entry->id, | ||
307 | __entry->lun, __entry->data_sglen, __entry->prot_sglen, | ||
308 | show_opcode_name(__entry->opcode), | ||
309 | __parse_cdb(__get_dynamic_array(cmnd), __entry->cmd_len), | ||
310 | __print_hex(__get_dynamic_array(cmnd), __entry->cmd_len), | ||
311 | show_driverbyte_name(((__entry->result) >> 24) & 0xff), | ||
312 | show_hostbyte_name(((__entry->result) >> 16) & 0xff), | ||
313 | show_msgbyte_name(((__entry->result) >> 8) & 0xff), | ||
314 | show_statusbyte_name(__entry->result & 0xff)) | ||
315 | ); | ||
316 | |||
317 | DEFINE_EVENT(scsi_cmd_done_timeout_template, scsi_dispatch_cmd_done, | ||
318 | TP_PROTO(struct scsi_cmnd *cmd), | ||
319 | TP_ARGS(cmd)); | ||
320 | |||
321 | DEFINE_EVENT(scsi_cmd_done_timeout_template, scsi_dispatch_cmd_timeout, | ||
322 | TP_PROTO(struct scsi_cmnd *cmd), | ||
323 | TP_ARGS(cmd)); | ||
324 | |||
325 | TRACE_EVENT(scsi_eh_wakeup, | ||
326 | |||
327 | TP_PROTO(struct Scsi_Host *shost), | ||
328 | |||
329 | TP_ARGS(shost), | ||
330 | |||
331 | TP_STRUCT__entry( | ||
332 | __field( unsigned int, host_no ) | ||
333 | ), | ||
334 | |||
335 | TP_fast_assign( | ||
336 | __entry->host_no = shost->host_no; | ||
337 | ), | ||
338 | |||
339 | TP_printk("host_no=%u", __entry->host_no) | ||
340 | ); | ||
341 | |||
342 | #endif /* _TRACE_SCSI_H */ | ||
343 | |||
344 | /* This part must be outside protection */ | ||
345 | #include <trace/define_trace.h> | ||
diff --git a/include/trace/events/signal.h b/include/trace/events/signal.h index a510b75ac304..814566c99d29 100644 --- a/include/trace/events/signal.h +++ b/include/trace/events/signal.h | |||
@@ -100,18 +100,7 @@ TRACE_EVENT(signal_deliver, | |||
100 | __entry->sa_handler, __entry->sa_flags) | 100 | __entry->sa_handler, __entry->sa_flags) |
101 | ); | 101 | ); |
102 | 102 | ||
103 | /** | 103 | DECLARE_EVENT_CLASS(signal_queue_overflow, |
104 | * signal_overflow_fail - called when signal queue is overflow | ||
105 | * @sig: signal number | ||
106 | * @group: signal to process group or not (bool) | ||
107 | * @info: pointer to struct siginfo | ||
108 | * | ||
109 | * Kernel fails to generate 'sig' signal with 'info' siginfo, because | ||
110 | * siginfo queue is overflow, and the signal is dropped. | ||
111 | * 'group' is not 0 if the signal will be sent to a process group. | ||
112 | * 'sig' is always one of RT signals. | ||
113 | */ | ||
114 | TRACE_EVENT(signal_overflow_fail, | ||
115 | 104 | ||
116 | TP_PROTO(int sig, int group, struct siginfo *info), | 105 | TP_PROTO(int sig, int group, struct siginfo *info), |
117 | 106 | ||
@@ -135,6 +124,24 @@ TRACE_EVENT(signal_overflow_fail, | |||
135 | ); | 124 | ); |
136 | 125 | ||
137 | /** | 126 | /** |
127 | * signal_overflow_fail - called when signal queue is overflow | ||
128 | * @sig: signal number | ||
129 | * @group: signal to process group or not (bool) | ||
130 | * @info: pointer to struct siginfo | ||
131 | * | ||
132 | * Kernel fails to generate 'sig' signal with 'info' siginfo, because | ||
133 | * siginfo queue is overflow, and the signal is dropped. | ||
134 | * 'group' is not 0 if the signal will be sent to a process group. | ||
135 | * 'sig' is always one of RT signals. | ||
136 | */ | ||
137 | DEFINE_EVENT(signal_queue_overflow, signal_overflow_fail, | ||
138 | |||
139 | TP_PROTO(int sig, int group, struct siginfo *info), | ||
140 | |||
141 | TP_ARGS(sig, group, info) | ||
142 | ); | ||
143 | |||
144 | /** | ||
138 | * signal_lose_info - called when siginfo is lost | 145 | * signal_lose_info - called when siginfo is lost |
139 | * @sig: signal number | 146 | * @sig: signal number |
140 | * @group: signal to process group or not (bool) | 147 | * @group: signal to process group or not (bool) |
@@ -145,28 +152,13 @@ TRACE_EVENT(signal_overflow_fail, | |||
145 | * 'group' is not 0 if the signal will be sent to a process group. | 152 | * 'group' is not 0 if the signal will be sent to a process group. |
146 | * 'sig' is always one of non-RT signals. | 153 | * 'sig' is always one of non-RT signals. |
147 | */ | 154 | */ |
148 | TRACE_EVENT(signal_lose_info, | 155 | DEFINE_EVENT(signal_queue_overflow, signal_lose_info, |
149 | 156 | ||
150 | TP_PROTO(int sig, int group, struct siginfo *info), | 157 | TP_PROTO(int sig, int group, struct siginfo *info), |
151 | 158 | ||
152 | TP_ARGS(sig, group, info), | 159 | TP_ARGS(sig, group, info) |
153 | |||
154 | TP_STRUCT__entry( | ||
155 | __field( int, sig ) | ||
156 | __field( int, group ) | ||
157 | __field( int, errno ) | ||
158 | __field( int, code ) | ||
159 | ), | ||
160 | |||
161 | TP_fast_assign( | ||
162 | __entry->sig = sig; | ||
163 | __entry->group = group; | ||
164 | TP_STORE_SIGINFO(__entry, info); | ||
165 | ), | ||
166 | |||
167 | TP_printk("sig=%d group=%d errno=%d code=%d", | ||
168 | __entry->sig, __entry->group, __entry->errno, __entry->code) | ||
169 | ); | 160 | ); |
161 | |||
170 | #endif /* _TRACE_SIGNAL_H */ | 162 | #endif /* _TRACE_SIGNAL_H */ |
171 | 163 | ||
172 | /* This part must be outside protection */ | 164 | /* This part must be outside protection */ |