X-Git-Url: https://git.lttng.org/?p=lttngtop.git;a=blobdiff_plain;f=src%2Flttngtop.c;h=1da87ea7fba16dfb0de5106d00d12b95bbe3ad34;hp=f659b52e182bf14f28bf3fe8a6b1b4b800ab07a7;hb=aa15ac1c699ea5f76f6c26fb14ab22f725ecc293;hpb=a54d0d2c1368a7b20b6fff5d4680ff5f5a2caa3d diff --git a/src/lttngtop.c b/src/lttngtop.c index f659b52..1da87ea 100644 --- a/src/lttngtop.c +++ b/src/lttngtop.c @@ -1,5 +1,5 @@ /* - * 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 @@ -88,6 +88,10 @@ void *ncurses_display(void *p) unsigned int current_display_index = 0; sem_wait(&bootstrap); + /* + * Prevent the 1 second delay when we hit ESC + */ + ESCDELAY = 0; init_ncurses(); while (1) { @@ -165,14 +169,14 @@ struct perfcounter *get_perf_counter(const char *name, struct processtop *proc, 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: @@ -307,7 +311,7 @@ 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); @@ -476,7 +480,7 @@ int bt_context_add_traces_recursive(struct bt_context *ctx, const char *path, 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. @@ -509,11 +513,9 @@ int bt_context_add_traces_recursive(struct bt_context *ctx, const char *path, } 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; @@ -532,23 +534,23 @@ int bt_context_add_traces_recursive(struct bt_context *ctx, const char *path, 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; } -int check_field_requirements(const struct bt_ctf_field_decl *const * field_list, +static int check_field_requirements(const struct bt_ctf_field_decl *const * field_list, int field_cnt, int *tid_check, int *pid_check, int *procname_check, int *ppid_check) { @@ -586,8 +588,6 @@ int check_field_requirements(const struct bt_ctf_field_decl *const * field_list, * * If each mandatory context information is available for at least in one * event, return 0 otherwise return -1. - * Also, we make here a list for all the perf counters available during the - * trace. */ int check_requirements(struct bt_context *ctx) { @@ -673,7 +673,7 @@ int main(int argc, char **argv) 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; }