blob: 9a0061cb27c8e261469d7a4f4b2d70c50926b0a0 [file] [log] [blame]
/*
* Copyright (c) 2015 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
static int write_marker(int fd, char *name)
{
char buf[1024];
struct timespec ts;
int size, ret;
unsigned long usec;
ret = clock_gettime(CLOCK_MONOTONIC, &ts);
if (ret < 0) {
perror("clock_gettime");
return 1;
}
// normalize nanoseconds down to microseconds
// to make it easier to compare to the entry
// timestamps
usec = ts.tv_nsec / 1000;
size = snprintf(buf, 1024, "%s: %lu.%06lu\n",
name, ts.tv_sec, usec);
ret = write(fd, buf, size);
if (ret < size) {
perror("write");
return 1;
}
return 0;
}
#define TRACE_PATH "/sys/kernel/debug/tracing/"
int main(int argc, char* argv[]) {
int ret, fd;
fd = open(TRACE_PATH "trace_marker", O_WRONLY);
if (fd < 0) {
perror("open");
return 1;
}
ret = write_marker(fd, "start");
if (ret)
goto out;
ret = write_marker(fd, "middle");
if (ret)
goto out;
ret = write_marker(fd, "end");
out:
close(fd);
return ret;
}