oprofile: adding cpu_buffer_write_commit()
authorRobert Richter <robert.richter@amd.com>
Thu, 27 Nov 2008 17:36:08 +0000 (18:36 +0100)
committerRobert Richter <robert.richter@amd.com>
Wed, 10 Dec 2008 13:20:14 +0000 (14:20 +0100)
This is in preparation for changes in the cpu buffer implementation.

Signed-off-by: Robert Richter <robert.richter@amd.com>
drivers/oprofile/cpu_buffer.c
drivers/oprofile/cpu_buffer.h

index 7e5e650..d6f5de6 100644 (file)
@@ -148,22 +148,6 @@ static unsigned long nr_available_slots(struct oprofile_cpu_buffer const *b)
        return tail + (b->buffer_size - head) - 1;
 }
 
-static void increment_head(struct oprofile_cpu_buffer *b)
-{
-       unsigned long new_head = b->head_pos + 1;
-
-       /*
-        * Ensure anything written to the slot before we increment is
-        * visible
-        */
-       wmb();
-
-       if (new_head < b->buffer_size)
-               b->head_pos = new_head;
-       else
-               b->head_pos = 0;
-}
-
 static inline void
 add_sample(struct oprofile_cpu_buffer *cpu_buf,
           unsigned long pc, unsigned long event)
@@ -171,7 +155,7 @@ add_sample(struct oprofile_cpu_buffer *cpu_buf,
        struct op_sample *entry = cpu_buffer_write_entry(cpu_buf);
        entry->eip = pc;
        entry->event = event;
-       increment_head(cpu_buf);
+       cpu_buffer_write_commit(cpu_buf);
 }
 
 static inline void
index 0870699..e608976 100644 (file)
@@ -59,6 +59,23 @@ struct op_sample *cpu_buffer_write_entry(struct oprofile_cpu_buffer *cpu_buf)
 }
 
 static inline
+void cpu_buffer_write_commit(struct oprofile_cpu_buffer *b)
+{
+       unsigned long new_head = b->head_pos + 1;
+
+       /*
+        * Ensure anything written to the slot before we increment is
+        * visible
+        */
+       wmb();
+
+       if (new_head < b->buffer_size)
+               b->head_pos = new_head;
+       else
+               b->head_pos = 0;
+}
+
+static inline
 struct op_sample *cpu_buffer_read_entry(struct oprofile_cpu_buffer *cpu_buf)
 {
        return &cpu_buf->buffer[cpu_buf->tail_pos];