projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: race with the viewer and readiness of streams
[lttng-tools.git]
/
src
/
common
/
consumer-timer.c
diff --git
a/src/common/consumer-timer.c
b/src/common/consumer-timer.c
index 05a09c2349af27aacf9b4332387e53d29de579f1..b681ae763379deaa55d68da8f6113b7b99b87eb3 100644
(file)
--- a/
src/common/consumer-timer.c
+++ b/
src/common/consumer-timer.c
@@
-21,7
+21,7
@@
#include <inttypes.h>
#include <signal.h>
#include <inttypes.h>
#include <signal.h>
-#include <
lttng/ust-ctl
.h>
+#include <
bin/lttng-consumerd/health-consumerd
.h>
#include <common/common.h>
#include <common/kernel-ctl/kernel-ctl.h>
#include <common/kernel-consumer/kernel-consumer.h>
#include <common/common.h>
#include <common/kernel-ctl/kernel-ctl.h>
#include <common/kernel-consumer/kernel-consumer.h>
@@
-115,7
+115,7
@@
static void metadata_switch_timer(struct lttng_consumer_local_data *ctx,
static int send_empty_index(struct lttng_consumer_stream *stream, uint64_t ts)
{
int ret;
static int send_empty_index(struct lttng_consumer_stream *stream, uint64_t ts)
{
int ret;
- struct
lttng
_packet_index index;
+ struct
ctf
_packet_index index;
memset(&index, 0, sizeof(index));
index.timestamp_end = htobe64(ts);
memset(&index, 0, sizeof(index));
index.timestamp_end = htobe64(ts);
@@
-397,7
+397,7
@@
void consumer_timer_live_start(struct lttng_consumer_channel *channel,
assert(channel);
assert(channel->key);
assert(channel);
assert(channel->key);
- if (live_timer_interval
=
= 0) {
+ if (live_timer_interval
<
= 0) {
return;
}
return;
}
@@
-470,12
+470,20
@@
void *consumer_timer_thread(void *data)
siginfo_t info;
struct lttng_consumer_local_data *ctx = data;
siginfo_t info;
struct lttng_consumer_local_data *ctx = data;
+ health_register(health_consumerd, HEALTH_CONSUMERD_TYPE_METADATA_TIMER);
+
+ health_code_update();
+
/* Only self thread will receive signal mask. */
setmask(&mask);
CMM_STORE_SHARED(timer_signal.tid, pthread_self());
while (1) {
/* Only self thread will receive signal mask. */
setmask(&mask);
CMM_STORE_SHARED(timer_signal.tid, pthread_self());
while (1) {
+ health_code_update();
+
+ health_poll_entry();
signr = sigwaitinfo(&mask, &info);
signr = sigwaitinfo(&mask, &info);
+ health_poll_exit();
if (signr == -1) {
if (errno != EINTR) {
PERROR("sigwaitinfo");
if (signr == -1) {
if (errno != EINTR) {
PERROR("sigwaitinfo");
@@
-495,5
+503,9
@@
void *consumer_timer_thread(void *data)
}
}
}
}
+ /* Currently never reached */
+ health_unregister(health_consumerd);
+
+ /* Never return */
return NULL;
}
return NULL;
}
This page took
0.024783 seconds
and
4
git commands to generate.