projects
/
lttng-modules.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Check for stale version.h files
[lttng-modules.git]
/
lttng-events.c
diff --git
a/lttng-events.c
b/lttng-events.c
index f47e9dcfcebbf9f62c488eac3b339e0d497c1499..39e04e51dd0918559b03f35f1f4a215726abb95c 100644
(file)
--- a/
lttng-events.c
+++ b/
lttng-events.c
@@
-98,6
+98,8
@@
struct lttng_session *lttng_session_create(void)
kref_init(&metadata_cache->refcount);
session->metadata_cache = metadata_cache;
INIT_LIST_HEAD(&metadata_cache->metadata_stream);
kref_init(&metadata_cache->refcount);
session->metadata_cache = metadata_cache;
INIT_LIST_HEAD(&metadata_cache->metadata_stream);
+ memcpy(&metadata_cache->uuid, &session->uuid,
+ sizeof(metadata_cache->uuid));
list_add(&session->list, &sessions);
mutex_unlock(&sessions_mutex);
return session;
list_add(&session->list, &sessions);
mutex_unlock(&sessions_mutex);
return session;
@@
-519,7
+521,7
@@
int _lttng_event_unregister(struct lttng_event *event)
switch (event->instrumentation) {
case LTTNG_KERNEL_TRACEPOINT:
switch (event->instrumentation) {
case LTTNG_KERNEL_TRACEPOINT:
- ret = kabi_2635_tracepoint_probe_unregister(event->desc->name,
+ ret = kabi_2635_tracepoint_probe_unregister(event->desc->
k
name,
event->desc->probe_callback,
event);
if (ret)
event->desc->probe_callback,
event);
if (ret)
@@
-597,16
+599,20
@@
int lttng_metadata_output_channel(struct lttng_metadata_stream *stream,
/*
* Ensure we support mutiple get_next / put sequences followed
/*
* Ensure we support mutiple get_next / put sequences followed
- * by put_next.
+ * by put_next. The metadata stream lock internally protects
+ * reading the metadata cache. It can indeed be read
+ * concurrently by "get_next_subbuf" and "flush" operations on
+ * the buffer invoked by different processes.
*/
*/
+ mutex_lock(&stream->lock);
WARN_ON(stream->metadata_in < stream->metadata_out);
if (stream->metadata_in != stream->metadata_out)
WARN_ON(stream->metadata_in < stream->metadata_out);
if (stream->metadata_in != stream->metadata_out)
-
return 0
;
+
goto end
;
len = stream->metadata_cache->metadata_written -
stream->metadata_in;
if (!len)
len = stream->metadata_cache->metadata_written -
stream->metadata_in;
if (!len)
-
return 0
;
+
goto end
;
reserve_len = min_t(size_t,
stream->transport->ops.packet_avail_size(chan),
len);
reserve_len = min_t(size_t,
stream->transport->ops.packet_avail_size(chan),
len);
@@
-628,6
+634,7
@@
int lttng_metadata_output_channel(struct lttng_metadata_stream *stream,
ret = reserve_len;
end:
ret = reserve_len;
end:
+ mutex_unlock(&stream->lock);
return ret;
}
return ret;
}
@@
-1286,4
+1293,5
@@
MODULE_AUTHOR("Mathieu Desnoyers <mathieu.desnoyers@efficios.com>");
MODULE_DESCRIPTION("LTTng Events");
MODULE_VERSION(__stringify(LTTNG_MODULES_MAJOR_VERSION) "."
__stringify(LTTNG_MODULES_MINOR_VERSION) "."
MODULE_DESCRIPTION("LTTng Events");
MODULE_VERSION(__stringify(LTTNG_MODULES_MAJOR_VERSION) "."
__stringify(LTTNG_MODULES_MINOR_VERSION) "."
- __stringify(LTTNG_MODULES_PATCHLEVEL_VERSION));
+ __stringify(LTTNG_MODULES_PATCHLEVEL_VERSION)
+ LTTNG_MODULES_EXTRAVERSION);
This page took
0.024281 seconds
and
4
git commands to generate.