at v2.6.26 59 lines 1.3 kB view raw
1/** 2 * @file cpu_buffer.h 3 * 4 * @remark Copyright 2002 OProfile authors 5 * @remark Read the file COPYING 6 * 7 * @author John Levon <levon@movementarian.org> 8 */ 9 10#ifndef OPROFILE_CPU_BUFFER_H 11#define OPROFILE_CPU_BUFFER_H 12 13#include <linux/types.h> 14#include <linux/spinlock.h> 15#include <linux/workqueue.h> 16#include <linux/cache.h> 17#include <linux/sched.h> 18 19struct task_struct; 20 21int alloc_cpu_buffers(void); 22void free_cpu_buffers(void); 23 24void start_cpu_work(void); 25void end_cpu_work(void); 26 27/* CPU buffer is composed of such entries (which are 28 * also used for context switch notes) 29 */ 30struct op_sample { 31 unsigned long eip; 32 unsigned long event; 33}; 34 35struct oprofile_cpu_buffer { 36 volatile unsigned long head_pos; 37 volatile unsigned long tail_pos; 38 unsigned long buffer_size; 39 struct task_struct * last_task; 40 int last_is_kernel; 41 int tracing; 42 struct op_sample * buffer; 43 unsigned long sample_received; 44 unsigned long sample_lost_overflow; 45 unsigned long backtrace_aborted; 46 unsigned long sample_invalid_eip; 47 int cpu; 48 struct delayed_work work; 49}; 50 51DECLARE_PER_CPU(struct oprofile_cpu_buffer, cpu_buffer); 52 53void cpu_buffer_reset(struct oprofile_cpu_buffer * cpu_buf); 54 55/* transient events for the CPU buffer -> event buffer */ 56#define CPU_IS_KERNEL 1 57#define CPU_TRACE_BEGIN 2 58 59#endif /* OPROFILE_CPU_BUFFER_H */