2 * LTT core in-kernel infrastructure.
4 * Copyright 2006 - Mathieu Desnoyers mathieu.desnoyers@polymtl.ca
6 * Distributed under the GPL license
9 #include <linux/ltt-core.h>
10 #include <linux/percpu.h>
11 #include <linux/module.h>
12 #include <linux/debugfs.h>
14 /* Traces structures */
15 struct ltt_traces ltt_traces
= {
16 .setup_head
= LIST_HEAD_INIT(ltt_traces
.setup_head
),
17 .head
= LIST_HEAD_INIT(ltt_traces
.head
),
19 EXPORT_SYMBOL(ltt_traces
);
21 /* Traces list writer locking */
22 static DEFINE_MUTEX(ltt_traces_mutex
);
24 /* dentry of ltt's root dir */
25 static struct dentry
*ltt_root_dentry
;
26 struct dentry
*get_ltt_root(void)
28 if (!ltt_root_dentry
) {
29 ltt_root_dentry
= debugfs_create_dir(LTT_ROOT
, NULL
);
31 printk(KERN_ERR
"LTT : create ltt root dir failed\n");
33 return ltt_root_dentry
;
35 EXPORT_SYMBOL_GPL(get_ltt_root
);
37 void ltt_lock_traces(void)
39 mutex_lock(<t_traces_mutex
);
41 EXPORT_SYMBOL_GPL(ltt_lock_traces
);
43 void ltt_unlock_traces(void)
45 mutex_unlock(<t_traces_mutex
);
47 EXPORT_SYMBOL_GPL(ltt_unlock_traces
);
49 DEFINE_PER_CPU(unsigned int, ltt_nesting
);
50 EXPORT_PER_CPU_SYMBOL(ltt_nesting
);
52 int ltt_run_filter_default(void *trace
, uint16_t eID
)
57 /* This function pointer is protected by a trace activation check */
58 ltt_run_filter_functor ltt_run_filter
= ltt_run_filter_default
;
59 EXPORT_SYMBOL_GPL(ltt_run_filter
);
61 void ltt_filter_register(ltt_run_filter_functor func
)
63 ltt_run_filter
= func
;
65 EXPORT_SYMBOL_GPL(ltt_filter_register
);
67 void ltt_filter_unregister(void)
69 ltt_run_filter
= ltt_run_filter_default
;
71 EXPORT_SYMBOL_GPL(ltt_filter_unregister
);