如何在ftrace中使用跟踪标记?

时间:2018-04-26 19:59:40

标签: kernel tracing ftrace

如何在ftrace中使用跟踪标记来记录用户事件?我使用以下内容,但编译器无法定义WR_ONLY

static int trace_fd = -1;

    void trace_write(const char *fmt, ...)
    {
            va_list ap;
            char buf[256];
            int n;

            if (trace_fd < 0)
                    return;

            va_start(ap, fmt);
            n = vsnprintf(buf, 256, fmt, ap);
            va_end(ap);

            write(trace_fd, buf, n);
    }


    [...]

    trace_fd = open("trace_marker", WR_ONLY);

稍后,使用trace_write()函数记录到ftrace 缓冲液中。

    trace_write("record this event\n")

编译错误:

error: C++ requires a type specifier for all declarations
trace_fd = open("trace_marker", WR_ONLY);

1 个答案:

答案 0 :(得分:0)

ftrace documentation中似乎有一个错误,您似乎已从中复制了代码。尝试使用O_WRONLY#include <sys/fcntl.h>来获取其定义),而不要使用WR_ONLY

请注意,您还需要trace_marker的完整路径,即/sys/kernel/debug/tracing/trace_marker/sys/kernel/tracing/trace_marker,具体取决于您的tracefs的内核版本和安装位置。 / p>