atrace: use creat instead of truncate

Change-Id: Ie25c704f33c419c0c542249ae2841393862df0ab
diff --git a/cmds/atrace/atrace.cpp b/cmds/atrace/atrace.cpp
index 29838e4..d85a1d7 100644
--- a/cmds/atrace/atrace.cpp
+++ b/cmds/atrace/atrace.cpp
@@ -176,13 +176,18 @@
 // Truncate a file.
 static bool truncateFile(const char* path)
 {
-    int err = truncate(path, 0);
-    if (err != 0) {
+    // This uses creat rather than truncate because some of the debug kernel
+    // device nodes (e.g. k_ftraceFilterPath) currently aren't changed by
+    // calls to truncate, but they are cleared by calls to creat.
+    int traceFD = creat(path, 0);
+    if (traceFD == -1) {
         fprintf(stderr, "error truncating %s: %s (%d)\n", path,
-                strerror(errno), errno);
+            strerror(errno), errno);
         return false;
     }
 
+    close(traceFD);
+
     return true;
 }