diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-06 09:30:52 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-06 09:30:52 -0700 | 
| commit | 4aed2fd8e3181fea7c09ba79cf64e7e3f4413bf9 (patch) | |
| tree | 1f69733e5daab4915a76a41de0e4d1dc61e12cfb /kernel/trace/trace.h | |
| parent | 3a3527b6461b1298cc53ce72f336346739297ac8 (diff) | |
| parent | fc9ea5a1e53ee54f681e226d735008e2a6f8f470 (diff) | |
| download | olio-linux-3.10-4aed2fd8e3181fea7c09ba79cf64e7e3f4413bf9.tar.xz olio-linux-3.10-4aed2fd8e3181fea7c09ba79cf64e7e3f4413bf9.zip  | |
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (162 commits)
  tracing/kprobes: unregister_trace_probe needs to be called under mutex
  perf: expose event__process function
  perf events: Fix mmap offset determination
  perf, powerpc: fsl_emb: Restore setting perf_sample_data.period
  perf, powerpc: Convert the FSL driver to use local64_t
  perf tools: Don't keep unreferenced maps when unmaps are detected
  perf session: Invalidate last_match when removing threads from rb_tree
  perf session: Free the ref_reloc_sym memory at the right place
  x86,mmiotrace: Add support for tracing STOS instruction
  perf, sched migration: Librarize task states and event headers helpers
  perf, sched migration: Librarize the GUI class
  perf, sched migration: Make the GUI class client agnostic
  perf, sched migration: Make it vertically scrollable
  perf, sched migration: Parameterize cpu height and spacing
  perf, sched migration: Fix key bindings
  perf, sched migration: Ignore unhandled task states
  perf, sched migration: Handle ignored migrate out events
  perf: New migration tool overview
  tracing: Drop cpparg() macro
  perf: Use tracepoint_synchronize_unregister() to flush any pending tracepoint call
  ...
Fix up trivial conflicts in Makefile and drivers/cpufreq/cpufreq.c
Diffstat (limited to 'kernel/trace/trace.h')
| -rw-r--r-- | kernel/trace/trace.h | 90 | 
1 files changed, 6 insertions, 84 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 0605fc00c17..d39b3c5454a 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -9,10 +9,7 @@  #include <linux/mmiotrace.h>  #include <linux/tracepoint.h>  #include <linux/ftrace.h> -#include <trace/boot.h> -#include <linux/kmemtrace.h>  #include <linux/hw_breakpoint.h> -  #include <linux/trace_seq.h>  #include <linux/ftrace_event.h> @@ -25,30 +22,17 @@ enum trace_type {  	TRACE_STACK,  	TRACE_PRINT,  	TRACE_BPRINT, -	TRACE_SPECIAL,  	TRACE_MMIO_RW,  	TRACE_MMIO_MAP,  	TRACE_BRANCH, -	TRACE_BOOT_CALL, -	TRACE_BOOT_RET,  	TRACE_GRAPH_RET,  	TRACE_GRAPH_ENT,  	TRACE_USER_STACK, -	TRACE_KMEM_ALLOC, -	TRACE_KMEM_FREE,  	TRACE_BLK, -	TRACE_KSYM,  	__TRACE_LAST_TYPE,  }; -enum kmemtrace_type_id { -	KMEMTRACE_TYPE_KMALLOC = 0,	/* kmalloc() or kfree(). */ -	KMEMTRACE_TYPE_CACHE,		/* kmem_cache_*(). */ -	KMEMTRACE_TYPE_PAGES,		/* __get_free_pages() and friends. */ -}; - -extern struct tracer boot_tracer;  #undef __field  #define __field(type, item)		type	item; @@ -204,23 +188,15 @@ extern void __ftrace_bad_type(void);  		IF_ASSIGN(var, ent, struct userstack_entry, TRACE_USER_STACK);\  		IF_ASSIGN(var, ent, struct print_entry, TRACE_PRINT);	\  		IF_ASSIGN(var, ent, struct bprint_entry, TRACE_BPRINT);	\ -		IF_ASSIGN(var, ent, struct special_entry, 0);		\  		IF_ASSIGN(var, ent, struct trace_mmiotrace_rw,		\  			  TRACE_MMIO_RW);				\  		IF_ASSIGN(var, ent, struct trace_mmiotrace_map,		\  			  TRACE_MMIO_MAP);				\ -		IF_ASSIGN(var, ent, struct trace_boot_call, TRACE_BOOT_CALL);\ -		IF_ASSIGN(var, ent, struct trace_boot_ret, TRACE_BOOT_RET);\  		IF_ASSIGN(var, ent, struct trace_branch, TRACE_BRANCH); \  		IF_ASSIGN(var, ent, struct ftrace_graph_ent_entry,	\  			  TRACE_GRAPH_ENT);		\  		IF_ASSIGN(var, ent, struct ftrace_graph_ret_entry,	\  			  TRACE_GRAPH_RET);		\ -		IF_ASSIGN(var, ent, struct kmemtrace_alloc_entry,	\ -			  TRACE_KMEM_ALLOC);	\ -		IF_ASSIGN(var, ent, struct kmemtrace_free_entry,	\ -			  TRACE_KMEM_FREE);	\ -		IF_ASSIGN(var, ent, struct ksym_trace_entry, TRACE_KSYM);\  		__ftrace_bad_type();					\  	} while (0) @@ -298,6 +274,7 @@ struct tracer {  	struct tracer		*next;  	int			print_max;  	struct tracer_flags	*flags; +	int			use_max_tr;  }; @@ -318,7 +295,6 @@ struct dentry *trace_create_file(const char *name,  				 const struct file_operations *fops);  struct dentry *tracing_init_dentry(void); -void init_tracer_sysprof_debugfs(struct dentry *d_tracer);  struct ring_buffer_event; @@ -363,11 +339,6 @@ void tracing_sched_wakeup_trace(struct trace_array *tr,  				struct task_struct *wakee,  				struct task_struct *cur,  				unsigned long flags, int pc); -void trace_special(struct trace_array *tr, -		   struct trace_array_cpu *data, -		   unsigned long arg1, -		   unsigned long arg2, -		   unsigned long arg3, int pc);  void trace_function(struct trace_array *tr,  		    unsigned long ip,  		    unsigned long parent_ip, @@ -398,8 +369,6 @@ extern cpumask_var_t __read_mostly tracing_buffer_mask;  #define for_each_tracing_cpu(cpu)	\  	for_each_cpu(cpu, tracing_buffer_mask) -extern int process_new_ksym_entry(char *ksymname, int op, unsigned long addr); -  extern unsigned long nsecs_to_usecs(unsigned long nsecs);  extern unsigned long tracing_thresh; @@ -469,12 +438,8 @@ extern int trace_selftest_startup_nop(struct tracer *trace,  					 struct trace_array *tr);  extern int trace_selftest_startup_sched_switch(struct tracer *trace,  					       struct trace_array *tr); -extern int trace_selftest_startup_sysprof(struct tracer *trace, -					       struct trace_array *tr);  extern int trace_selftest_startup_branch(struct tracer *trace,  					 struct trace_array *tr); -extern int trace_selftest_startup_ksym(struct tracer *trace, -					 struct trace_array *tr);  #endif /* CONFIG_FTRACE_STARTUP_TEST */  extern void *head_page(struct trace_array_cpu *data); @@ -636,6 +601,7 @@ enum trace_iterator_flags {  	TRACE_ITER_LATENCY_FMT		= 0x20000,  	TRACE_ITER_SLEEP_TIME		= 0x40000,  	TRACE_ITER_GRAPH_TIME		= 0x80000, +	TRACE_ITER_RECORD_CMD		= 0x100000,  };  /* @@ -647,54 +613,6 @@ enum trace_iterator_flags {  extern struct tracer nop_trace; -/** - * ftrace_preempt_disable - disable preemption scheduler safe - * - * When tracing can happen inside the scheduler, there exists - * cases that the tracing might happen before the need_resched - * flag is checked. If this happens and the tracer calls - * preempt_enable (after a disable), a schedule might take place - * causing an infinite recursion. - * - * To prevent this, we read the need_resched flag before - * disabling preemption. When we want to enable preemption we - * check the flag, if it is set, then we call preempt_enable_no_resched. - * Otherwise, we call preempt_enable. - * - * The rational for doing the above is that if need_resched is set - * and we have yet to reschedule, we are either in an atomic location - * (where we do not need to check for scheduling) or we are inside - * the scheduler and do not want to resched. - */ -static inline int ftrace_preempt_disable(void) -{ -	int resched; - -	resched = need_resched(); -	preempt_disable_notrace(); - -	return resched; -} - -/** - * ftrace_preempt_enable - enable preemption scheduler safe - * @resched: the return value from ftrace_preempt_disable - * - * This is a scheduler safe way to enable preemption and not miss - * any preemption checks. The disabled saved the state of preemption. - * If resched is set, then we are either inside an atomic or - * are inside the scheduler (we would have already scheduled - * otherwise). In this case, we do not want to call normal - * preempt_enable, but preempt_enable_no_resched instead. - */ -static inline void ftrace_preempt_enable(int resched) -{ -	if (resched) -		preempt_enable_no_resched_notrace(); -	else -		preempt_enable_notrace(); -} -  #ifdef CONFIG_BRANCH_TRACER  extern int enable_branch_tracing(struct trace_array *tr);  extern void disable_branch_tracing(void); @@ -785,6 +703,8 @@ struct filter_pred {  	int 			pop_n;  }; +extern struct list_head ftrace_common_fields; +  extern enum regex_type  filter_parse_regex(char *buff, int len, char **search, int *not);  extern void print_event_filter(struct ftrace_event_call *call, @@ -814,6 +734,8 @@ filter_check_discard(struct ftrace_event_call *call, void *rec,  	return 0;  } +extern void trace_event_enable_cmd_record(bool enable); +  extern struct mutex event_mutex;  extern struct list_head ftrace_events;  |