From a2c228770ea1cadc1d06406baad899b8c500389a Mon Sep 17 00:00:00 2001 From: Thomas Buhot Date: Wed, 27 Jan 2016 09:44:31 +0100 Subject: 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: Thomas Buhot Signed-off-by: Zhiquan Liu --- cmds/atrace/atrace.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/cmds/atrace/atrace.cpp b/cmds/atrace/atrace.cpp index 81c8967..6549dde 100644 --- a/cmds/atrace/atrace.cpp +++ b/cmds/atrace/atrace.cpp @@ -545,17 +545,19 @@ 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) { - String8 fancyFunc = String8::format("\n%s\n", func); - bool found = funcList.find(fancyFunc.string(), 0) >= 0; - if (!found || func[0] == '\0') { - fprintf(stderr, "error: \"%s\" is not a valid kernel function " - "to trace.\n", func); - ok = false; + if (!strchr(func, '*')) { + String8 fancyFunc = String8::format("\n%s\n", func); + bool found = funcList.find(fancyFunc.string(), 0) >= 0; + if (!found || func[0] == '\0') { + fprintf(stderr, "error: \"%s\" is not a valid kernel function " + "to trace.\n", func); + ok = false; + } } func = strtok(NULL, ","); } -- cgit v1.1