mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-07 15:18:15 +00:00
Minor fixes to the processing of the bootconfig tree.
-----BEGIN PGP SIGNATURE----- iIoEABYIADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCYTvl4BQccm9zdGVkdEBn b29kbWlzLm9yZwAKCRAp5XQQmuv6qsaMAQCarCJd+FZ/i9Tx0Nx4e6T+ipPDUgqQ YbDytkXe3X9J6wEA2bNEPuS3DQlf5j++gLcVCVXV3tjINsFlMNkyK6uirgA= =mRya -----END PGP SIGNATURE----- Merge tag 'trace-v5.15-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace Pull tracing fixes from Steven Rostedt: "Minor fixes to the processing of the bootconfig tree" * tag 'trace-v5.15-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: bootconfig: Rename xbc_node_find_child() to xbc_node_find_subkey() tracing/boot: Fix to check the histogram control param is a leaf node tracing/boot: Fix trace_boot_hist_add_array() to check array is value
This commit is contained in:
commit
ce4c8f8820
3 changed files with 24 additions and 25 deletions
|
@ -110,7 +110,7 @@ static inline __init bool xbc_node_is_leaf(struct xbc_node *node)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tree-based key-value access APIs */
|
/* Tree-based key-value access APIs */
|
||||||
struct xbc_node * __init xbc_node_find_child(struct xbc_node *parent,
|
struct xbc_node * __init xbc_node_find_subkey(struct xbc_node *parent,
|
||||||
const char *key);
|
const char *key);
|
||||||
|
|
||||||
const char * __init xbc_node_find_value(struct xbc_node *parent,
|
const char * __init xbc_node_find_value(struct xbc_node *parent,
|
||||||
|
@ -148,7 +148,7 @@ xbc_find_value(const char *key, struct xbc_node **vnode)
|
||||||
*/
|
*/
|
||||||
static inline struct xbc_node * __init xbc_find_node(const char *key)
|
static inline struct xbc_node * __init xbc_find_node(const char *key)
|
||||||
{
|
{
|
||||||
return xbc_node_find_child(NULL, key);
|
return xbc_node_find_subkey(NULL, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -219,13 +219,12 @@ static int __init
|
||||||
trace_boot_hist_add_array(struct xbc_node *hnode, char **bufp,
|
trace_boot_hist_add_array(struct xbc_node *hnode, char **bufp,
|
||||||
char *end, const char *key)
|
char *end, const char *key)
|
||||||
{
|
{
|
||||||
struct xbc_node *knode, *anode;
|
struct xbc_node *anode;
|
||||||
const char *p;
|
const char *p;
|
||||||
char sep;
|
char sep;
|
||||||
|
|
||||||
knode = xbc_node_find_child(hnode, key);
|
p = xbc_node_find_value(hnode, key, &anode);
|
||||||
if (knode) {
|
if (p) {
|
||||||
anode = xbc_node_get_child(knode);
|
|
||||||
if (!anode) {
|
if (!anode) {
|
||||||
pr_err("hist.%s requires value(s).\n", key);
|
pr_err("hist.%s requires value(s).\n", key);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -263,9 +262,9 @@ trace_boot_hist_add_one_handler(struct xbc_node *hnode, char **bufp,
|
||||||
append_printf(bufp, end, ":%s(%s)", handler, p);
|
append_printf(bufp, end, ":%s(%s)", handler, p);
|
||||||
|
|
||||||
/* Compose 'action' parameter */
|
/* Compose 'action' parameter */
|
||||||
knode = xbc_node_find_child(hnode, "trace");
|
knode = xbc_node_find_subkey(hnode, "trace");
|
||||||
if (!knode)
|
if (!knode)
|
||||||
knode = xbc_node_find_child(hnode, "save");
|
knode = xbc_node_find_subkey(hnode, "save");
|
||||||
|
|
||||||
if (knode) {
|
if (knode) {
|
||||||
anode = xbc_node_get_child(knode);
|
anode = xbc_node_get_child(knode);
|
||||||
|
@ -284,7 +283,7 @@ trace_boot_hist_add_one_handler(struct xbc_node *hnode, char **bufp,
|
||||||
sep = ',';
|
sep = ',';
|
||||||
}
|
}
|
||||||
append_printf(bufp, end, ")");
|
append_printf(bufp, end, ")");
|
||||||
} else if (xbc_node_find_child(hnode, "snapshot")) {
|
} else if (xbc_node_find_subkey(hnode, "snapshot")) {
|
||||||
append_printf(bufp, end, ".snapshot()");
|
append_printf(bufp, end, ".snapshot()");
|
||||||
} else {
|
} else {
|
||||||
pr_err("hist.%s requires an action.\n",
|
pr_err("hist.%s requires an action.\n",
|
||||||
|
@ -315,7 +314,7 @@ trace_boot_hist_add_handlers(struct xbc_node *hnode, char **bufp,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xbc_node_find_child(hnode, param))
|
if (xbc_node_find_subkey(hnode, param))
|
||||||
ret = trace_boot_hist_add_one_handler(hnode, bufp, end, handler, param);
|
ret = trace_boot_hist_add_one_handler(hnode, bufp, end, handler, param);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -375,7 +374,7 @@ trace_boot_compose_hist_cmd(struct xbc_node *hnode, char *buf, size_t size)
|
||||||
if (p)
|
if (p)
|
||||||
append_printf(&buf, end, ":name=%s", p);
|
append_printf(&buf, end, ":name=%s", p);
|
||||||
|
|
||||||
node = xbc_node_find_child(hnode, "var");
|
node = xbc_node_find_subkey(hnode, "var");
|
||||||
if (node) {
|
if (node) {
|
||||||
xbc_node_for_each_key_value(node, knode, p) {
|
xbc_node_for_each_key_value(node, knode, p) {
|
||||||
/* Expression must not include spaces. */
|
/* Expression must not include spaces. */
|
||||||
|
@ -386,21 +385,21 @@ trace_boot_compose_hist_cmd(struct xbc_node *hnode, char *buf, size_t size)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Histogram control attributes (mutual exclusive) */
|
/* Histogram control attributes (mutual exclusive) */
|
||||||
if (xbc_node_find_child(hnode, "pause"))
|
if (xbc_node_find_value(hnode, "pause", NULL))
|
||||||
append_printf(&buf, end, ":pause");
|
append_printf(&buf, end, ":pause");
|
||||||
else if (xbc_node_find_child(hnode, "continue"))
|
else if (xbc_node_find_value(hnode, "continue", NULL))
|
||||||
append_printf(&buf, end, ":continue");
|
append_printf(&buf, end, ":continue");
|
||||||
else if (xbc_node_find_child(hnode, "clear"))
|
else if (xbc_node_find_value(hnode, "clear", NULL))
|
||||||
append_printf(&buf, end, ":clear");
|
append_printf(&buf, end, ":clear");
|
||||||
|
|
||||||
/* Histogram handler and actions */
|
/* Histogram handler and actions */
|
||||||
node = xbc_node_find_child(hnode, "onmax");
|
node = xbc_node_find_subkey(hnode, "onmax");
|
||||||
if (node && trace_boot_hist_add_handlers(node, &buf, end, "var") < 0)
|
if (node && trace_boot_hist_add_handlers(node, &buf, end, "var") < 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
node = xbc_node_find_child(hnode, "onchange");
|
node = xbc_node_find_subkey(hnode, "onchange");
|
||||||
if (node && trace_boot_hist_add_handlers(node, &buf, end, "var") < 0)
|
if (node && trace_boot_hist_add_handlers(node, &buf, end, "var") < 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
node = xbc_node_find_child(hnode, "onmatch");
|
node = xbc_node_find_subkey(hnode, "onmatch");
|
||||||
if (node && trace_boot_hist_add_handlers(node, &buf, end, "event") < 0)
|
if (node && trace_boot_hist_add_handlers(node, &buf, end, "event") < 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
@ -437,7 +436,7 @@ trace_boot_init_histograms(struct trace_event_file *file,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xbc_node_find_child(hnode, "keys")) {
|
if (xbc_node_find_subkey(hnode, "keys")) {
|
||||||
if (trace_boot_compose_hist_cmd(hnode, buf, size) == 0) {
|
if (trace_boot_compose_hist_cmd(hnode, buf, size) == 0) {
|
||||||
tmp = kstrdup(buf, GFP_KERNEL);
|
tmp = kstrdup(buf, GFP_KERNEL);
|
||||||
if (trigger_process_regex(file, buf) < 0)
|
if (trigger_process_regex(file, buf) < 0)
|
||||||
|
@ -496,7 +495,7 @@ trace_boot_init_one_event(struct trace_array *tr, struct xbc_node *gnode,
|
||||||
else if (trigger_process_regex(file, buf) < 0)
|
else if (trigger_process_regex(file, buf) < 0)
|
||||||
pr_err("Failed to apply an action: %s\n", p);
|
pr_err("Failed to apply an action: %s\n", p);
|
||||||
}
|
}
|
||||||
anode = xbc_node_find_child(enode, "hist");
|
anode = xbc_node_find_subkey(enode, "hist");
|
||||||
if (anode)
|
if (anode)
|
||||||
trace_boot_init_histograms(file, anode, buf, ARRAY_SIZE(buf));
|
trace_boot_init_histograms(file, anode, buf, ARRAY_SIZE(buf));
|
||||||
} else if (xbc_node_find_value(enode, "actions", NULL))
|
} else if (xbc_node_find_value(enode, "actions", NULL))
|
||||||
|
@ -518,7 +517,7 @@ trace_boot_init_events(struct trace_array *tr, struct xbc_node *node)
|
||||||
bool enable, enable_all = false;
|
bool enable, enable_all = false;
|
||||||
const char *data;
|
const char *data;
|
||||||
|
|
||||||
node = xbc_node_find_child(node, "event");
|
node = xbc_node_find_subkey(node, "event");
|
||||||
if (!node)
|
if (!node)
|
||||||
return;
|
return;
|
||||||
/* per-event key starts with "event.GROUP.EVENT" */
|
/* per-event key starts with "event.GROUP.EVENT" */
|
||||||
|
@ -621,7 +620,7 @@ trace_boot_init_instances(struct xbc_node *node)
|
||||||
struct trace_array *tr;
|
struct trace_array *tr;
|
||||||
const char *p;
|
const char *p;
|
||||||
|
|
||||||
node = xbc_node_find_child(node, "instance");
|
node = xbc_node_find_subkey(node, "instance");
|
||||||
if (!node)
|
if (!node)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -142,16 +142,16 @@ xbc_node_match_prefix(struct xbc_node *node, const char **prefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xbc_node_find_child() - Find a child node which matches given key
|
* xbc_node_find_subkey() - Find a subkey node which matches given key
|
||||||
* @parent: An XBC node.
|
* @parent: An XBC node.
|
||||||
* @key: A key string.
|
* @key: A key string.
|
||||||
*
|
*
|
||||||
* Search a node under @parent which matches @key. The @key can contain
|
* Search a key node under @parent which matches @key. The @key can contain
|
||||||
* several words jointed with '.'. If @parent is NULL, this searches the
|
* several words jointed with '.'. If @parent is NULL, this searches the
|
||||||
* node from whole tree. Return NULL if no node is matched.
|
* node from whole tree. Return NULL if no node is matched.
|
||||||
*/
|
*/
|
||||||
struct xbc_node * __init
|
struct xbc_node * __init
|
||||||
xbc_node_find_child(struct xbc_node *parent, const char *key)
|
xbc_node_find_subkey(struct xbc_node *parent, const char *key)
|
||||||
{
|
{
|
||||||
struct xbc_node *node;
|
struct xbc_node *node;
|
||||||
|
|
||||||
|
@ -191,7 +191,7 @@ const char * __init
|
||||||
xbc_node_find_value(struct xbc_node *parent, const char *key,
|
xbc_node_find_value(struct xbc_node *parent, const char *key,
|
||||||
struct xbc_node **vnode)
|
struct xbc_node **vnode)
|
||||||
{
|
{
|
||||||
struct xbc_node *node = xbc_node_find_child(parent, key);
|
struct xbc_node *node = xbc_node_find_subkey(parent, key);
|
||||||
|
|
||||||
if (!node || !xbc_node_is_key(node))
|
if (!node || !xbc_node_is_key(node))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Add table
Reference in a new issue