//ust// #include <linux/delay.h>
//ust// #include <linux/vmalloc.h>
//ust// #include <asm/atomic.h>
-#include <kcompat/rculist.h>
+#include <urcu-bp.h>
+#include <urcu/rculist.h>
-#include "kernelcompat.h"
+#include <ust/kernelcompat.h>
#include "tracercore.h"
#include "tracer.h"
#include "usterr.h"
static void trace_async_wakeup(struct ltt_trace_struct *trace)
{
int i;
- struct ltt_channel_struct *chan;
+ struct ust_channel *chan;
/* Must check each channel for pending read wakeup */
for (i = 0; i < trace->nr_channels; i++) {
*/
void ltt_release_transport(struct kref *kref)
{
- struct ltt_trace_struct *trace = container_of(kref,
- struct ltt_trace_struct, ltt_transport_kref);
-//ust// trace->ops->remove_dirs(trace);
+//ust// struct ltt_trace_struct *trace = container_of(kref,
+//ust// struct ltt_trace_struct, ltt_transport_kref);
+//ust// trace->ops->remove_dirs(trace);
}
//ust// EXPORT_SYMBOL_GPL(ltt_release_transport);
int err = 0;
struct ltt_trace_struct *trace;
unsigned int subbuf_size, subbuf_cnt;
- unsigned long flags;
+//ust// unsigned long flags;
int chan;
const char *channel_name;
subbuf_cnt = trace->channels[chan].subbuf_cnt;
prepare_chan_size_num(&subbuf_size, &subbuf_cnt);
err = trace->ops->create_channel(trace_name, trace,
- trace->dentry.trace_root,
channel_name,
&trace->channels[chan],
subbuf_size,
if (trace->channels[chan].active)
trace->ops->remove_channel(&trace->channels[chan]);
-dirs_error:
+//ust// dirs_error:
//ust// module_put(trace->transport->owner);
transport_error:
//ust// put_trace_clock();
* We will make a new ltt_control based on debugfs, and control each channel's
* buffer.
*/
-static int ltt_trace_create(const char *trace_name, const char *trace_type,
- enum trace_mode mode,
- unsigned int subbuf_size_low, unsigned int n_subbufs_low,
- unsigned int subbuf_size_med, unsigned int n_subbufs_med,
- unsigned int subbuf_size_high, unsigned int n_subbufs_high)
-{
- int err = 0;
-
- err = ltt_trace_setup(trace_name);
- if (IS_ERR_VALUE(err))
- return err;
-
- err = ltt_trace_set_type(trace_name, trace_type);
- if (IS_ERR_VALUE(err))
- return err;
-
- err = ltt_trace_alloc(trace_name);
- if (IS_ERR_VALUE(err))
- return err;
-
- return err;
-}
+//ust// static int ltt_trace_create(const char *trace_name, const char *trace_type,
+//ust// enum trace_mode mode,
+//ust// unsigned int subbuf_size_low, unsigned int n_subbufs_low,
+//ust// unsigned int subbuf_size_med, unsigned int n_subbufs_med,
+//ust// unsigned int subbuf_size_high, unsigned int n_subbufs_high)
+//ust// {
+//ust// int err = 0;
+//ust//
+//ust// err = ltt_trace_setup(trace_name);
+//ust// if (IS_ERR_VALUE(err))
+//ust// return err;
+//ust//
+//ust// err = ltt_trace_set_type(trace_name, trace_type);
+//ust// if (IS_ERR_VALUE(err))
+//ust// return err;
+//ust//
+//ust// err = ltt_trace_alloc(trace_name);
+//ust// if (IS_ERR_VALUE(err))
+//ust// return err;
+//ust//
+//ust// return err;
+//ust// }
/* Must be called while sure that trace is in the list. */
-static int _ltt_trace_destroy(struct ltt_trace_struct *trace)
+static int _ltt_trace_destroy(struct ltt_trace_struct *trace)
{
int err = -EPERM;
goto active_error;
}
/* Everything went fine */
-//ust// list_del_rcu(&trace->list);
-//ust// synchronize_sched();
+ list_del_rcu(&trace->list);
+ synchronize_rcu();
if (list_empty(<t_traces.head)) {
//ust// clear_kernel_trace_flag_all_tasks();
/*
static void __ltt_trace_destroy(struct ltt_trace_struct *trace)
{
int i;
- struct ltt_channel_struct *chan;
+ struct ust_channel *chan;
for (i = 0; i < trace->nr_channels; i++) {
chan = &trace->channels[i];
return err;
/* error handling */
-get_ltt_run_filter_error:
+//ust// get_ltt_run_filter_error:
traces_error:
return err;
}
}
//ust// module_put(ltt_filter_control_owner);
-get_module_error:
+//ust// get_module_error:
trace_error:
ltt_unlock_traces();
return err;