Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf: Rename perf_mmap_data to perf_buffer

Rename to clarify code.

s/perf_mmap_data/perf_buffer/g and selective s/data/buffer/g

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Steven Rostedt <rostedt@goodmis.org>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

authored by

Peter Zijlstra and committed by
Ingo Molnar
ca5135e6 68aa00ac

+157 -157
+3 -3
include/linux/perf_event.h
··· 602 602 603 603 struct file; 604 604 605 - struct perf_mmap_data { 605 + struct perf_buffer { 606 606 atomic_t refcount; 607 607 struct rcu_head rcu_head; 608 608 #ifdef CONFIG_PERF_USE_VMALLOC ··· 727 727 atomic_t mmap_count; 728 728 int mmap_locked; 729 729 struct user_struct *mmap_user; 730 - struct perf_mmap_data *data; 730 + struct perf_buffer *buffer; 731 731 732 732 /* poll related */ 733 733 wait_queue_head_t waitq; ··· 825 825 826 826 struct perf_output_handle { 827 827 struct perf_event *event; 828 - struct perf_mmap_data *data; 828 + struct perf_buffer *buffer; 829 829 unsigned long wakeup; 830 830 unsigned long size; 831 831 void *addr;
+154 -154
kernel/perf_event.c
··· 1876 1876 } 1877 1877 1878 1878 static void perf_pending_sync(struct perf_event *event); 1879 - static void perf_mmap_data_put(struct perf_mmap_data *data); 1879 + static void perf_buffer_put(struct perf_buffer *buffer); 1880 1880 1881 1881 static void free_event(struct perf_event *event) 1882 1882 { ··· 1892 1892 atomic_dec(&nr_task_events); 1893 1893 } 1894 1894 1895 - if (event->data) { 1896 - perf_mmap_data_put(event->data); 1897 - event->data = NULL; 1895 + if (event->buffer) { 1896 + perf_buffer_put(event->buffer); 1897 + event->buffer = NULL; 1898 1898 } 1899 1899 1900 1900 if (event->destroy) ··· 2119 2119 static unsigned int perf_poll(struct file *file, poll_table *wait) 2120 2120 { 2121 2121 struct perf_event *event = file->private_data; 2122 - struct perf_mmap_data *data; 2122 + struct perf_buffer *buffer; 2123 2123 unsigned int events = POLL_HUP; 2124 2124 2125 2125 rcu_read_lock(); 2126 - data = rcu_dereference(event->data); 2127 - if (data) 2128 - events = atomic_xchg(&data->poll, 0); 2126 + buffer = rcu_dereference(event->buffer); 2127 + if (buffer) 2128 + events = atomic_xchg(&buffer->poll, 0); 2129 2129 rcu_read_unlock(); 2130 2130 2131 2131 poll_wait(file, &event->waitq, wait); ··· 2335 2335 void perf_event_update_userpage(struct perf_event *event) 2336 2336 { 2337 2337 struct perf_event_mmap_page *userpg; 2338 - struct perf_mmap_data *data; 2338 + struct perf_buffer *buffer; 2339 2339 2340 2340 rcu_read_lock(); 2341 - data = rcu_dereference(event->data); 2342 - if (!data) 2341 + buffer = rcu_dereference(event->buffer); 2342 + if (!buffer) 2343 2343 goto unlock; 2344 2344 2345 - userpg = data->user_page; 2345 + userpg = buffer->user_page; 2346 2346 2347 2347 /* 2348 2348 * Disable preemption so as to not let the corresponding user-space ··· 2376 2376 */ 2377 2377 2378 2378 static struct page * 2379 - perf_mmap_to_page(struct perf_mmap_data *data, unsigned long pgoff) 2379 + perf_mmap_to_page(struct perf_buffer *buffer, unsigned long pgoff) 2380 2380 { 2381 - if (pgoff > data->nr_pages) 2381 + if (pgoff > buffer->nr_pages) 2382 2382 return NULL; 2383 2383 2384 2384 if (pgoff == 0) 2385 - return virt_to_page(data->user_page); 2385 + return virt_to_page(buffer->user_page); 2386 2386 2387 - return virt_to_page(data->data_pages[pgoff - 1]); 2387 + return virt_to_page(buffer->data_pages[pgoff - 1]); 2388 2388 } 2389 2389 2390 2390 static void *perf_mmap_alloc_page(int cpu) ··· 2400 2400 return page_address(page); 2401 2401 } 2402 2402 2403 - static struct perf_mmap_data * 2404 - perf_mmap_data_alloc(struct perf_event *event, int nr_pages) 2403 + static struct perf_buffer * 2404 + perf_buffer_alloc(struct perf_event *event, int nr_pages) 2405 2405 { 2406 - struct perf_mmap_data *data; 2406 + struct perf_buffer *buffer; 2407 2407 unsigned long size; 2408 2408 int i; 2409 2409 2410 - size = sizeof(struct perf_mmap_data); 2410 + size = sizeof(struct perf_buffer); 2411 2411 size += nr_pages * sizeof(void *); 2412 2412 2413 - data = kzalloc(size, GFP_KERNEL); 2414 - if (!data) 2413 + buffer = kzalloc(size, GFP_KERNEL); 2414 + if (!buffer) 2415 2415 goto fail; 2416 2416 2417 - data->user_page = perf_mmap_alloc_page(event->cpu); 2418 - if (!data->user_page) 2417 + buffer->user_page = perf_mmap_alloc_page(event->cpu); 2418 + if (!buffer->user_page) 2419 2419 goto fail_user_page; 2420 2420 2421 2421 for (i = 0; i < nr_pages; i++) { 2422 - data->data_pages[i] = perf_mmap_alloc_page(event->cpu); 2423 - if (!data->data_pages[i]) 2422 + buffer->data_pages[i] = perf_mmap_alloc_page(event->cpu); 2423 + if (!buffer->data_pages[i]) 2424 2424 goto fail_data_pages; 2425 2425 } 2426 2426 2427 - data->nr_pages = nr_pages; 2427 + buffer->nr_pages = nr_pages; 2428 2428 2429 - return data; 2429 + return buffer; 2430 2430 2431 2431 fail_data_pages: 2432 2432 for (i--; i >= 0; i--) 2433 - free_page((unsigned long)data->data_pages[i]); 2433 + free_page((unsigned long)buffer->data_pages[i]); 2434 2434 2435 - free_page((unsigned long)data->user_page); 2435 + free_page((unsigned long)buffer->user_page); 2436 2436 2437 2437 fail_user_page: 2438 - kfree(data); 2438 + kfree(buffer); 2439 2439 2440 2440 fail: 2441 2441 return NULL; ··· 2449 2449 __free_page(page); 2450 2450 } 2451 2451 2452 - static void perf_mmap_data_free(struct perf_mmap_data *data) 2452 + static void perf_buffer_free(struct perf_buffer *buffer) 2453 2453 { 2454 2454 int i; 2455 2455 2456 - perf_mmap_free_page((unsigned long)data->user_page); 2457 - for (i = 0; i < data->nr_pages; i++) 2458 - perf_mmap_free_page((unsigned long)data->data_pages[i]); 2459 - kfree(data); 2456 + perf_mmap_free_page((unsigned long)buffer->user_page); 2457 + for (i = 0; i < buffer->nr_pages; i++) 2458 + perf_mmap_free_page((unsigned long)buffer->data_pages[i]); 2459 + kfree(buffer); 2460 2460 } 2461 2461 2462 - static inline int page_order(struct perf_mmap_data *data) 2462 + static inline int page_order(struct perf_buffer *buffer) 2463 2463 { 2464 2464 return 0; 2465 2465 } ··· 2472 2472 * Required for architectures that have d-cache aliasing issues. 2473 2473 */ 2474 2474 2475 - static inline int page_order(struct perf_mmap_data *data) 2475 + static inline int page_order(struct perf_buffer *buffer) 2476 2476 { 2477 - return data->page_order; 2477 + return buffer->page_order; 2478 2478 } 2479 2479 2480 2480 static struct page * 2481 - perf_mmap_to_page(struct perf_mmap_data *data, unsigned long pgoff) 2481 + perf_mmap_to_page(struct perf_buffer *buffer, unsigned long pgoff) 2482 2482 { 2483 - if (pgoff > (1UL << page_order(data))) 2483 + if (pgoff > (1UL << page_order(buffer))) 2484 2484 return NULL; 2485 2485 2486 - return vmalloc_to_page((void *)data->user_page + pgoff * PAGE_SIZE); 2486 + return vmalloc_to_page((void *)buffer->user_page + pgoff * PAGE_SIZE); 2487 2487 } 2488 2488 2489 2489 static void perf_mmap_unmark_page(void *addr) ··· 2493 2493 page->mapping = NULL; 2494 2494 } 2495 2495 2496 - static void perf_mmap_data_free_work(struct work_struct *work) 2496 + static void perf_buffer_free_work(struct work_struct *work) 2497 2497 { 2498 - struct perf_mmap_data *data; 2498 + struct perf_buffer *buffer; 2499 2499 void *base; 2500 2500 int i, nr; 2501 2501 2502 - data = container_of(work, struct perf_mmap_data, work); 2503 - nr = 1 << page_order(data); 2502 + buffer = container_of(work, struct perf_buffer, work); 2503 + nr = 1 << page_order(buffer); 2504 2504 2505 - base = data->user_page; 2505 + base = buffer->user_page; 2506 2506 for (i = 0; i < nr + 1; i++) 2507 2507 perf_mmap_unmark_page(base + (i * PAGE_SIZE)); 2508 2508 2509 2509 vfree(base); 2510 - kfree(data); 2510 + kfree(buffer); 2511 2511 } 2512 2512 2513 - static void perf_mmap_data_free(struct perf_mmap_data *data) 2513 + static void perf_buffer_free(struct perf_buffer *buffer) 2514 2514 { 2515 - schedule_work(&data->work); 2515 + schedule_work(&buffer->work); 2516 2516 } 2517 2517 2518 - static struct perf_mmap_data * 2519 - perf_mmap_data_alloc(struct perf_event *event, int nr_pages) 2518 + static struct perf_buffer * 2519 + perf_buffer_alloc(struct perf_event *event, int nr_pages) 2520 2520 { 2521 - struct perf_mmap_data *data; 2521 + struct perf_buffer *buffer; 2522 2522 unsigned long size; 2523 2523 void *all_buf; 2524 2524 2525 - size = sizeof(struct perf_mmap_data); 2525 + size = sizeof(struct perf_buffer); 2526 2526 size += sizeof(void *); 2527 2527 2528 - data = kzalloc(size, GFP_KERNEL); 2529 - if (!data) 2528 + buffer = kzalloc(size, GFP_KERNEL); 2529 + if (!buffer) 2530 2530 goto fail; 2531 2531 2532 - INIT_WORK(&data->work, perf_mmap_data_free_work); 2532 + INIT_WORK(&buffer->work, perf_buffer_free_work); 2533 2533 2534 2534 all_buf = vmalloc_user((nr_pages + 1) * PAGE_SIZE); 2535 2535 if (!all_buf) 2536 2536 goto fail_all_buf; 2537 2537 2538 - data->user_page = all_buf; 2539 - data->data_pages[0] = all_buf + PAGE_SIZE; 2540 - data->page_order = ilog2(nr_pages); 2541 - data->nr_pages = 1; 2538 + buffer->user_page = all_buf; 2539 + buffer->data_pages[0] = all_buf + PAGE_SIZE; 2540 + buffer->page_order = ilog2(nr_pages); 2541 + buffer->nr_pages = 1; 2542 2542 2543 - return data; 2543 + return buffer; 2544 2544 2545 2545 fail_all_buf: 2546 - kfree(data); 2546 + kfree(buffer); 2547 2547 2548 2548 fail: 2549 2549 return NULL; ··· 2551 2551 2552 2552 #endif 2553 2553 2554 - static unsigned long perf_data_size(struct perf_mmap_data *data) 2554 + static unsigned long perf_data_size(struct perf_buffer *buffer) 2555 2555 { 2556 - return data->nr_pages << (PAGE_SHIFT + page_order(data)); 2556 + return buffer->nr_pages << (PAGE_SHIFT + page_order(buffer)); 2557 2557 } 2558 2558 2559 2559 static int perf_mmap_fault(struct vm_area_struct *vma, struct vm_fault *vmf) 2560 2560 { 2561 2561 struct perf_event *event = vma->vm_file->private_data; 2562 - struct perf_mmap_data *data; 2562 + struct perf_buffer *buffer; 2563 2563 int ret = VM_FAULT_SIGBUS; 2564 2564 2565 2565 if (vmf->flags & FAULT_FLAG_MKWRITE) { ··· 2569 2569 } 2570 2570 2571 2571 rcu_read_lock(); 2572 - data = rcu_dereference(event->data); 2573 - if (!data) 2572 + buffer = rcu_dereference(event->buffer); 2573 + if (!buffer) 2574 2574 goto unlock; 2575 2575 2576 2576 if (vmf->pgoff && (vmf->flags & FAULT_FLAG_WRITE)) 2577 2577 goto unlock; 2578 2578 2579 - vmf->page = perf_mmap_to_page(data, vmf->pgoff); 2579 + vmf->page = perf_mmap_to_page(buffer, vmf->pgoff); 2580 2580 if (!vmf->page) 2581 2581 goto unlock; 2582 2582 ··· 2592 2592 } 2593 2593 2594 2594 static void 2595 - perf_mmap_data_init(struct perf_event *event, struct perf_mmap_data *data) 2595 + perf_buffer_init(struct perf_event *event, struct perf_buffer *buffer) 2596 2596 { 2597 - long max_size = perf_data_size(data); 2597 + long max_size = perf_data_size(buffer); 2598 2598 2599 2599 if (event->attr.watermark) { 2600 - data->watermark = min_t(long, max_size, 2600 + buffer->watermark = min_t(long, max_size, 2601 2601 event->attr.wakeup_watermark); 2602 2602 } 2603 2603 2604 - if (!data->watermark) 2605 - data->watermark = max_size / 2; 2604 + if (!buffer->watermark) 2605 + buffer->watermark = max_size / 2; 2606 2606 2607 - atomic_set(&data->refcount, 1); 2608 - rcu_assign_pointer(event->data, data); 2607 + atomic_set(&buffer->refcount, 1); 2608 + rcu_assign_pointer(event->buffer, buffer); 2609 2609 } 2610 2610 2611 - static void perf_mmap_data_free_rcu(struct rcu_head *rcu_head) 2611 + static void perf_buffer_free_rcu(struct rcu_head *rcu_head) 2612 2612 { 2613 - struct perf_mmap_data *data; 2613 + struct perf_buffer *buffer; 2614 2614 2615 - data = container_of(rcu_head, struct perf_mmap_data, rcu_head); 2616 - perf_mmap_data_free(data); 2615 + buffer = container_of(rcu_head, struct perf_buffer, rcu_head); 2616 + perf_buffer_free(buffer); 2617 2617 } 2618 2618 2619 - static struct perf_mmap_data *perf_mmap_data_get(struct perf_event *event) 2619 + static struct perf_buffer *perf_buffer_get(struct perf_event *event) 2620 2620 { 2621 - struct perf_mmap_data *data; 2621 + struct perf_buffer *buffer; 2622 2622 2623 2623 rcu_read_lock(); 2624 - data = rcu_dereference(event->data); 2625 - if (data) { 2626 - if (!atomic_inc_not_zero(&data->refcount)) 2627 - data = NULL; 2624 + buffer = rcu_dereference(event->buffer); 2625 + if (buffer) { 2626 + if (!atomic_inc_not_zero(&buffer->refcount)) 2627 + buffer = NULL; 2628 2628 } 2629 2629 rcu_read_unlock(); 2630 2630 2631 - return data; 2631 + return buffer; 2632 2632 } 2633 2633 2634 - static void perf_mmap_data_put(struct perf_mmap_data *data) 2634 + static void perf_buffer_put(struct perf_buffer *buffer) 2635 2635 { 2636 - if (!atomic_dec_and_test(&data->refcount)) 2636 + if (!atomic_dec_and_test(&buffer->refcount)) 2637 2637 return; 2638 2638 2639 - call_rcu(&data->rcu_head, perf_mmap_data_free_rcu); 2639 + call_rcu(&buffer->rcu_head, perf_buffer_free_rcu); 2640 2640 } 2641 2641 2642 2642 static void perf_mmap_open(struct vm_area_struct *vma) ··· 2651 2651 struct perf_event *event = vma->vm_file->private_data; 2652 2652 2653 2653 if (atomic_dec_and_mutex_lock(&event->mmap_count, &event->mmap_mutex)) { 2654 - unsigned long size = perf_data_size(event->data); 2654 + unsigned long size = perf_data_size(event->buffer); 2655 2655 struct user_struct *user = event->mmap_user; 2656 - struct perf_mmap_data *data = event->data; 2656 + struct perf_buffer *buffer = event->buffer; 2657 2657 2658 2658 atomic_long_sub((size >> PAGE_SHIFT) + 1, &user->locked_vm); 2659 2659 vma->vm_mm->locked_vm -= event->mmap_locked; 2660 - rcu_assign_pointer(event->data, NULL); 2660 + rcu_assign_pointer(event->buffer, NULL); 2661 2661 mutex_unlock(&event->mmap_mutex); 2662 2662 2663 - perf_mmap_data_put(data); 2663 + perf_buffer_put(buffer); 2664 2664 free_uid(user); 2665 2665 } 2666 2666 } ··· 2678 2678 unsigned long user_locked, user_lock_limit; 2679 2679 struct user_struct *user = current_user(); 2680 2680 unsigned long locked, lock_limit; 2681 - struct perf_mmap_data *data; 2681 + struct perf_buffer *buffer; 2682 2682 unsigned long vma_size; 2683 2683 unsigned long nr_pages; 2684 2684 long user_extra, extra; ··· 2699 2699 nr_pages = (vma_size / PAGE_SIZE) - 1; 2700 2700 2701 2701 /* 2702 - * If we have data pages ensure they're a power-of-two number, so we 2702 + * If we have buffer pages ensure they're a power-of-two number, so we 2703 2703 * can do bitmasks instead of modulo. 2704 2704 */ 2705 2705 if (nr_pages != 0 && !is_power_of_2(nr_pages)) ··· 2713 2713 2714 2714 WARN_ON_ONCE(event->ctx->parent_ctx); 2715 2715 mutex_lock(&event->mmap_mutex); 2716 - if (event->data) { 2717 - if (event->data->nr_pages == nr_pages) 2718 - atomic_inc(&event->data->refcount); 2716 + if (event->buffer) { 2717 + if (event->buffer->nr_pages == nr_pages) 2718 + atomic_inc(&event->buffer->refcount); 2719 2719 else 2720 2720 ret = -EINVAL; 2721 2721 goto unlock; ··· 2745 2745 goto unlock; 2746 2746 } 2747 2747 2748 - WARN_ON(event->data); 2748 + WARN_ON(event->buffer); 2749 2749 2750 - data = perf_mmap_data_alloc(event, nr_pages); 2751 - if (!data) { 2750 + buffer = perf_buffer_alloc(event, nr_pages); 2751 + if (!buffer) { 2752 2752 ret = -ENOMEM; 2753 2753 goto unlock; 2754 2754 } 2755 2755 2756 - perf_mmap_data_init(event, data); 2756 + perf_buffer_init(event, buffer); 2757 2757 if (vma->vm_flags & VM_WRITE) 2758 - event->data->writable = 1; 2758 + event->buffer->writable = 1; 2759 2759 2760 2760 atomic_long_add(user_extra, &user->locked_vm); 2761 2761 event->mmap_locked = extra; ··· 2964 2964 /* 2965 2965 * Output 2966 2966 */ 2967 - static bool perf_output_space(struct perf_mmap_data *data, unsigned long tail, 2967 + static bool perf_output_space(struct perf_buffer *buffer, unsigned long tail, 2968 2968 unsigned long offset, unsigned long head) 2969 2969 { 2970 2970 unsigned long mask; 2971 2971 2972 - if (!data->writable) 2972 + if (!buffer->writable) 2973 2973 return true; 2974 2974 2975 - mask = perf_data_size(data) - 1; 2975 + mask = perf_data_size(buffer) - 1; 2976 2976 2977 2977 offset = (offset - tail) & mask; 2978 2978 head = (head - tail) & mask; ··· 2985 2985 2986 2986 static void perf_output_wakeup(struct perf_output_handle *handle) 2987 2987 { 2988 - atomic_set(&handle->data->poll, POLL_IN); 2988 + atomic_set(&handle->buffer->poll, POLL_IN); 2989 2989 2990 2990 if (handle->nmi) { 2991 2991 handle->event->pending_wakeup = 1; ··· 3005 3005 */ 3006 3006 static void perf_output_get_handle(struct perf_output_handle *handle) 3007 3007 { 3008 - struct perf_mmap_data *data = handle->data; 3008 + struct perf_buffer *buffer = handle->buffer; 3009 3009 3010 3010 preempt_disable(); 3011 - local_inc(&data->nest); 3012 - handle->wakeup = local_read(&data->wakeup); 3011 + local_inc(&buffer->nest); 3012 + handle->wakeup = local_read(&buffer->wakeup); 3013 3013 } 3014 3014 3015 3015 static void perf_output_put_handle(struct perf_output_handle *handle) 3016 3016 { 3017 - struct perf_mmap_data *data = handle->data; 3017 + struct perf_buffer *buffer = handle->buffer; 3018 3018 unsigned long head; 3019 3019 3020 3020 again: 3021 - head = local_read(&data->head); 3021 + head = local_read(&buffer->head); 3022 3022 3023 3023 /* 3024 3024 * IRQ/NMI can happen here, which means we can miss a head update. 3025 3025 */ 3026 3026 3027 - if (!local_dec_and_test(&data->nest)) 3027 + if (!local_dec_and_test(&buffer->nest)) 3028 3028 goto out; 3029 3029 3030 3030 /* 3031 3031 * Publish the known good head. Rely on the full barrier implied 3032 - * by atomic_dec_and_test() order the data->head read and this 3032 + * by atomic_dec_and_test() order the buffer->head read and this 3033 3033 * write. 3034 3034 */ 3035 - data->user_page->data_head = head; 3035 + buffer->user_page->data_head = head; 3036 3036 3037 3037 /* 3038 3038 * Now check if we missed an update, rely on the (compiler) 3039 - * barrier in atomic_dec_and_test() to re-read data->head. 3039 + * barrier in atomic_dec_and_test() to re-read buffer->head. 3040 3040 */ 3041 - if (unlikely(head != local_read(&data->head))) { 3042 - local_inc(&data->nest); 3041 + if (unlikely(head != local_read(&buffer->head))) { 3042 + local_inc(&buffer->nest); 3043 3043 goto again; 3044 3044 } 3045 3045 3046 - if (handle->wakeup != local_read(&data->wakeup)) 3046 + if (handle->wakeup != local_read(&buffer->wakeup)) 3047 3047 perf_output_wakeup(handle); 3048 3048 3049 3049 out: ··· 3063 3063 buf += size; 3064 3064 handle->size -= size; 3065 3065 if (!handle->size) { 3066 - struct perf_mmap_data *data = handle->data; 3066 + struct perf_buffer *buffer = handle->buffer; 3067 3067 3068 3068 handle->page++; 3069 - handle->page &= data->nr_pages - 1; 3070 - handle->addr = data->data_pages[handle->page]; 3071 - handle->size = PAGE_SIZE << page_order(data); 3069 + handle->page &= buffer->nr_pages - 1; 3070 + handle->addr = buffer->data_pages[handle->page]; 3071 + handle->size = PAGE_SIZE << page_order(buffer); 3072 3072 } 3073 3073 } while (len); 3074 3074 } ··· 3077 3077 struct perf_event *event, unsigned int size, 3078 3078 int nmi, int sample) 3079 3079 { 3080 - struct perf_mmap_data *data; 3080 + struct perf_buffer *buffer; 3081 3081 unsigned long tail, offset, head; 3082 3082 int have_lost; 3083 3083 struct { ··· 3093 3093 if (event->parent) 3094 3094 event = event->parent; 3095 3095 3096 - data = rcu_dereference(event->data); 3097 - if (!data) 3096 + buffer = rcu_dereference(event->buffer); 3097 + if (!buffer) 3098 3098 goto out; 3099 3099 3100 - handle->data = data; 3100 + handle->buffer = buffer; 3101 3101 handle->event = event; 3102 3102 handle->nmi = nmi; 3103 3103 handle->sample = sample; 3104 3104 3105 - if (!data->nr_pages) 3105 + if (!buffer->nr_pages) 3106 3106 goto out; 3107 3107 3108 - have_lost = local_read(&data->lost); 3108 + have_lost = local_read(&buffer->lost); 3109 3109 if (have_lost) 3110 3110 size += sizeof(lost_event); 3111 3111 ··· 3117 3117 * tail pointer. So that all reads will be completed before the 3118 3118 * write is issued. 3119 3119 */ 3120 - tail = ACCESS_ONCE(data->user_page->data_tail); 3120 + tail = ACCESS_ONCE(buffer->user_page->data_tail); 3121 3121 smp_rmb(); 3122 - offset = head = local_read(&data->head); 3122 + offset = head = local_read(&buffer->head); 3123 3123 head += size; 3124 - if (unlikely(!perf_output_space(data, tail, offset, head))) 3124 + if (unlikely(!perf_output_space(buffer, tail, offset, head))) 3125 3125 goto fail; 3126 - } while (local_cmpxchg(&data->head, offset, head) != offset); 3126 + } while (local_cmpxchg(&buffer->head, offset, head) != offset); 3127 3127 3128 - if (head - local_read(&data->wakeup) > data->watermark) 3129 - local_add(data->watermark, &data->wakeup); 3128 + if (head - local_read(&buffer->wakeup) > buffer->watermark) 3129 + local_add(buffer->watermark, &buffer->wakeup); 3130 3130 3131 - handle->page = offset >> (PAGE_SHIFT + page_order(data)); 3132 - handle->page &= data->nr_pages - 1; 3133 - handle->size = offset & ((PAGE_SIZE << page_order(data)) - 1); 3134 - handle->addr = data->data_pages[handle->page]; 3131 + handle->page = offset >> (PAGE_SHIFT + page_order(buffer)); 3132 + handle->page &= buffer->nr_pages - 1; 3133 + handle->size = offset & ((PAGE_SIZE << page_order(buffer)) - 1); 3134 + handle->addr = buffer->data_pages[handle->page]; 3135 3135 handle->addr += handle->size; 3136 - handle->size = (PAGE_SIZE << page_order(data)) - handle->size; 3136 + handle->size = (PAGE_SIZE << page_order(buffer)) - handle->size; 3137 3137 3138 3138 if (have_lost) { 3139 3139 lost_event.header.type = PERF_RECORD_LOST; 3140 3140 lost_event.header.misc = 0; 3141 3141 lost_event.header.size = sizeof(lost_event); 3142 3142 lost_event.id = event->id; 3143 - lost_event.lost = local_xchg(&data->lost, 0); 3143 + lost_event.lost = local_xchg(&buffer->lost, 0); 3144 3144 3145 3145 perf_output_put(handle, lost_event); 3146 3146 } ··· 3148 3148 return 0; 3149 3149 3150 3150 fail: 3151 - local_inc(&data->lost); 3151 + local_inc(&buffer->lost); 3152 3152 perf_output_put_handle(handle); 3153 3153 out: 3154 3154 rcu_read_unlock(); ··· 3159 3159 void perf_output_end(struct perf_output_handle *handle) 3160 3160 { 3161 3161 struct perf_event *event = handle->event; 3162 - struct perf_mmap_data *data = handle->data; 3162 + struct perf_buffer *buffer = handle->buffer; 3163 3163 3164 3164 int wakeup_events = event->attr.wakeup_events; 3165 3165 3166 3166 if (handle->sample && wakeup_events) { 3167 - int events = local_inc_return(&data->events); 3167 + int events = local_inc_return(&buffer->events); 3168 3168 if (events >= wakeup_events) { 3169 - local_sub(wakeup_events, &data->events); 3170 - local_inc(&data->wakeup); 3169 + local_sub(wakeup_events, &buffer->events); 3170 + local_inc(&buffer->wakeup); 3171 3171 } 3172 3172 } 3173 3173 ··· 5010 5010 static int 5011 5011 perf_event_set_output(struct perf_event *event, struct perf_event *output_event) 5012 5012 { 5013 - struct perf_mmap_data *data = NULL, *old_data = NULL; 5013 + struct perf_buffer *buffer = NULL, *old_buffer = NULL; 5014 5014 int ret = -EINVAL; 5015 5015 5016 5016 if (!output_event) ··· 5040 5040 5041 5041 if (output_event) { 5042 5042 /* get the buffer we want to redirect to */ 5043 - data = perf_mmap_data_get(output_event); 5044 - if (!data) 5043 + buffer = perf_buffer_get(output_event); 5044 + if (!buffer) 5045 5045 goto unlock; 5046 5046 } 5047 5047 5048 - old_data = event->data; 5049 - rcu_assign_pointer(event->data, data); 5048 + old_buffer = event->buffer; 5049 + rcu_assign_pointer(event->buffer, buffer); 5050 5050 ret = 0; 5051 5051 unlock: 5052 5052 mutex_unlock(&event->mmap_mutex); 5053 5053 5054 - if (old_data) 5055 - perf_mmap_data_put(old_data); 5054 + if (old_buffer) 5055 + perf_buffer_put(old_buffer); 5056 5056 out: 5057 5057 return ret; 5058 5058 }