int trace;
};
+struct liblttd_instance *instance;
static char path_trace[PATH_MAX];
static char *end_path_trace;
static int path_trace_len = 0;
static void handler(int signo)
{
printf("Signal %d received : exiting cleanly\n", signo);
- liblttd_stop();
+ liblttd_stop_instance(instance);
}
int lttd_on_open_channel(struct liblttd_callbacks *data, struct fd_pair *pair, char *relative_channel_path)
return ret;
}
-int on_new_thread(struct liblttd_callbacks *data, unsigned long thread_num) {
+int lttd_on_new_thread(struct liblttd_callbacks *data, unsigned long thread_num)
+{
int ret;
ret = pipe(thread_pipe);
if (ret < 0) {
return 0;
}
-int on_close_thread(struct liblttd_callbacks *data, unsigned long thread_num) {
+int lttd_on_close_thread(struct liblttd_callbacks *data, unsigned long thread_num)
+{
close(thread_pipe[0]); /* close read end */
close(thread_pipe[1]); /* close write end */
return 0;
lttd_on_new_channels_folder,
lttd_on_read_subbuffer,
NULL,
- on_new_thread,
- on_close_thread,
+ lttd_on_new_thread,
+ lttd_on_close_thread,
NULL
};
exit(-1);
}
}
-
strncpy(path_trace, trace_name, PATH_MAX-1);
path_trace_len = strlen(path_trace);
end_path_trace = path_trace + path_trace_len;
- liblttd_start(channel_name, num_threads, dump_flight_only, dump_normal_only,
- verbose_mode, &callbacks);
+ instance = liblttd_new_instance(&callbacks, channel_name, num_threads,
+ dump_flight_only, dump_normal_only, verbose_mode);
+ if(!instance) {
+ perror("An error occured while creating the liblttd instance");
+ return ret;
+ }
+
+ liblttd_start_instance(instance);
return ret;
}