X-Git-Url: https://git.lttng.org/?p=lttngtop.git;a=blobdiff_plain;f=src%2Flttng-session.c;h=908d3dc44b1f98b98685001712aa24b01ca95baa;hp=75699b0852f2baa80b3a0a528af6ca5e58811be0;hb=54645d5cab414bb3391837ef7acb919cf106c71f;hpb=26d63ddf68515dd749de4b22465b28ef6bce2ed2 diff --git a/src/lttng-session.c b/src/lttng-session.c index 75699b0..908d3dc 100644 --- a/src/lttng-session.c +++ b/src/lttng-session.c @@ -5,6 +5,7 @@ #include #include #include +#include #define event_list "lttng_statedump_start,lttng_statedump_end," \ "lttng_statedump_process_state,lttng_statedump_file_descriptor," \ @@ -271,8 +272,9 @@ int enable_events(char *name, int sudo) int ret; char cmd[1024]; - ret = sprintf(cmd, "%s lttng enable-event -s %s -k %s >/dev/null", - (sudo) ? "sudo" : " ", name, event_list); + ret = sprintf(cmd, "%s lttng enable-event -s %s -k %s >/dev/null;" + "lttng enable-event -k --syscall -a -s %s >/dev/null", + (sudo) ? "sudo" : " ", name, event_list, name); if (ret < 0) { fprintf(stderr, "Allocating cmd\n"); goto end; @@ -314,7 +316,7 @@ end: } static -int start(char *name, int sudo, int local) +int start(char *name, int sudo, int local, int print) { int ret; char cmd[1024]; @@ -333,11 +335,14 @@ int start(char *name, int sudo, int local) goto end; } + if (!print) + goto end; + if (local) { ret = sprintf(cmd, "%s lttng list|grep %s|cut -d'(' -f2|cut -d ')' -f1", (sudo) ? "sudo" : " ", name); } else { - ret = sprintf(cmd, "lttngtop -r net://localhost|grep %s|cut -d' ' -f1", + ret = sprintf(cmd, "babeltrace -i lttng-live net://localhost|grep %s|cut -d' ' -f1", name); } if (ret < 0) { @@ -357,6 +362,40 @@ end: return ret; } +static +char *live_path(char *name) +{ + FILE *fp; + int ret; + char path[1035]; + char cmd[1024]; + char *out = NULL; + + ret = sprintf(cmd, "lttngtop -r net://localhost|grep %s|cut -d' ' -f1", + name); + if (ret < 0) { + fprintf(stderr, "allocating cmd\n"); + goto end; + } + + fp = popen(cmd, "r"); + if (fp == NULL) { + printf("Failed to run command\n" ); + goto end; + } + + /* Read the output a line at a time - output it. */ + out = fgets(path, sizeof(path)-1, fp); + if (out) + out = strdup(path); + + /* close */ + pclose(fp); + +end: + return out; +} + static int destroy(char *name) { @@ -364,7 +403,8 @@ int destroy(char *name) int sudo = 0; char cmd[1024]; - if (getuid() != 0) { + ret = system("groups|grep tracing >/dev/null"); + if (ret != 0 && getuid() != 0) { ret = system("sudo -l lttng >/dev/null"); if (ret < 0) { fprintf(stderr, "[error] You are not root and not " @@ -427,7 +467,7 @@ int create_local_session() goto end_free; } - ret = start(name, sudo, 1); + ret = start(name, sudo, 1, 1); if (ret < 0) { goto end_free; } @@ -438,12 +478,12 @@ end: return ret; } -int destroy_session(char *name) +int destroy_live_local_session(char *name) { return destroy(name); } -int create_live_local_session() +int create_live_local_session(char **session_path, char **session_name, int print) { int ret; char *name; @@ -477,18 +517,20 @@ int create_live_local_session() goto end_free; } - ret = start(name, sudo, 0); + ret = start(name, sudo, 0, print); if (ret < 0) { goto end_free; } + if (session_path) + *session_path = live_path(name); + if (session_name) { + *session_name = name; + goto end; + } + end_free: free(name); end: return ret; } - -/* -int create_live_local_session(); -int destroy_live_local_session(); -*/