X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=libust%2Fchannels.c;h=32942cf795f79a4d7c1f7b63755eef68a9c4fdf8;hb=7166e240639cec06f4273f65059300f98b5296f6;hp=b7f35439a86e189413e7fa8ef81374c30a945d12;hpb=b102c2b0b07a155285716d9f7fd788662cecd54b;p=lttng-ust.git diff --git a/libust/channels.c b/libust/channels.c index b7f35439..32942cf7 100644 --- a/libust/channels.c +++ b/libust/channels.c @@ -23,15 +23,11 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -//ust// #include -//ust// #include -//ust// #include -//ust// #include - +#include #include +#include #include "channels.h" #include "usterr.h" -#include /* * ltt_channel_mutex may be nested inside the LTT trace mutex. @@ -49,6 +45,9 @@ static LIST_HEAD(ltt_channels); static unsigned int free_index; static struct kref index_kref; /* Keeps track of allocated trace channels */ +int ust_channels_overwrite_by_default = 0; +int ust_channels_request_collection_by_default = 1; + static struct ltt_channel_setting *lookup_channel(const char *name) { struct ltt_channel_setting *iter; @@ -75,13 +74,14 @@ static void release_channel_setting(struct kref *kref) if (uatomic_read(&index_kref.refcount) == 0 && uatomic_read(&setting->kref.refcount) == 0) { list_del(&setting->list); - kfree(setting); + free(setting); free_index = 0; list_for_each_entry(iter, <t_channels, list) { iter->index = free_index++; iter->free_event_id = 0; } + /* FIXME: why not run this? */ //ust// markers_compact_event_ids(); } } @@ -120,7 +120,7 @@ int ltt_channels_register(const char *name) goto end; } } - setting = kzalloc(sizeof(*setting), GFP_KERNEL); + setting = zmalloc(sizeof(*setting)); if (!setting) { ret = -ENOMEM; goto end; @@ -249,6 +249,7 @@ int ltt_channels_get_index_from_name(const char *name) */ struct ust_channel *ltt_channels_trace_alloc(unsigned int *nr_channels, int overwrite, + int request_collection, int active) { struct ust_channel *channel = NULL; @@ -264,8 +265,7 @@ struct ust_channel *ltt_channels_trace_alloc(unsigned int *nr_channels, else kref_get(&index_kref); *nr_channels = free_index; - channel = kzalloc(sizeof(struct ust_channel) * free_index, - GFP_KERNEL); + channel = zmalloc(sizeof(struct ust_channel) * free_index); if (!channel) { WARN("ltt_channel_struct: channel null after alloc"); goto end; @@ -276,6 +276,7 @@ struct ust_channel *ltt_channels_trace_alloc(unsigned int *nr_channels, channel[iter->index].subbuf_size = iter->subbuf_size; channel[iter->index].subbuf_cnt = iter->subbuf_cnt; channel[iter->index].overwrite = overwrite; + channel[iter->index].request_collection = request_collection; channel[iter->index].active = active; channel[iter->index].channel_name = iter->name; } @@ -296,7 +297,7 @@ void ltt_channels_trace_free(struct ust_channel *channels) { lock_markers(); mutex_lock(<t_channel_mutex); - kfree(channels); + free(channels); kref_put(&index_kref, release_trace_channel); mutex_unlock(<t_channel_mutex); unlock_markers();