Как использовать маркер трассировки в ftrace? - PullRequest
0 голосов
/ 26 апреля 2018

Как использовать маркер трассировки в 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 голосов
/ 11 апреля 2019

Похоже, что в документации ftrace есть ошибка, из которой вы, похоже, скопировали свой код. Попробуйте O_WRONLY (#include <sys/fcntl.h>, чтобы получить его определение) вместо WR_ONLY.

Обратите внимание, что вам также потребуется полный путь к trace_marker, который равен /sys/kernel/debug/tracing/trace_marker или /sys/kernel/tracing/trace_marker, в зависимости от версии вашего ядра и местоположения монтирования tracefs.

...