diff options
Diffstat (limited to 'drivers/oprofile/buffer_sync.c')
-rw-r--r-- | drivers/oprofile/buffer_sync.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/oprofile/buffer_sync.c b/drivers/oprofile/buffer_sync.c index ed982273fb8b..37681700b61a 100644 --- a/drivers/oprofile/buffer_sync.c +++ b/drivers/oprofile/buffer_sync.c | |||
@@ -628,3 +628,27 @@ void sync_buffer(int cpu) | |||
628 | 628 | ||
629 | mutex_unlock(&buffer_mutex); | 629 | mutex_unlock(&buffer_mutex); |
630 | } | 630 | } |
631 | |||
632 | /* The function can be used to add a buffer worth of data directly to | ||
633 | * the kernel buffer. The buffer is assumed to be a circular buffer. | ||
634 | * Take the entries from index start and end at index end, wrapping | ||
635 | * at max_entries. | ||
636 | */ | ||
637 | void oprofile_put_buff(unsigned long *buf, unsigned int start, | ||
638 | unsigned int stop, unsigned int max) | ||
639 | { | ||
640 | int i; | ||
641 | |||
642 | i = start; | ||
643 | |||
644 | mutex_lock(&buffer_mutex); | ||
645 | while (i != stop) { | ||
646 | add_event_entry(buf[i++]); | ||
647 | |||
648 | if (i >= max) | ||
649 | i = 0; | ||
650 | } | ||
651 | |||
652 | mutex_unlock(&buffer_mutex); | ||
653 | } | ||
654 | |||