* Callback functions
*/
+static void arm_clicked (GtkButton *button, gpointer user_data);
+static void disarm_clicked (GtkButton *button, gpointer user_data);
static void start_clicked (GtkButton *button, gpointer user_data);
static void pause_clicked (GtkButton *button, gpointer user_data);
static void unpause_clicked (GtkButton *button, gpointer user_data);
GtkWidget *window; /**< window */
GtkWidget *main_box; /**< main container */
+ GtkWidget *ltt_armall_button;
+ GtkWidget *ltt_disarmall_button;
GtkWidget *start_button;
GtkWidget *pause_button;
GtkWidget *unpause_button;
GtkWidget *lttctl_path_entry;
GtkWidget *lttd_path_label;
GtkWidget *lttd_path_entry;
- GtkWidget *fac_path_label;
- GtkWidget *fac_path_entry;
+ GtkWidget *ltt_armall_path_label;
+ GtkWidget *ltt_armall_path_entry;
+ GtkWidget *ltt_disarmall_path_label;
+ GtkWidget *ltt_disarmall_path_entry;
};
/**
/*
* start/pause/stop buttons
*/
+
GdkPixbuf *pixbuf;
GtkWidget *image;
+ pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)TraceControlStart_xpm);
+ image = gtk_image_new_from_pixbuf(pixbuf);
+ tcd->ltt_armall_button = gtk_button_new_with_label("Arm LTTng kernel probes");
+ //2.6 gtk_button_set_image(GTK_BUTTON(tcd->ltt_armall_button), image);
+ g_object_set(G_OBJECT(tcd->ltt_armall_button), "image", image, NULL);
+ gtk_button_set_alignment(GTK_BUTTON(tcd->ltt_armall_button), 0.0, 0.0);
+ gtk_widget_show (tcd->ltt_armall_button);
+ gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->ltt_armall_button,6,7,0,1,GTK_FILL,GTK_FILL,2,2);
+
+ pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)TraceControlStop_xpm);
+ image = gtk_image_new_from_pixbuf(pixbuf);
+ tcd->ltt_disarmall_button = gtk_button_new_with_label("Disarm LTTng kernel probes");
+ //2.6 gtk_button_set_image(GTK_BUTTON(tcd->ltt_disarmall_button), image);
+ g_object_set(G_OBJECT(tcd->ltt_disarmall_button), "image", image, NULL);
+ gtk_button_set_alignment(GTK_BUTTON(tcd->ltt_disarmall_button), 0.0, 0.0);
+ gtk_widget_show (tcd->ltt_disarmall_button);
+ gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->ltt_disarmall_button,6,7,1,2,GTK_FILL,GTK_FILL,2,2);
+
pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)TraceControlStart_xpm);
image = gtk_image_new_from_pixbuf(pixbuf);
tcd->start_button = gtk_button_new_with_label("start");
g_object_set(G_OBJECT(tcd->start_button), "image", image, NULL);
gtk_button_set_alignment(GTK_BUTTON(tcd->start_button), 0.0, 0.0);
gtk_widget_show (tcd->start_button);
- gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->start_button,6,7,0,1,GTK_FILL,GTK_FILL,2,2);
+ gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->start_button,6,7,2,3,GTK_FILL,GTK_FILL,2,2);
pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)TraceControlPause_xpm);
image = gtk_image_new_from_pixbuf(pixbuf);
g_object_set(G_OBJECT(tcd->pause_button), "image", image, NULL);
gtk_button_set_alignment(GTK_BUTTON(tcd->pause_button), 0.0, 0.0);
gtk_widget_show (tcd->pause_button);
- gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->pause_button,6,7,1,2,GTK_FILL,GTK_FILL,2,2);
+ gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->pause_button,6,7,3,4,GTK_FILL,GTK_FILL,2,2);
pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)TraceControlPause_xpm);
image = gtk_image_new_from_pixbuf(pixbuf);
g_object_set(G_OBJECT(tcd->unpause_button), "image", image, NULL);
gtk_button_set_alignment(GTK_BUTTON(tcd->unpause_button), 0.0, 0.0);
gtk_widget_show (tcd->unpause_button);
- gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->unpause_button,6,7,2,3,GTK_FILL,GTK_FILL,2,2);
+ gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->unpause_button,6,7,4,5,GTK_FILL,GTK_FILL,2,2);
pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)TraceControlStop_xpm);
image = gtk_image_new_from_pixbuf(pixbuf);
g_object_set(G_OBJECT(tcd->stop_button), "image", image, NULL);
gtk_button_set_alignment(GTK_BUTTON(tcd->stop_button), 0.0, 0.0);
gtk_widget_show (tcd->stop_button);
- gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->stop_button,6,7,3,4,GTK_FILL,GTK_FILL,2,2);
+ gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->stop_button,6,7,5,6,GTK_FILL,GTK_FILL,2,2);
/*
* First half of the filter window
gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->lttd_path_label,0,2,13,14,GTK_FILL,GTK_FILL,2,2);
gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->lttd_path_entry,2,6,13,14,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0);
-
- tcd->fac_path_label = gtk_label_new("path to facilities:");
- gtk_widget_show (tcd->fac_path_label);
- tcd->fac_path_entry = gtk_entry_new();
- gtk_entry_set_text(GTK_ENTRY(tcd->fac_path_entry),PACKAGE_DATA_DIR "/" "ltt-control" "/facilities");
- gtk_widget_set_size_request(tcd->fac_path_entry, 250, -1);
- gtk_widget_show (tcd->fac_path_entry);
- gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->fac_path_label,0,2,14,15,GTK_FILL,GTK_FILL,2,2);
- gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->fac_path_entry,2,6,14,15,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0);
+ tcd->ltt_armall_path_label = gtk_label_new("path to ltt_armall:");
+ gtk_widget_show (tcd->ltt_armall_path_label);
+ tcd->ltt_armall_path_entry = gtk_entry_new();
+ gtk_entry_set_text(GTK_ENTRY(tcd->ltt_armall_path_entry),PACKAGE_BIN_DIR "/ltt_armall");
+ gtk_widget_show (tcd->ltt_armall_path_entry);
+ gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->ltt_armall_path_label,0,2,13,14,GTK_FILL,GTK_FILL,2,2);
+ gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->ltt_armall_path_entry,2,6,13,14,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0);
+
+ tcd->ltt_disarmall_path_label = gtk_label_new("path to ltt_disarmall:");
+ gtk_widget_show (tcd->ltt_disarmall_path_label);
+ tcd->ltt_disarmall_path_entry = gtk_entry_new();
+ gtk_entry_set_text(GTK_ENTRY(tcd->ltt_disarmall_path_entry),PACKAGE_BIN_DIR "/ltt_disarmall");
+ gtk_widget_show (tcd->ltt_disarmall_path_entry);
+ gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->ltt_disarmall_path_label,0,2,13,14,GTK_FILL,GTK_FILL,2,2);
+ gtk_table_attach( GTK_TABLE(tcd->main_box),tcd->ltt_disarmall_path_entry,2,6,13,14,GTK_FILL|GTK_EXPAND|GTK_SHRINK,GTK_FILL,0,0);
focus_chain = g_list_append (focus_chain, tcd->username_entry);
focus_chain = g_list_append (focus_chain, tcd->password_entry);
+ focus_chain = g_list_append (focus_chain, tcd->ltt_armall_path_entry);
+ focus_chain = g_list_append (focus_chain, tcd->ltt_disarmall_path_entry);
focus_chain = g_list_append (focus_chain, tcd->start_button);
focus_chain = g_list_append (focus_chain, tcd->pause_button);
focus_chain = g_list_append (focus_chain, tcd->unpause_button);
focus_chain = g_list_append (focus_chain, tcd->lttd_threads_entry);
focus_chain = g_list_append (focus_chain, tcd->lttctl_path_entry);
focus_chain = g_list_append (focus_chain, tcd->lttd_path_entry);
- focus_chain = g_list_append (focus_chain, tcd->fac_path_entry);
gtk_container_set_focus_chain(GTK_CONTAINER(tcd->main_box), focus_chain);
(GCallback)unpause_clicked, tcd);
g_signal_connect(G_OBJECT(tcd->stop_button), "clicked",
(GCallback)stop_clicked, tcd);
+ g_signal_connect(G_OBJECT(tcd->ltt_armall_button), "clicked",
+ (GCallback)arm_clicked, tcd);
+ g_signal_connect(G_OBJECT(tcd->ltt_disarmall_button), "clicked",
+ (GCallback)disarm_clicked, tcd);
/*
* show main container
}
static int execute_command(const gchar *command, const gchar *username,
- const gchar *password, const gchar *lttd_path, const gchar *fac_path)
+ const gchar *password, const gchar *lttd_path)
{
pid_t pid;
int fdpty;
/* Setup environment variables */
if(strcmp(lttd_path, "") != 0)
setenv("LTT_DAEMON", lttd_path, 1);
- if(strcmp(fac_path, "") != 0)
- setenv("LTT_FACILITIES", fac_path, 1);
/* One comment line (must be only one) */
g_printf("Executing (as %s) : %s\n", username, command);
const gchar *lttctl_path =
gtk_entry_get_text(GTK_ENTRY(tcd->lttctl_path_entry));
const gchar *lttd_path = gtk_entry_get_text(GTK_ENTRY(tcd->lttd_path_entry));
- const gchar *fac_path = gtk_entry_get_text(GTK_ENTRY(tcd->fac_path_entry));
-
/* Setup arguments to su */
/* child */
strncat(args, " ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
- /* channel dir */
- strncat(args, "-l ", args_left);
- args_left = MAX_ARGS_LEN - strlen(args) - 1;
- strncat(args, channel_dir, args_left);
- args_left = MAX_ARGS_LEN - strlen(args) - 1;
+ /* Start daemon ? */
+ if(start_daemon) {
+ strncat(args, "-C", args_left);
+ args_left = MAX_ARGS_LEN - strlen(args) - 1;
+ } else {
+ /* Simply create the channel and then start tracing */
+ //strncat(args, "-b", args_left);
+ //args_left = MAX_ARGS_LEN - strlen(args) - 1;
+ }
/* space */
strncat(args, " ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
- /* trace dir */
- strncat(args, "-t ", args_left);
- args_left = MAX_ARGS_LEN - strlen(args) - 1;
- strncat(args, trace_dir, args_left);
- args_left = MAX_ARGS_LEN - strlen(args) - 1;
-
- /* space */
- strncat(args, " ", args_left);
- args_left = MAX_ARGS_LEN - strlen(args) - 1;
-
- /* name */
- strncat(args, "-n ", args_left);
+ /* channel dir */
+ strncat(args, "--channel_root ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
- strncat(args, trace_name, args_left);
+ strncat(args, channel_dir, args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
/* space */
strncat(args, " ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
- /* trace mode */
- strncat(args, "-m ", args_left);
+ /* trace dir */
+ strncat(args, "-w ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
- strncat(args, trace_mode, args_left);
+ strncat(args, trace_dir, args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
/* space */
strncat(args, " ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
- /* Start daemon ? */
- if(start_daemon) {
- strncat(args, "-d", args_left);
+ if(strcmp(trace_mode, "flight") == 0) {
+ strncat(args, "-o channel.all.overwrite=1", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
} else {
- /* Simply create the channel and then start tracing */
- strncat(args, "-b", args_left);
+ strncat(args, "-o channel.all.overwrite=0", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
}
-
/* Append to trace ? */
if(append) {
/* space */
strncat(args, " ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
- strncat(args, "-z ", args_left);
+ strncat(args, "-o channel.all.bufsize=", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
strncat(args, subbuf_size, args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
strncat(args, " ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
- strncat(args, "-x ", args_left);
+ strncat(args, "-o channel.all.bufnum=", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
strncat(args, subbuf_num, args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
strncat(args, " ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
- strncat(args, "-N ", args_left);
+ strncat(args, "-n ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
strncat(args, threads_num, args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
}
+ /* space */
+ strncat(args, " ", args_left);
+ args_left = MAX_ARGS_LEN - strlen(args) - 1;
- int retval = execute_command(args, username, password, lttd_path, fac_path);
+ /* name */
+ strncat(args, trace_name, args_left);
+ args_left = MAX_ARGS_LEN - strlen(args) - 1;
+
+ int retval = execute_command(args, username, password, lttd_path);
if(retval) {
gchar msg[256];
const gchar *trace_name =
gtk_entry_get_text(GTK_ENTRY(tcd->trace_name_entry));
const gchar *lttd_path = "";
- const gchar *fac_path = "";
const gchar *lttctl_path =
gtk_entry_get_text(GTK_ENTRY(tcd->lttctl_path_entry));
strncat(args, lttctl_path, args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
- /* space */
+ /* space */
strncat(args, " ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
-
- /* name */
- strncat(args, "-n ", args_left);
- args_left = MAX_ARGS_LEN - strlen(args) - 1;
- strncat(args, trace_name, args_left);
+
+ /* Simply pause tracing */
+ strncat(args, "-p", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
/* space */
strncat(args, " ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
-
- /* Simply pause tracing */
- strncat(args, "-q", args_left);
+
+ /* name */
+ strncat(args, trace_name, args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
- int retval = execute_command(args, username, password, lttd_path, fac_path);
+ int retval = execute_command(args, username, password, lttd_path);
if(retval) {
gchar msg[256];
guint msg_left = 256;
const gchar *trace_name =
gtk_entry_get_text(GTK_ENTRY(tcd->trace_name_entry));
const gchar *lttd_path = "";
- const gchar *fac_path = "";
const gchar *lttctl_path =
gtk_entry_get_text(GTK_ENTRY(tcd->lttctl_path_entry));
/* space */
strncat(args, " ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
-
- /* name */
- strncat(args, "-n ", args_left);
- args_left = MAX_ARGS_LEN - strlen(args) - 1;
- strncat(args, trace_name, args_left);
+
+ /* Simply unpause tracing */
+ strncat(args, "-s", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
/* space */
strncat(args, " ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
-
- /* Simply unpause tracing */
- strncat(args, "-s", args_left);
+
+ /* name */
+ strncat(args, trace_name, args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
- int retval = execute_command(args, username, password, lttd_path, fac_path);
+ int retval = execute_command(args, username, password, lttd_path);
if(retval) {
gchar msg[256];
guint msg_left = 256;
const gchar *trace_name =
gtk_entry_get_text(GTK_ENTRY(tcd->trace_name_entry));
const gchar *lttd_path = "";
- const gchar *fac_path = "";
+ const gchar *trace_mode;
+ const gchar *trace_mode_sel;
+ GtkTreeIter iter;
+ gtk_combo_box_get_active_iter(GTK_COMBO_BOX(tcd->trace_mode_combo), &iter);
+ gtk_tree_model_get(
+ gtk_combo_box_get_model(GTK_COMBO_BOX(tcd->trace_mode_combo)),
+ &iter, 0, &trace_mode_sel, -1);
+ if(strcmp(trace_mode_sel, "normal") == 0)
+ trace_mode = "normal";
+ else
+ trace_mode = "flight";
+
const gchar *lttctl_path =
gtk_entry_get_text(GTK_ENTRY(tcd->lttctl_path_entry));
gchar *trace_dir = gtk_entry_get_text(GTK_ENTRY(tcd->trace_dir_entry));
/* space */
strncat(args, " ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
-
- /* name */
- strncat(args, "-n ", args_left);
- args_left = MAX_ARGS_LEN - strlen(args) - 1;
- strncat(args, trace_name, args_left);
+
+ /* Simply stop tracing and destroy channel */
+ strncat(args, "-D", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
+ if(strcmp(trace_mode, "flight") == 0) {
+ /* space */
+ strncat(args, " ", args_left);
+ args_left = MAX_ARGS_LEN - strlen(args) - 1;
+
+ /* trace dir */
+ strncat(args, "-w ", args_left);
+ args_left = MAX_ARGS_LEN - strlen(args) - 1;
+ strncat(args, trace_dir, args_left);
+ args_left = MAX_ARGS_LEN - strlen(args) - 1;
+ }
+
/* space */
strncat(args, " ", args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
-
- /* Simply stop tracing and destroy channel */
- strncat(args, "-R", args_left);
+
+ /* name */
+ strncat(args, trace_name, args_left);
args_left = MAX_ARGS_LEN - strlen(args) - 1;
- int retval = execute_command(args, username, password, lttd_path, fac_path);
+ int retval = execute_command(args, username, password, lttd_path);
if(retval) {
gchar msg[256];
guint msg_left = 256;
g_slist_free(trace_list);
}
+void arm_clicked (GtkButton *button, gpointer user_data)
+{
+ ControlData *tcd = (ControlData*)user_data;
+
+ const gchar *username = gtk_entry_get_text(GTK_ENTRY(tcd->username_entry));
+ const gchar *password = gtk_entry_get_text(GTK_ENTRY(tcd->password_entry));
+ const gchar *ltt_armall_path =
+ gtk_entry_get_text(GTK_ENTRY(tcd->ltt_armall_path_entry));
+
+ /* Setup arguments to su */
+ /* child */
+ gchar args[MAX_ARGS_LEN];
+ gint args_left = MAX_ARGS_LEN - 1; /* for \0 */
+
+ args[0] = '\0';
+
+ /* Command */
+ strncat(args, "exec", args_left);
+ args_left = MAX_ARGS_LEN - strlen(args) - 1;
+
+ /* space */
+ strncat(args, " ", args_left);
+ args_left = MAX_ARGS_LEN - strlen(args) - 1;
+
+ if(strcmp(ltt_armall_path, "") == 0)
+ strncat(args, "ltt-armall", args_left);
+ else
+ strncat(args, ltt_armall_path, args_left);
+ args_left = MAX_ARGS_LEN - strlen(args) - 1;
+
+ int retval = execute_command(args, username, password, "");
+ if(retval) {
+ gchar msg[256];
+ guint msg_left = 256;
+
+ strcpy(msg, "A problem occured when executing the su command : ");
+ msg_left = 256 - strlen(msg) - 1;
+ strncat(msg, strerror(retval), msg_left);
+ GtkWidget *dialogue =
+ gtk_message_dialog_new(
+ GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(button))),
+ GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK,
+ msg);
+ gtk_dialog_run(GTK_DIALOG(dialogue));
+ gtk_widget_destroy(dialogue);
+ }
+
+}
+
+void disarm_clicked (GtkButton *button, gpointer user_data)
+{
+ ControlData *tcd = (ControlData*)user_data;
+
+ const gchar *username = gtk_entry_get_text(GTK_ENTRY(tcd->username_entry));
+ const gchar *password = gtk_entry_get_text(GTK_ENTRY(tcd->password_entry));
+ const gchar *ltt_disarmall_path =
+ gtk_entry_get_text(GTK_ENTRY(tcd->ltt_disarmall_path_entry));
+
+ /* Setup arguments to su */
+ /* child */
+ gchar args[MAX_ARGS_LEN];
+ gint args_left = MAX_ARGS_LEN - 1; /* for \0 */
+
+ args[0] = '\0';
+
+ /* Command */
+ strncat(args, "exec", args_left);
+ args_left = MAX_ARGS_LEN - strlen(args) - 1;
+
+ /* space */
+ strncat(args, " ", args_left);
+ args_left = MAX_ARGS_LEN - strlen(args) - 1;
+
+ if(strcmp(ltt_disarmall_path, "") == 0)
+ strncat(args, "ltt-disarmall", args_left);
+ else
+ strncat(args, ltt_disarmall_path, args_left);
+ args_left = MAX_ARGS_LEN - strlen(args) - 1;
+
+ int retval = execute_command(args, username, password, "");
+ if(retval) {
+ gchar msg[256];
+ guint msg_left = 256;
+
+ strcpy(msg, "A problem occured when executing the su command : ");
+ msg_left = 256 - strlen(msg) - 1;
+ strncat(msg, strerror(retval), msg_left);
+ GtkWidget *dialogue =
+ gtk_message_dialog_new(
+ GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(button))),
+ GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK,
+ msg);
+ gtk_dialog_run(GTK_DIALOG(dialogue));
+ gtk_widget_destroy(dialogue);
+ }
+
+}
+
/**
* @fn GtkWidget* h_guicontrol(Tab*)