projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: sessiond: ust-app: per-pid buffers: Create empty ust/ directory
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
trace-ust.c
diff --git
a/src/bin/lttng-sessiond/trace-ust.c
b/src/bin/lttng-sessiond/trace-ust.c
index b1bae1794ab70560d7e4e74c4520793659de4ac9..fc3f3a7a037933b7e817dfcf75bd2a4bd9d7e601 100644
(file)
--- a/
src/bin/lttng-sessiond/trace-ust.c
+++ b/
src/bin/lttng-sessiond/trace-ust.c
@@
-171,7
+171,7
@@
no_match:
* lock MUST be acquired before calling this.
*/
struct ltt_ust_channel *trace_ust_find_channel_by_name(struct lttng_ht *ht,
* lock MUST be acquired before calling this.
*/
struct ltt_ust_channel *trace_ust_find_channel_by_name(struct lttng_ht *ht,
- char *name)
+ c
onst c
har *name)
{
struct lttng_ht_node_str *node;
struct lttng_ht_iter iter;
{
struct lttng_ht_node_str *node;
struct lttng_ht_iter iter;
@@
-574,8
+574,8
@@
int trace_ust_context_type_event_to_ust(
/*
* Return 1 if contexts match, 0 otherwise.
*/
/*
* Return 1 if contexts match, 0 otherwise.
*/
-int trace_ust_match_context(struct ltt_ust_context *uctx,
- struct lttng_event_context *ctx)
+int trace_ust_match_context(
const
struct ltt_ust_context *uctx,
+
const
struct lttng_event_context *ctx)
{
int utype;
{
int utype;
@@
-624,7
+624,7
@@
int trace_ust_match_context(struct ltt_ust_context *uctx,
* Return pointer to structure or NULL.
*/
struct ltt_ust_context *trace_ust_create_context(
* Return pointer to structure or NULL.
*/
struct ltt_ust_context *trace_ust_create_context(
- struct lttng_event_context *ctx)
+
const
struct lttng_event_context *ctx)
{
struct ltt_ust_context *uctx = NULL;
int utype;
{
struct ltt_ust_context *uctx = NULL;
int utype;
@@
-883,6
+883,7
@@
end:
int trace_ust_untrack_pid(struct ltt_ust_session *session, int pid)
{
int retval = LTTNG_OK;
int trace_ust_untrack_pid(struct ltt_ust_session *session, int pid)
{
int retval = LTTNG_OK;
+ bool should_update_apps = false;
if (pid == -1) {
/* Create empty tracker, replace old tracker. */
if (pid == -1) {
/* Create empty tracker, replace old tracker. */
@@
-899,7
+900,7
@@
int trace_ust_untrack_pid(struct ltt_ust_session *session, int pid)
fini_pid_tracker(&tmp_tracker);
/* Remove session from all applications */
fini_pid_tracker(&tmp_tracker);
/* Remove session from all applications */
-
ust_app_global_update_all(session)
;
+
should_update_apps = true
;
} else {
int ret;
struct ust_app *app;
} else {
int ret;
struct ust_app *app;
@@
-918,9
+919,12
@@
int trace_ust_untrack_pid(struct ltt_ust_session *session, int pid)
/* Remove session from application. */
app = ust_app_find_by_pid(pid);
if (app) {
/* Remove session from application. */
app = ust_app_find_by_pid(pid);
if (app) {
-
ust_app_global_update(session, app)
;
+
should_update_apps = true
;
}
}
}
}
+ if (should_update_apps && session->active) {
+ ust_app_global_update_all(session);
+ }
end:
return retval;
}
end:
return retval;
}
@@
-1161,7
+1165,8
@@
static void destroy_domain_global(struct ltt_ust_domain_global *dom)
}
/*
}
/*
- * Cleanup ust session structure
+ * Cleanup ust session structure, keeping data required by
+ * destroy notifier.
*
* Should *NOT* be called with RCU read-side lock held.
*/
*
* Should *NOT* be called with RCU read-side lock held.
*/
@@
-1197,9
+1202,13
@@
void trace_ust_destroy_session(struct ltt_ust_session *session)
buffer_reg_uid_destroy(reg, session->consumer);
}
buffer_reg_uid_destroy(reg, session->consumer);
}
- consumer_output_put(session->consumer);
-
fini_pid_tracker(&session->pid_tracker);
lttng_trace_chunk_put(session->current_trace_chunk);
fini_pid_tracker(&session->pid_tracker);
lttng_trace_chunk_put(session->current_trace_chunk);
+}
+
+/* Free elements needed by destroy notifiers. */
+void trace_ust_free_session(struct ltt_ust_session *session)
+{
+ consumer_output_put(session->consumer);
free(session);
}
free(session);
}
This page took
0.024947 seconds
and
4
git commands to generate.