Lines Matching full:query

122 static void vpr_info_dq(const struct ddebug_query *query, const char *msg)  in vpr_info_dq()  argument
127 if (query->format) { in vpr_info_dq()
128 fmtlen = strlen(query->format); in vpr_info_dq()
129 while (fmtlen && query->format[fmtlen - 1] == '\n') in vpr_info_dq()
135 query->function ?: "", in vpr_info_dq()
136 query->filename ?: "", in vpr_info_dq()
137 query->module ?: "", in vpr_info_dq()
138 fmtlen, query->format ?: "", in vpr_info_dq()
139 query->first_lineno, query->last_lineno); in vpr_info_dq()
143 * Search the tables for _ddebug's which match the given `query' and
148 static int ddebug_change(const struct ddebug_query *query, in ddebug_change() argument
162 if (query->module && in ddebug_change()
163 !match_wildcard(query->module, dt->mod_name)) in ddebug_change()
170 if (query->filename && in ddebug_change()
171 !match_wildcard(query->filename, dp->filename) && in ddebug_change()
172 !match_wildcard(query->filename, in ddebug_change()
174 !match_wildcard(query->filename, in ddebug_change()
179 if (query->function && in ddebug_change()
180 !match_wildcard(query->function, dp->function)) in ddebug_change()
184 if (query->format) { in ddebug_change()
185 if (*query->format == '^') { in ddebug_change()
188 p = strstr(dp->format, query->format+1); in ddebug_change()
191 } else if (!strstr(dp->format, query->format)) in ddebug_change()
196 if (query->first_lineno && in ddebug_change()
197 dp->lineno < query->first_lineno) in ddebug_change()
199 if (query->last_lineno && in ddebug_change()
200 dp->lineno > query->last_lineno) in ddebug_change()
225 pr_info("no matches for query\n"); in ddebug_change()
306 static int parse_linerange(struct ddebug_query *query, const char *first) in parse_linerange() argument
310 if (query->first_lineno || query->last_lineno) { in parse_linerange()
316 if (parse_lineno(first, &query->first_lineno) < 0) in parse_linerange()
320 if (parse_lineno(last, &query->last_lineno) < 0) in parse_linerange()
324 if (query->last_lineno == 0) in parse_linerange()
325 query->last_lineno = UINT_MAX; in parse_linerange()
327 if (query->last_lineno < query->first_lineno) { in parse_linerange()
329 query->last_lineno, in parse_linerange()
330 query->first_lineno); in parse_linerange()
334 query->last_lineno = query->first_lineno; in parse_linerange()
336 vpr_info("parsed line %d-%d\n", query->first_lineno, in parse_linerange()
337 query->last_lineno); in parse_linerange()
355 * Parse words[] as a ddebug query specification, which is a series
370 struct ddebug_query *query, const char *modname) in ddebug_parse_query() argument
384 query->module = modname; in ddebug_parse_query()
391 rc = check_set(&query->function, arg, "func"); in ddebug_parse_query()
393 if (check_set(&query->filename, arg, "file")) in ddebug_parse_query()
397 fline = strchr(query->filename, ':'); in ddebug_parse_query()
403 if (check_set(&query->function, fline, "func")) in ddebug_parse_query()
406 if (parse_linerange(query, fline)) in ddebug_parse_query()
410 rc = check_set(&query->module, arg, "module"); in ddebug_parse_query()
415 rc = check_set(&query->format, arg, "format"); in ddebug_parse_query()
417 if (parse_linerange(query, arg)) in ddebug_parse_query()
426 vpr_info_dq(query, "parsed"); in ddebug_parse_query()
488 struct ddebug_query query = {}; in ddebug_exec_query() local
498 /* check flags 1st (last arg) so query is pairs of spec,val */ in ddebug_exec_query()
503 if (ddebug_parse_query(words, nwords-1, &query, modname)) { in ddebug_exec_query()
504 pr_err("query parse failed\n"); in ddebug_exec_query()
508 nfound = ddebug_change(&query, &modifiers); in ddebug_exec_query()
509 vpr_info_dq(&query, nfound ? "applied" : "no-match"); in ddebug_exec_query()
514 /* handle multiple queries in query string, continue on error, return
516 in param (for boot arg) or perhaps in query string.
518 static int ddebug_exec_queries(char *query, const char *modname) in ddebug_exec_queries() argument
523 for (i = 0; query; query = split) { in ddebug_exec_queries()
524 split = strpbrk(query, ";\n"); in ddebug_exec_queries()
528 query = skip_spaces(query); in ddebug_exec_queries()
529 if (!query || !*query || *query == '#') in ddebug_exec_queries()
532 vpr_info("query %d: \"%s\"\n", i, query); in ddebug_exec_queries()
534 rc = ddebug_exec_query(query, modname); in ddebug_exec_queries()
553 * @query: query-string described in admin-guide/dynamic-debug-howto
561 int dynamic_debug_exec_queries(const char *query, const char *modname) in dynamic_debug_exec_queries() argument
564 char *qry = kstrndup(query, PAGE_SIZE, GFP_KERNEL); in dynamic_debug_exec_queries()
566 if (!query) in dynamic_debug_exec_queries()
985 return 0; /* query failure shouldnt stop module load */ in ddebug_dyndbg_param_cb()