From 3160c7a916d5c865915f212b37a842723e646782 Mon Sep 17 00:00:00 2001 From: Julien Desfossez Date: Thu, 17 Oct 2013 19:59:07 -0400 Subject: [PATCH] begin or tail in live mode Signed-off-by: Julien Desfossez --- src/common.c | 8 ++++---- src/lttngtop.c | 9 ++++++++- src/network-live.c | 14 +++++++++----- src/network-live.h | 3 +-- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/common.c b/src/common.c index 9f89391..0a38bf3 100644 --- a/src/common.c +++ b/src/common.c @@ -86,7 +86,7 @@ uint64_t get_context_ppid(const struct bt_ctf_event *event) uint64_t get_context_vtid(const struct bt_ctf_event *event) { - const struct definition *scope; + const struct bt_definition *scope; uint64_t vtid; scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT); @@ -101,7 +101,7 @@ uint64_t get_context_vtid(const struct bt_ctf_event *event) uint64_t get_context_vpid(const struct bt_ctf_event *event) { - const struct definition *scope; + const struct bt_definition *scope; uint64_t vpid; scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT); @@ -116,7 +116,7 @@ uint64_t get_context_vpid(const struct bt_ctf_event *event) uint64_t get_context_vppid(const struct bt_ctf_event *event) { - const struct definition *scope; + const struct bt_definition *scope; uint64_t vppid; scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT); @@ -147,7 +147,7 @@ char *get_context_comm(const struct bt_ctf_event *event) char *get_context_hostname(const struct bt_ctf_event *event) { - const struct definition *scope; + const struct bt_definition *scope; char *hostname; scope = bt_ctf_get_top_level_scope(event, BT_STREAM_EVENT_CONTEXT); diff --git a/src/lttngtop.c b/src/lttngtop.c index b9646e0..2800cfa 100644 --- a/src/lttngtop.c +++ b/src/lttngtop.c @@ -59,6 +59,7 @@ const char *opt_input_path; static int opt_textdump; static int opt_child; +static int opt_begin; int quit = 0; @@ -91,6 +92,7 @@ enum { OPT_HOSTNAME, OPT_RELAY_HOSTNAME, OPT_KPROBES, + OPT_BEGIN, }; static struct poptOption long_options[] = { @@ -98,6 +100,7 @@ static struct poptOption long_options[] = { { "help", 'h', POPT_ARG_NONE, NULL, OPT_HELP, NULL, NULL }, { "textdump", 't', POPT_ARG_NONE, NULL, OPT_TEXTDUMP, NULL, NULL }, { "child", 'f', POPT_ARG_NONE, NULL, OPT_CHILD, NULL, NULL }, + { "begin", 'b', POPT_ARG_NONE, NULL, OPT_BEGIN, NULL, NULL }, { "pid", 'p', POPT_ARG_STRING, &opt_tid, OPT_PID, NULL, NULL }, { "hostname", 'n', POPT_ARG_STRING, &opt_hostname, OPT_HOSTNAME, NULL, NULL }, { "relay-hostname", 'r', POPT_ARG_STRING, &opt_relay_hostname, @@ -664,6 +667,10 @@ static int parse_options(int argc, char **argv) tmp_str = strtok(NULL, ","); } break; + case OPT_BEGIN: + /* start reading the live trace from the beginning */ + opt_begin = 1; + break; case OPT_HOSTNAME: toggle_filter = 1; tmp_str = strtok(opt_hostname, ","); @@ -1036,7 +1043,7 @@ int main(int argc, char **argv) #endif /* LTTNGTOP_MMAP_LIVE */ } else if (!opt_input_path && remote_live) { /* network live */ - ret = setup_network_live(opt_relay_hostname); + ret = setup_network_live(opt_relay_hostname, opt_begin); if (ret < 0) { goto end; } diff --git a/src/network-live.c b/src/network-live.c index a0113f5..1fb761e 100644 --- a/src/network-live.c +++ b/src/network-live.c @@ -241,7 +241,8 @@ error: return ret; } -int attach_session(int id) +static +int attach_session(int id, int begin) { struct lttng_viewer_cmd cmd; struct lttng_viewer_attach_session_request rq; @@ -254,8 +255,11 @@ int attach_session(int id) cmd.cmd_version = 0; rq.session_id = htobe64(id); - //rq.seek = htobe32(VIEWER_SEEK_BEGINNING); - rq.seek = htobe32(VIEWER_SEEK_LAST); + if (begin) { + rq.seek = htobe32(VIEWER_SEEK_BEGINNING); + } else { + rq.seek = htobe32(VIEWER_SEEK_LAST); + } do { ret = send(control_sock, &cmd, sizeof(cmd), 0); @@ -801,7 +805,7 @@ end: return ret; } -int setup_network_live(char *hostname) +int setup_network_live(char *hostname, int begin) { int ret; int session_id; @@ -837,7 +841,7 @@ int setup_network_live(char *hostname) do { fprintf(stderr, "* Attach session %d\n", ret); - ret = attach_session(session_id); + ret = attach_session(session_id, begin); if (ret < 0) { goto error; } diff --git a/src/network-live.h b/src/network-live.h index 6228865..e6cf7d7 100644 --- a/src/network-live.h +++ b/src/network-live.h @@ -45,12 +45,11 @@ uint64_t ctf_get_real_timestamp(struct ctf_stream_definition *stream, int list_sessions(void); int write_index_header(int fd); -int attach_session(int id); void dump_packet_index(struct lttng_packet_index *index); int get_next_index(int id, struct packet_index *index); void ctf_live_packet_seek(struct bt_stream_pos *stream_pos, size_t index, int whence); int open_trace(struct bt_context **bt_ctx); -int setup_network_live(char *hostname); +int setup_network_live(char *hostname, int begin); #endif /* _LIVE_H */ -- 2.34.1