projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Updating lttng-ust-ctl header file
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
ust-registry.c
diff --git
a/src/bin/lttng-sessiond/ust-registry.c
b/src/bin/lttng-sessiond/ust-registry.c
index 3c3aa91f02ce1b0a4719bdc982af80e22bc3fd8c..d63c750087249ff67c7547eaf74179f0700c8132 100644
(file)
--- a/
src/bin/lttng-sessiond/ust-registry.c
+++ b/
src/bin/lttng-sessiond/ust-registry.c
@@
-26,6
+26,8
@@
#include "ust-registry.h"
#include "ust-app.h"
#include "utils.h"
#include "ust-registry.h"
#include "ust-app.h"
#include "utils.h"
+#include "lttng-sessiond.h"
+#include "notification-thread-commands.h"
/*
* Hash table match function for event in the registry.
/*
* Hash table match function for event in the registry.
@@
-695,13
+697,23
@@
void destroy_channel_rcu(struct rcu_head *head)
* free the registry pointer since it might not have been allocated before so
* it's the caller responsability.
*/
* free the registry pointer since it might not have been allocated before so
* it's the caller responsability.
*/
-static void destroy_channel(struct ust_registry_channel *chan)
+static void destroy_channel(struct ust_registry_channel *chan
, bool notif
)
{
struct lttng_ht_iter iter;
struct ust_registry_event *event;
{
struct lttng_ht_iter iter;
struct ust_registry_event *event;
+ enum lttng_error_code cmd_ret;
assert(chan);
assert(chan);
+ if (notif) {
+ cmd_ret = notification_thread_command_remove_channel(
+ notification_thread_handle, chan->consumer_key,
+ LTTNG_DOMAIN_UST);
+ if (cmd_ret != LTTNG_OK) {
+ ERR("Failed to remove channel from notification thread");
+ }
+ }
+
rcu_read_lock();
/* Destroy all event associated with this registry. */
cds_lfht_for_each_entry(chan->ht->ht, &iter.iter, event, node.node) {
rcu_read_lock();
/* Destroy all event associated with this registry. */
cds_lfht_for_each_entry(chan->ht->ht, &iter.iter, event, node.node) {
@@
-759,7
+771,7
@@
int ust_registry_channel_add(struct ust_registry_session *session,
return 0;
error:
return 0;
error:
- destroy_channel(chan);
+ destroy_channel(chan
, false
);
error_alloc:
return ret;
}
error_alloc:
return ret;
}
@@
-798,7
+810,7
@@
end:
* Remove channel using key from registry and free memory.
*/
void ust_registry_channel_del_free(struct ust_registry_session *session,
* Remove channel using key from registry and free memory.
*/
void ust_registry_channel_del_free(struct ust_registry_session *session,
- uint64_t key)
+ uint64_t key
, bool notif
)
{
struct lttng_ht_iter iter;
struct ust_registry_channel *chan;
{
struct lttng_ht_iter iter;
struct ust_registry_channel *chan;
@@
-817,7
+829,7
@@
void ust_registry_channel_del_free(struct ust_registry_session *session,
ret = lttng_ht_del(session->channels, &iter);
assert(!ret);
rcu_read_unlock();
ret = lttng_ht_del(session->channels, &iter);
assert(!ret);
rcu_read_unlock();
- destroy_channel(chan);
+ destroy_channel(chan
, notif
);
end:
return;
end:
return;
@@
-908,7
+920,7
@@
int ust_registry_session_init(struct ust_registry_session **sessionp,
session->enums = lttng_ht_new(0, LTTNG_HT_TYPE_STRING);
if (!session->enums) {
session->enums = lttng_ht_new(0, LTTNG_HT_TYPE_STRING);
if (!session->enums) {
-
ret = -ENOMEM
;
+
ERR("Failed to create enums hash table")
;
goto error;
}
/* hash/match functions are specified at call site. */
goto error;
}
/* hash/match functions are specified at call site. */
@@
-972,7
+984,7
@@
void ust_registry_session_destroy(struct ust_registry_session *reg)
/* Delete the node from the ht and free it. */
ret = lttng_ht_del(reg->channels, &iter);
assert(!ret);
/* Delete the node from the ht and free it. */
ret = lttng_ht_del(reg->channels, &iter);
assert(!ret);
- destroy_channel(chan);
+ destroy_channel(chan
, true
);
}
rcu_read_unlock();
ht_cleanup_push(reg->channels);
}
rcu_read_unlock();
ht_cleanup_push(reg->channels);
This page took
0.027614 seconds
and
4
git commands to generate.