Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2c22877 authored by Thomas Buhot's avatar Thomas Buhot Committed by Dan Liang
Browse files

Enable wildcard in the list of kernel functions



The handling of the -k option is too restrictive
as it stricly checks the names of the kernel functions
after it wrote them in /d/tracing/set_ftrace_filter.

However, a common usage of that function filtering with ftrace
is to use a wildcard character (*) that the ftrace tracer
automatically expands to all the matching kernel functions.

This enables the support of the wildcard (*) character
in the -k option to trace kernel functions.

Change-Id: Ifffae975c20e1c253157a3a6b44a14b4f342b9d0
Signed-off-by: default avatarThomas Buhot <thomas.buhot@intel.com>
Signed-off-by: default avatarZhiquan Liu <zhiquan.liu@intel.com>
parent 259eb561
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -545,11 +545,12 @@ static bool verifyKernelTraceFuncs(const char* funcs)
    String8 funcList = String8::format("\n%s", buf);

    // Make sure that every function listed in funcs is in the list we just
    // read from the kernel.
    // read from the kernel, except for wildcard inputs.
    bool ok = true;
    char* myFuncs = strdup(funcs);
    char* func = strtok(myFuncs, ",");
    while (func) {
        if (!strchr(func, '*')) {
            String8 fancyFunc = String8::format("\n%s\n", func);
            bool found = funcList.find(fancyFunc.string(), 0) >= 0;
            if (!found || func[0] == '\0') {
@@ -557,6 +558,7 @@ static bool verifyKernelTraceFuncs(const char* funcs)
                        "to trace.\n", func);
                ok = false;
            }
        }
        func = strtok(NULL, ",");
    }
    free(myFuncs);