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, |
