On Sun, 2 Aug 2026 17:19:55 +0900 "Masami Hiramatsu (Google)" <[email protected]> wrote:
> From: Masami Hiramatsu (Google) <[email protected]> > > Add wprobe event trigger to set and clear the watch event dynamically. > This allows us to set an watchpoint on a given local variables and > a slab object instead of static objects. > > The trigger syntax is below: > > - set_wprobe:WPROBE:FIELD[+OFFSET][:COUNT] [if FILTER] > - clear_wprobe:WPROBE[:FIELD[+OFFSET]][:COUNT] [if FILTER] > > set_wprobe sets the address pointed by FIELD[+offset] to the WPROBE > event. The FIELD is the field name of trigger event. > clear_wprobe clears the watch address of WPROBE event. If the FIELD > option is specified, it clears only if the current watch address is > same as the given FIELD[+OFFSET] value. > COUNT is the max number of activating trigger. > > The set_wprobe trigger does not change the type and length, these > must be set when creating a new wprobe. > > Also, the WPROBE event must be disabled when setting the new trigger > and it will be busy afterwards. Recommended usage is to add a new > wprobe at NULL address and keep disabled. > > Assisted-by: Antigravity:gemini-3.5-flash > Signed-off-by: Masami Hiramatsu (Google) <[email protected]> > --- > Changes in v11: > - Use new modify_local_hw_breakpoint_addr() API. > - Add tracepoint_synchronize_unregister() in wprobe_unregister_trigger() > and parse error path. > - Safely check tw->bp_event for NULL in trace_wprobe_update_local() to > prevent race conditions. > - Use event_trigger_data::private_data_free. > - Add count option support. Oops, I made a mistake on this count support. > +static int wprobe_trigger_cmd_parse(struct event_command *cmd_ops, > + struct trace_event_file *file, > + char *glob, char *cmd, > + char *param_and_filter) > +{ [...] > + /* count is optional, "unlimited" by default */ > + count_str = strsep(¶m, ":"); > + if (count_str) { > + long val; > + > + if (strcmp(count_str, "unlimited")) { > + if (str_has_prefix(count_str, "count=")) > + count_str += 6; > + if (kstrtol(count_str, 0, &val) < 0) > + return -EINVAL; > + wprobe_data->count = val; > + } > + } This handles count option, but [...] > + ret = event_trigger_parse_num(param, trigger_data); > + if (ret) > + return ret; Here we parse the count again. However, this trigger_data->count is ignored. I think the new wprobe_trigger_data->count is redundant. it should use trigger_data->count. Thank you, -- Masami Hiramatsu (Google) <[email protected]>
