summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-06-05 16:42:22 -0700
committerGlenn Kasten <gkasten@google.com>2012-10-08 15:48:53 -0700
commita09aa3eaad6ed5432ee13c764c67e67f7f43cac9 (patch)
treea2dd4d5c1b0bc1c2b3cb0080c9a5ad287cb951a0
parent24505a5826d7c5cf89f3da85058befd671a73444 (diff)
downloadextras-a09aa3eaad6ed5432ee13c764c67e67f7f43cac9.tar.gz
Add -n and -S options for 'nohup', offline traces
Change-Id: Ieef12b36b8519ff689ab5a81447b1b9bf4806171
-rw-r--r--atrace/atrace.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/atrace/atrace.c b/atrace/atrace.c
index 5edc47b3..890165af 100644
--- a/atrace/atrace.c
+++ b/atrace/atrace.c
@@ -39,6 +39,8 @@ static bool g_traceWorkqueue = false;
static bool g_traceOverwrite = false;
static int g_traceBufferSizeKB = 2048;
static bool g_compress = false;
+static bool g_nohup = false;
+static int g_initialSleepSecs = 0;
/* Global state */
static bool g_traceAborted = false;
@@ -417,7 +419,9 @@ static void showHelp(const char *cmd)
}
static void handleSignal(int signo) {
- g_traceAborted = true;
+ if (!g_nohup) {
+ g_traceAborted = true;
+ }
}
static void registerSigHandler() {
@@ -443,7 +447,7 @@ int main(int argc, char **argv)
for (;;) {
int ret;
- ret = getopt(argc, argv, "b:cidflst:uwz");
+ ret = getopt(argc, argv, "b:cidflst:uwznS:");
if (ret < 0) {
break;
@@ -478,10 +482,18 @@ int main(int argc, char **argv)
g_traceFrequency = true;
break;
+ case 'n':
+ g_nohup = true;
+ break;
+
case 's':
g_traceSchedSwitch = true;
break;
+ case 'S':
+ g_initialSleepSecs = atoi(optarg);
+ break;
+
case 't':
g_traceDurationSeconds = atoi(optarg);
break;
@@ -516,6 +528,10 @@ int main(int argc, char **argv)
registerSigHandler();
+ if (g_initialSleepSecs > 0) {
+ sleep(g_initialSleepSecs);
+ }
+
bool ok = startTrace(isRoot);
if (ok) {