]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/oprofile/buffer_sync.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile
[linux-2.6-omap-h63xx.git] / drivers / oprofile / buffer_sync.c
index 37681700b61a6816137cef46ca5ecc5fd666325e..b55cd23ffdefc81dfb80409a98c5697c21822b50 100644 (file)
@@ -41,7 +41,6 @@ static cpumask_t marked_cpus = CPU_MASK_NONE;
 static DEFINE_SPINLOCK(task_mortuary);
 static void process_task_mortuary(void);
 
-
 /* Take ownership of the task struct and place it on the
  * list for processing. Only after two full buffer syncs
  * does the task eventually get freed, because by then
@@ -341,7 +340,7 @@ static void add_trace_begin(void)
  * Add IBS fetch and op entries to event buffer
  */
 static void add_ibs_begin(struct oprofile_cpu_buffer *cpu_buf, int code,
-       int in_kernel, struct mm_struct *mm)
+                         struct mm_struct *mm)
 {
        unsigned long rip;
        int i, count;
@@ -565,9 +564,11 @@ void sync_buffer(int cpu)
        struct task_struct *new;
        unsigned long cookie = 0;
        int in_kernel = 1;
-       unsigned int i;
        sync_buffer_state state = sb_buffer_start;
+#ifndef CONFIG_OPROFILE_IBS
+       unsigned int i;
        unsigned long available;
+#endif
 
        mutex_lock(&buffer_mutex);
 
@@ -575,9 +576,13 @@ void sync_buffer(int cpu)
 
        /* Remember, only we can modify tail_pos */
 
+#ifndef CONFIG_OPROFILE_IBS
        available = get_slots(cpu_buf);
 
        for (i = 0; i < available; ++i) {
+#else
+       while (get_slots(cpu_buf)) {
+#endif
                struct op_sample *s = &cpu_buf->buffer[cpu_buf->tail_pos];
 
                if (is_code(s->eip)) {
@@ -593,12 +598,10 @@ void sync_buffer(int cpu)
 #ifdef CONFIG_OPROFILE_IBS
                        } else if (s->event == IBS_FETCH_BEGIN) {
                                state = sb_bt_start;
-                               add_ibs_begin(cpu_buf,
-                                       IBS_FETCH_CODE, in_kernel, mm);
+                               add_ibs_begin(cpu_buf, IBS_FETCH_CODE, mm);
                        } else if (s->event == IBS_OP_BEGIN) {
                                state = sb_bt_start;
-                               add_ibs_begin(cpu_buf,
-                                       IBS_OP_CODE, in_kernel, mm);
+                               add_ibs_begin(cpu_buf, IBS_OP_CODE, mm);
 #endif
                        } else {
                                struct mm_struct *oldmm = mm;