2 * Copyright (C) 2014 - Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License, version 2 only, as
6 * published by the Free Software Foundation.
8 * This program is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13 * You should have received a copy of the GNU General Public License along with
14 * this program; if not, write to the Free Software Foundation, Inc., 51
15 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 #include <common/error.h>
20 #include <common/config/session-config.h>
22 #include "load-session-thread.h"
23 #include "lttng-sessiond.h"
26 * Destroy the thread data previously created with the init function.
28 void load_session_destroy_data(struct load_session_thread_data
*data
)
34 if (data
->sem_initialized
) {
37 ret
= sem_destroy(&data
->message_thread_ready
);
39 PERROR("sem_destroy message_thread_ready");
45 * Initialize the thread data. This MUST be called before the thread load
48 * Return 0 on success else a negative value. Note that the destroy function
49 * can be called with no or partially initialized data.
51 int load_session_init_data(struct load_session_thread_data
**data
)
54 struct load_session_thread_data
*_data
= NULL
;
59 * Allocate memory here since this function is called from the main thread
60 * can die *before* the end of the load session thread.
62 _data
= zmalloc(sizeof(*_data
));
64 PERROR("zmalloc load session info");
67 ret
= sem_init(&_data
->message_thread_ready
, 0, 0);
69 PERROR("sem_init message_thread_ready");
72 _data
->sem_initialized
= 1;
83 * This thread loads session configurations once the session daemon is
84 * ready to process client messages.
86 void *thread_load_session(void *data
)
89 struct load_session_thread_data
*info
= data
;
91 DBG("[load-session-thread] Load session");
93 ret
= sem_wait(&info
->message_thread_ready
);
95 PERROR("sem_wait message_thread_ready");
99 /* Override existing session and autoload also. */
100 ret
= config_load_session(info
->path
, NULL
, 1, 1, NULL
);
102 ERR("Session load failed: %s", error_get_str(ret
));
106 sessiond_signal_parents();
This page took 0.032245 seconds and 5 git commands to generate.