0

如何使用跟踪标记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);
4

1 回答 1

0

ftrace 文档中似乎存在错误,您似乎从中复制了代码。尝试O_WRONLY(#include <sys/fcntl.h>得到它的定义) 而不是WR_ONLY.

请注意,您还需要完整路径trace_marker,这/sys/kernel/debug/tracing/trace_marker取决于/sys/kernel/tracing/trace_marker您的内核版本和tracefs.

于 2019-04-10T23:15:24.923 回答