projects
/
lttngtop.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
function to extract cpu_id
[lttngtop.git]
/
src
/
lttngtop.c
diff --git
a/src/lttngtop.c
b/src/lttngtop.c
index 5d526f3893bf41d6491283a5243b859864c49085..6bb03ac760c20c1a3f9daa121475af0c7fd72b70 100644
(file)
--- a/
src/lttngtop.c
+++ b/
src/lttngtop.c
@@
-36,6
+36,7
@@
#include <errno.h>
#include <sys/types.h>
#include <fts.h>
#include <errno.h>
#include <sys/types.h>
#include <fts.h>
+#include <assert.h>
#include "lttngtoptypes.h"
#include "cputop.h"
#include "lttngtoptypes.h"
#include "cputop.h"
@@
-73,6
+74,8
@@
static struct poptOption long_options[] = {
void *refresh_thread(void *p)
{
while (1) {
void *refresh_thread(void *p)
{
while (1) {
+ if (quit)
+ return NULL;
sem_wait(&pause_sem);
sem_post(&pause_sem);
sem_post(&timer);
sem_wait(&pause_sem);
sem_post(&pause_sem);
sem_post(&timer);
@@
-93,8
+96,8
@@
void *ncurses_display(void *p)
sem_wait(&pause_sem);
copy = g_ptr_array_index(copies, current_display_index);
sem_wait(&pause_sem);
copy = g_ptr_array_index(copies, current_display_index);
- if (copy)
-
display(current_display_index++);
+ assert(copy);
+ display(current_display_index++);
sem_post(&goodtoupdate);
sem_post(&pause_sem);
sem_post(&goodtoupdate);
sem_post(&pause_sem);
@@
-157,21
+160,19
@@
struct perfcounter *get_perf_counter(const char *name, struct processtop *proc,
if (ret)
goto end;
if (ret)
goto end;
- ret = malloc(sizeof(struct perfcounter));
- memset(ret, 0, sizeof(struct perfcounter));
+ ret = g_new0(struct perfcounter, 1);
/* by default, make it visible in the UI */
ret->visible = 1;
/* by default, make it visible in the UI */
ret->visible = 1;
- g_hash_table_insert(table, (gpointer)
name
, ret);
+ g_hash_table_insert(table, (gpointer)
strdup(name)
, ret);
global = g_hash_table_lookup(lttngtop.perf_list, (gpointer) name);
if (!global) {
global = g_hash_table_lookup(lttngtop.perf_list, (gpointer) name);
if (!global) {
- global = malloc(sizeof(struct perfcounter));
- memset(global, 0, sizeof(struct perfcounter));
+ 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)
global->sort = 1;
memcpy(global, ret, sizeof(struct perfcounter));
/* by default, sort on the first perf context */
if (g_hash_table_size(lttngtop.perf_list) == 0)
global->sort = 1;
- g_hash_table_insert(lttngtop.perf_list, (gpointer)
name
, global);
+ g_hash_table_insert(lttngtop.perf_list, (gpointer)
strdup(name)
, global);
}
end:
}
end:
@@
-226,17
+227,10
@@
end:
void update_perf_counter(struct processtop *proc, struct bt_ctf_event *event)
{
void update_perf_counter(struct processtop *proc, struct bt_ctf_event *event)
{
- struct definition *scope;
- uint64_t cpu_id;
struct cputime *cpu;
struct cputime *cpu;
+ struct definition *scope;
- scope = bt_ctf_get_top_level_scope(event, BT_STREAM_PACKET_CONTEXT);
- cpu_id = bt_ctf_get_uint64(bt_ctf_get_field(event, scope, "cpu_id"));
- if (bt_ctf_field_get_error()) {
- fprintf(stderr, "[error] get cpu_id\n");
- goto end;
- }
- cpu = get_cpu(cpu_id);
+ cpu = get_cpu(get_cpu_id(event));
scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT);
extract_perf_counter_scope(event, scope, proc, cpu);
scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT);
extract_perf_counter_scope(event, scope, proc, cpu);
@@
-246,9
+240,6
@@
void update_perf_counter(struct processtop *proc, struct bt_ctf_event *event)
scope = bt_ctf_get_top_level_scope(event, BT_EVENT_CONTEXT);
extract_perf_counter_scope(event, scope, proc, cpu);
scope = bt_ctf_get_top_level_scope(event, BT_EVENT_CONTEXT);
extract_perf_counter_scope(event, scope, proc, cpu);
-
-end:
- return;
}
enum bt_cb_ret fix_process_table(struct bt_ctf_event *call_data,
}
enum bt_cb_ret fix_process_table(struct bt_ctf_event *call_data,
@@
-260,7
+251,7
@@
enum bt_cb_ret fix_process_table(struct bt_ctf_event *call_data,
struct definition *scope;
unsigned long timestamp;
struct definition *scope;
unsigned long timestamp;
- /* FIXME :
check
context pid, tid, ppid and comm */
+ /* FIXME :
display nice error when missing
context pid, tid, ppid and comm */
timestamp = bt_ctf_get_timestamp(call_data);
if (timestamp == -1ULL)
timestamp = bt_ctf_get_timestamp(call_data);
if (timestamp == -1ULL)
@@
-319,7
+310,7
@@
error:
void init_lttngtop()
{
copies = g_ptr_array_new();
void init_lttngtop()
{
copies = g_ptr_array_new();
- lttngtop.perf_list = g_hash_table_new(g_
direct_hash, g_direct
_equal);
+ lttngtop.perf_list = g_hash_table_new(g_
str_hash, g_str
_equal);
sem_init(&goodtodisplay, 0, 0);
sem_init(&goodtoupdate, 0, 1);
sem_init(&goodtodisplay, 0, 0);
sem_init(&goodtoupdate, 0, 1);
@@
-333,9
+324,10
@@
void init_lttngtop()
lttngtop.cpu_table = g_ptr_array_new();
}
lttngtop.cpu_table = g_ptr_array_new();
}
-void usage(FILE *f
d
)
+void usage(FILE *f
p
)
{
{
-
+ fprintf(fp, "LTTngTop %s\n\n", VERSION);
+ fprintf(fp, "Usage : lttngtop /path/to/trace\n");
}
/*
}
/*
@@
-429,6
+421,13
@@
void iter_trace(struct bt_context *bt_ctx)
bt_ctf_iter_add_callback(iter,
g_quark_from_static_string("sys_read"),
NULL, 0, handle_sys_read, NULL, NULL, NULL);
bt_ctf_iter_add_callback(iter,
g_quark_from_static_string("sys_read"),
NULL, 0, handle_sys_read, NULL, NULL, NULL);
+ bt_ctf_iter_add_callback(iter,
+ g_quark_from_static_string("sys_open"),
+ NULL, 0, handle_sys_open, NULL, NULL, NULL);
+
+ bt_ctf_iter_add_callback(iter,
+ g_quark_from_static_string("sys_close"),
+ NULL, 0, handle_sys_close, NULL, NULL, NULL);
while ((event = bt_ctf_iter_read_event(iter)) != NULL) {
ret = bt_iter_next(bt_ctf_get_iter(iter));
if (ret < 0)
while ((event = bt_ctf_iter_read_event(iter)) != NULL) {
ret = bt_iter_next(bt_ctf_get_iter(iter));
if (ret < 0)
@@
-566,7
+565,9
@@
int main(int argc, char **argv)
quit = 1;
pthread_join(display_thread, NULL);
quit = 1;
pthread_join(display_thread, NULL);
+ pthread_join(timer_thread, NULL);
end:
end:
+ bt_context_put(bt_ctx);
return 0;
}
return 0;
}
This page took
0.025993 seconds
and
4
git commands to generate.