X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=libust%2Ftracer.c;h=a3ace72c0811de72d9cf08824dfab2137f80f229;hb=fbca6b624335eef18c8d86194aeb101a720168f4;hp=b0393e213e217de881dfeb4a7d7a3af599d674aa;hpb=4268fdcdcb96f72e945f52b9f94f6ad841e297c9;p=ust.git diff --git a/libust/tracer.c b/libust/tracer.c index b0393e2..a3ace72 100644 --- a/libust/tracer.c +++ b/libust/tracer.c @@ -4,6 +4,20 @@ * (C) Copyright 2005-2008 - * Mathieu Desnoyers (mathieu.desnoyers@polymtl.ca) * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * * Tracing management internal kernel API. Trace buffer allocation/free, tracing * start/stop. * @@ -38,9 +52,9 @@ //ust// #include //ust// #include //ust// #include -#include +#include -#include "kernelcompat.h" +#include #include "tracercore.h" #include "tracer.h" #include "usterr.h" @@ -360,9 +374,9 @@ struct ltt_trace_struct *_ltt_trace_find_setup(const char *trace_name) */ 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); @@ -668,7 +682,7 @@ int ltt_trace_alloc(const char *trace_name) 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; @@ -754,7 +768,7 @@ create_channel_error: 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(); @@ -769,31 +783,31 @@ traces_error: * 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; @@ -809,8 +823,8 @@ static int _ltt_trace_destroy(struct ltt_trace_struct *trace) 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(); /* @@ -932,7 +946,7 @@ static int _ltt_trace_start(struct ltt_trace_struct *trace) return err; /* error handling */ -get_ltt_run_filter_error: +//ust// get_ltt_run_filter_error: traces_error: return err; } @@ -1099,7 +1113,7 @@ int ltt_filter_control(enum ltt_filter_control_msg msg, const char *trace_name) } //ust// module_put(ltt_filter_control_owner); -get_module_error: +//ust// get_module_error: trace_error: ltt_unlock_traces(); return err;