* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#define _GNU_SOURCE
#define _LGPL_SOURCE
#include <getopt.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
-#include <config.h>
#include <ctype.h>
#include <lttng/lttng.h>
static char *progname;
int opt_no_sessiond;
char *opt_sessiond_path;
-pid_t sessiond_pid;
-volatile int recv_child_signal;
char *opt_relayd_path;
/* First level command */
static struct cmd_struct commands[] = {
{ "list", cmd_list},
+ { "status", cmd_status},
{ "create", cmd_create},
{ "destroy", cmd_destroy},
{ "start", cmd_start},
{ "load", cmd_load},
{ "track", cmd_track},
{ "untrack", cmd_untrack},
+ { "metadata", cmd_metadata},
{ NULL, NULL} /* Array closure */
};
fprintf(ofp, " set-session Set current session name\n");
fprintf(ofp, " snapshot Snapshot buffers of current session name\n");
fprintf(ofp, " start Start tracing\n");
+ fprintf(ofp, " status Show current session's details\n");
fprintf(ofp, " stop Stop tracing\n");
fprintf(ofp, " version Show version information\n");
fprintf(ofp, " view Start trace viewer\n");
fprintf(ofp, " load Load session configuration\n");
fprintf(ofp, " track Track specific system resources\n");
fprintf(ofp, " untrack Untrack specific system resources\n");
+ fprintf(ofp, " metadata Regenerate the metadata of a session\n");
fprintf(ofp, "\n");
fprintf(ofp, "Each command also has its own -h, --help option.\n");
fprintf(ofp, "\n");
*/
static void sighandler(int sig)
{
- int status;
-
switch (sig) {
case SIGTERM:
DBG("SIGTERM caught");
clean_exit(EXIT_FAILURE);
break;
- case SIGCHLD:
- DBG("SIGCHLD caught");
- waitpid(sessiond_pid, &status, 0);
- recv_child_signal = 1;
- /* Indicate that the session daemon died */
- sessiond_pid = 0;
- ERR("Session daemon died (exit status %d)", WEXITSTATUS(status));
- break;
- case SIGUSR1:
- /* Notify is done */
- recv_child_signal = 1;
- DBG("SIGUSR1 caught");
- break;
default:
DBG("Unknown signal %d caught", sig);
break;
sa.sa_handler = sighandler;
sa.sa_mask = sigset;
sa.sa_flags = 0;
- if ((ret = sigaction(SIGUSR1, &sa, NULL)) < 0) {
- PERROR("sigaction");
- goto end;
- }
if ((ret = sigaction(SIGTERM, &sa, NULL)) < 0) {
PERROR("sigaction");
goto end;
}
- if ((ret = sigaction(SIGCHLD, &sa, NULL)) < 0) {
- PERROR("sigaction");
- goto end;
- }
-
end:
return ret;
}