/*
- * Copyright (C) 2011 Julien Desfossez
+ * Copyright (C) 2011-2012 Julien Desfossez
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License Version 2 as
unsigned int current_display_index = 0;
sem_wait(&bootstrap);
+ /*
+ * Prevent the 1 second delay when we hit ESC
+ */
+ ESCDELAY = 0;
init_ncurses();
while (1) {
ret->visible = 1;
g_hash_table_insert(table, (gpointer) strdup(name), ret);
- global = g_hash_table_lookup(lttngtop.perf_list, (gpointer) name);
+ global = g_hash_table_lookup(global_perf_liszt, (gpointer) name);
if (!global) {
global = g_new0(struct perfcounter, 1);
memcpy(global, ret, sizeof(struct perfcounter));
/* by default, sort on the first perf context */
- if (g_hash_table_size(lttngtop.perf_list) == 0)
+ if (g_hash_table_size(global_perf_liszt) == 0)
global->sort = 1;
- g_hash_table_insert(lttngtop.perf_list, (gpointer) strdup(name), global);
+ g_hash_table_insert(global_perf_liszt, (gpointer) strdup(name), global);
}
end:
struct processtop *parent, *child;
unsigned long timestamp;
- /* FIXME : display nice error when missing context pid, tid, ppid and comm */
-
timestamp = bt_ctf_get_timestamp(call_data);
if (timestamp == -1ULL)
goto error;
pid = get_context_pid(call_data);
if (pid == -1ULL) {
-// fprintf(stderr, "Missing pid context info\n");
goto error;
}
tid = get_context_tid(call_data);
if (tid == -1ULL) {
-// fprintf(stderr, "Missing tid context info\n");
goto error;
}
ppid = get_context_ppid(call_data);
if (ppid == -1ULL) {
-// fprintf(stderr, "Missing ppid context info\n");
goto error;
}
comm = get_context_comm(call_data);
if (!comm) {
-// fprintf(stderr, "Missing procname context info\n");
goto error;
}
void init_lttngtop()
{
copies = g_ptr_array_new();
- lttngtop.perf_list = g_hash_table_new(g_str_hash, g_str_equal);
+ global_perf_liszt = g_hash_table_new(g_str_hash, g_str_equal);
sem_init(&goodtodisplay, 0, 0);
sem_init(&goodtoupdate, 0, 1);
usage(stdout);
ret = 1; /* exit cleanly */
goto end;
- case OPT_LIST:
- // list_formats(stdout);
- ret = 1;
- goto end;
- case OPT_VERBOSE:
-// babeltrace_verbose = 1;
- break;
- case OPT_DEBUG:
-// babeltrace_debug = 1;
- break;
- case OPT_NAMES:
-// opt_field_names = 1;
- break;
default:
ret = -EINVAL;
goto end;
GArray *trace_ids;
char lpath[PATH_MAX];
char * const paths[2] = { lpath, NULL };
- int ret;
+ int ret = -1;
/*
* Need to copy path, because fts_open can change it.
}
metafd = openat(dirfd, "metadata", O_RDONLY);
if (metafd < 0) {
- ret = close(dirfd);
- if (ret < 0) {
- perror("close");
- goto error;
- }
+ close(dirfd);
+ ret = -1;
+ continue;
} else {
int trace_id;
node->fts_accpath, format_str,
packet_seek, NULL, NULL);
if (trace_id < 0) {
- fprintf(stderr, "[error] [Context] opening trace \"%s\" from %s "
+ fprintf(stderr, "[warning] [Context] opening trace \"%s\" from %s "
"for reading.\n", node->fts_accpath, path);
- ret = trace_id;
- goto error;
+ /* Allow to skip erroneous traces. */
+ continue;
}
g_array_append_val(trace_ids, trace_id);
}
}
g_array_free(trace_ids, TRUE);
- return 0;
+ return ret;
error:
return ret;
ret = check_requirements(bt_ctx);
if (ret < 0) {
- fprintf(stderr, "[error] missing mandatory context informations\n");
+ fprintf(stderr, "[error] some mandatory contexts were missing, exiting.\n");
goto end;
}