#include <common/sessiond-comm/sessiond-comm.h>
#include "lttng-consumerd.h"
+#include "health-consumerd.h"
/* TODO : support UST (all direct kernel-ctl accesses). */
/* the liblttngconsumerd context */
static struct lttng_consumer_local_data *ctx;
+/* Consumerd health monitoring */
+struct health_app *health_consumerd;
+
/*
* Signal handler for the daemon
*/
set_ulimit();
}
+ health_consumerd = health_app_create(NR_HEALTH_CONSUMERD_TYPES);
+ if (!health_consumerd) {
+ goto error;
+ }
+
/* create the consumer instance with and assign the callbacks */
ctx = lttng_consumer_create(opt_type, lttng_consumer_read_subbuffer,
NULL, lttng_consumer_on_recv_stream, NULL);
lttng_consumer_set_error_sock(ctx, ret);
/*
- * For UST consumer, we block RT signals used for periodical metadata flush
- * in main and create a dedicated thread to handle these signals.
+ * Block RT signals used for UST periodical metadata flush and the live
+ * timer in main, and create a dedicated thread to handle these signals.
*/
- switch (opt_type) {
- case LTTNG_CONSUMER32_UST:
- case LTTNG_CONSUMER64_UST:
- consumer_signal_init();
- break;
- default:
- break;
- }
+ consumer_signal_init();
+
ctx->type = opt_type;
/* Initialize communication library */
goto sessiond_error;
}
- switch (opt_type) {
- case LTTNG_CONSUMER32_UST:
- case LTTNG_CONSUMER64_UST:
- /* Create the thread to manage the metadata periodic timers */
- ret = pthread_create(&metadata_timer_thread, NULL,
- consumer_timer_metadata_thread, (void *) ctx);
- if (ret != 0) {
- perror("pthread_create");
- goto metadata_timer_error;
- }
+ /*
+ * Create the thread to manage the UST metadata periodic timer and
+ * live timer.
+ */
+ ret = pthread_create(&metadata_timer_thread, NULL,
+ consumer_timer_thread, (void *) ctx);
+ if (ret != 0) {
+ perror("pthread_create");
+ goto metadata_timer_error;
+ }
- ret = pthread_detach(metadata_timer_thread);
- if (ret) {
- errno = ret;
- perror("pthread_detach");
- }
- break;
- default:
- break;
+ ret = pthread_detach(metadata_timer_thread);
+ if (ret) {
+ errno = ret;
+ perror("pthread_detach");
}
metadata_timer_error:
end:
lttng_consumer_destroy(ctx);
lttng_consumer_cleanup();
+ if (health_consumerd) {
+ health_app_destroy(health_consumerd);
+ }
return ret;
}