projects
/
deliverable
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Launch the timer thread using lttng_thread
[deliverable/lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
timer.c
diff --git
a/src/bin/lttng-sessiond/timer.c
b/src/bin/lttng-sessiond/timer.c
index d70d16710c91e7200f1a0c78f078e3d68a00c201..9915767657fdbdc790d4b8568cd6ecb710b8a40d 100644
(file)
--- a/
src/bin/lttng-sessiond/timer.c
+++ b/
src/bin/lttng-sessiond/timer.c
@@
-24,6
+24,7
@@
#include "timer.h"
#include "health-sessiond.h"
#include "rotation-thread.h"
#include "timer.h"
#include "health-sessiond.h"
#include "rotation-thread.h"
+#include "thread.h"
#define LTTNG_SESSIOND_SIG_QS SIGRTMIN + 10
#define LTTNG_SESSIOND_SIG_EXIT SIGRTMIN + 11
#define LTTNG_SESSIOND_SIG_QS SIGRTMIN + 10
#define LTTNG_SESSIOND_SIG_EXIT SIGRTMIN + 11
@@
-344,7
+345,8
@@
int timer_signal_init(void)
/*
* This thread is the sighandler for the timer signals.
*/
/*
* This thread is the sighandler for the timer signals.
*/
-void *timer_thread_func(void *data)
+static
+void *thread_timer(void *data)
{
int signr;
sigset_t mask;
{
int signr;
sigset_t mask;
@@
-388,15
+390,9
@@
void *timer_thread_func(void *data)
struct ltt_session *session =
(struct ltt_session *) info.si_value.sival_ptr;
struct ltt_session *session =
(struct ltt_session *) info.si_value.sival_ptr;
- session_lock_list();
- session_lock(session);
- /* Acquires a reference to the session. */
rotation_thread_enqueue_job(ctx->rotation_thread_job_queue,
ROTATION_THREAD_JOB_TYPE_CHECK_PENDING_ROTATION,
session);
rotation_thread_enqueue_job(ctx->rotation_thread_job_queue,
ROTATION_THREAD_JOB_TYPE_CHECK_PENDING_ROTATION,
session);
- /* Release the timer's reference to the session. */
- (void) timer_session_rotation_pending_check_stop(session);
- session_unlock_list();
} else if (signr == LTTNG_SESSIOND_SIG_SCHEDULED_ROTATION) {
rotation_thread_enqueue_job(ctx->rotation_thread_job_queue,
ROTATION_THREAD_JOB_TYPE_SCHEDULED_ROTATION,
} else if (signr == LTTNG_SESSIOND_SIG_SCHEDULED_ROTATION) {
rotation_thread_enqueue_job(ctx->rotation_thread_job_queue,
ROTATION_THREAD_JOB_TYPE_SCHEDULED_ROTATION,
@@
-420,7
+416,27
@@
end:
return NULL;
}
return NULL;
}
-void timer_exit(void)
+static
+bool shutdown_timer_thread(void *data)
+{
+ return kill(getpid(), LTTNG_SESSIOND_SIG_EXIT) == 0;
+}
+
+bool launch_timer_thread(
+ struct timer_thread_parameters *timer_thread_parameters)
{
{
- kill(getpid(), LTTNG_SESSIOND_SIG_EXIT);
+ struct lttng_thread *thread;
+
+ thread = lttng_thread_create("Timer",
+ thread_timer,
+ shutdown_timer_thread,
+ NULL,
+ timer_thread_parameters);
+ if (!thread) {
+ goto error;
+ }
+ lttng_thread_put(thread);
+ return true;
+error:
+ return false;
}
}
This page took
0.030876 seconds
and
5
git commands to generate.