diff options
Diffstat (limited to 'include/linux/perf_event.h')
-rw-r--r-- | include/linux/perf_event.h | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 866e85c5eb94..2e069d1288df 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h | |||
@@ -294,9 +294,31 @@ struct ring_buffer; | |||
294 | */ | 294 | */ |
295 | struct perf_event { | 295 | struct perf_event { |
296 | #ifdef CONFIG_PERF_EVENTS | 296 | #ifdef CONFIG_PERF_EVENTS |
297 | struct list_head group_entry; | 297 | /* |
298 | * entry onto perf_event_context::event_list; | ||
299 | * modifications require ctx->lock | ||
300 | * RCU safe iterations. | ||
301 | */ | ||
298 | struct list_head event_entry; | 302 | struct list_head event_entry; |
303 | |||
304 | /* | ||
305 | * XXX: group_entry and sibling_list should be mutually exclusive; | ||
306 | * either you're a sibling on a group, or you're the group leader. | ||
307 | * Rework the code to always use the same list element. | ||
308 | * | ||
309 | * Locked for modification by both ctx->mutex and ctx->lock; holding | ||
310 | * either sufficies for read. | ||
311 | */ | ||
312 | struct list_head group_entry; | ||
299 | struct list_head sibling_list; | 313 | struct list_head sibling_list; |
314 | |||
315 | /* | ||
316 | * We need storage to track the entries in perf_pmu_migrate_context; we | ||
317 | * cannot use the event_entry because of RCU and we want to keep the | ||
318 | * group in tact which avoids us using the other two entries. | ||
319 | */ | ||
320 | struct list_head migrate_entry; | ||
321 | |||
300 | struct hlist_node hlist_entry; | 322 | struct hlist_node hlist_entry; |
301 | int nr_siblings; | 323 | int nr_siblings; |
302 | int group_flags; | 324 | int group_flags; |
@@ -562,6 +584,10 @@ struct perf_sample_data { | |||
562 | struct perf_regs_user regs_user; | 584 | struct perf_regs_user regs_user; |
563 | u64 stack_user_size; | 585 | u64 stack_user_size; |
564 | u64 weight; | 586 | u64 weight; |
587 | /* | ||
588 | * Transaction flags for abort events: | ||
589 | */ | ||
590 | u64 txn; | ||
565 | }; | 591 | }; |
566 | 592 | ||
567 | static inline void perf_sample_data_init(struct perf_sample_data *data, | 593 | static inline void perf_sample_data_init(struct perf_sample_data *data, |
@@ -577,6 +603,7 @@ static inline void perf_sample_data_init(struct perf_sample_data *data, | |||
577 | data->stack_user_size = 0; | 603 | data->stack_user_size = 0; |
578 | data->weight = 0; | 604 | data->weight = 0; |
579 | data->data_src.val = 0; | 605 | data->data_src.val = 0; |
606 | data->txn = 0; | ||
580 | } | 607 | } |
581 | 608 | ||
582 | extern void perf_output_sample(struct perf_output_handle *handle, | 609 | extern void perf_output_sample(struct perf_output_handle *handle, |