On Mon, 29 Jan 2024 09:29:07 -0800 Beau Belgrave <be...@linux.microsoft.com> wrote:
> On Fri, Jan 26, 2024 at 03:04:45PM -0500, Steven Rostedt wrote: > > On Fri, 26 Jan 2024 11:10:07 -0800 > > Beau Belgrave <be...@linux.microsoft.com> wrote: > > > > > > OK, so the each different event has suffixed name. But this will > > > > introduce non C-variable name. > > > > > > > > Steve, do you think your library can handle these symbols? It will > > > > be something like "event:[1]" as the event name. > > > > Personally I like "event.1" style. (of course we need to ensure the > > > > user given event name is NOT including such suffix numbers) > > > > > > > > > > Just to clarify around events including a suffix number. This is why > > > multi-events use "user_events_multi" system name and the single-events > > > using just "user_events". > > > > > > Even if a user program did include a suffix, the suffix would still get > > > appended. An example is "test" vs "test:[0]" using multi-format would > > > result in two tracepoints ("test:[0]" and "test:[0]:[1]" respectively > > > (assuming these are the first multi-events on the system). > > > > > > I'm with you, we really don't want any spoofing or squatting possible. > > > By using different system names and always appending the suffix I > > > believe covers this. > > > > > > Looking forward to hearing Steven's thoughts on this as well. > > > > I'm leaning towards Masami's suggestion to use dots, as that won't conflict > > with special characters from bash, as '[' and ']' do. > > > > Thanks, yeah ideally we wouldn't use special characters. > > I'm not picky about this. However, I did want something that clearly > allowed a glob pattern to find all versions of a given register name of > user_events by user programs that record. The dot notation will pull in > more than expected if dotted namespace style names are used. > > An example is "Asserts" and "Asserts.Verbose" from different programs. > If we tried to find all versions of "Asserts" via glob of "Asserts.*" it > will pull in "Asserts.Verbose.1" in addition to "Asserts.0". If we use dot for the suffix number, we can prohibit user to use it for their name. They still can use '_' (or change the group name?) I just concerned that the name can be parsed by existing tools. Since ':' is used as a separator for group and event name in some case (e.g. tracefs "set_event" is using, so trace-cmd and perf is using it.) > While a glob of "Asserts.[0-9]" works when the unique ID is 0-9, it > doesn't work if the number is higher, like 128. If we ever decide to > change the ID from an integer to say hex to save space, these globs > would break. Hmm, why can't we use regexp? And if we limits the number of events up to 1000 for each same-name event we can use fixed numbers, like Assets.[0-9][0-9][0-9] Thank you, > > Is there some scheme that fits the C-variable name that addresses the > above scenarios? Brackets gave me a simple glob that seemed to prevent a > lot of this ("Asserts.\[*\]" in this case). > > Are we confident that we always want to represent the ID as a base-10 > integer vs a base-16 integer? The suffix will be ABI to ensure recording > programs can find their events easily. > > Thanks, > -Beau > > > -- Steve -- Masami Hiramatsu (Google) <mhira...@kernel.org>