On Wed, Nov 3, 2021 at 6:24 PM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote: > > On Wed, 3 Nov 2021 17:44:07 +0200 > "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@xxxxxxxxx> wrote: > > > diff --git a/include/tracefs.h b/include/tracefs.h > > index a2cda30..fa7f316 100644 > > --- a/include/tracefs.h > > +++ b/include/tracefs.h > > @@ -10,6 +10,10 @@ > > #include <sched.h> > > #include <event-parse.h> > > > > +#define TRACEFS_BIT_SET(M, B) do { (M) |= (1ULL << (B)); } while (0) > > +#define TRACEFS_BIT_TEST(M, B) ((M) & (1ULL<<(B))) > > +#define TRACEFS_BIT_CLEAR(M, B) do { (M) &= ~(1ULL << (B)); } while (0) > > Does this really need to be public? > > I was thinking that this would just be used internally, and thus in the > tracefs-local.h. > The only reason to export it is because of these APIs, which get bitmask of enum tracefs_dynevent_type types: int tracefs_dynevent_destroy_all(unsigned long type_mask, bool force); struct tracefs_dynevent **tracefs_dynevent_get_all(unsigned long type_mask, const char *system); Currently that type is simple enum, and those macros are used to construct the bitmask: enum tracefs_dynevent_type { TRACEFS_DYNEVENT_KPROBE = 0, TRACEFS_DYNEVENT_KRETPROBE, TRACEFS_DYNEVENT_UPROBE, TRACEFS_DYNEVENT_URETPROBE, TRACEFS_DYNEVENT_EPROBE, TRACEFS_DYNEVENT_SYNTH, TRACEFS_DYNEVENT_MAX, }; The other possible approach is to define the eum in that way, then no macros will be needed: enum tracefs_dynevent_type { TRACEFS_DYNEVENT_KPROBE = 1, TRACEFS_DYNEVENT_KRETPROBE = 1 << 1, TRACEFS_DYNEVENT_UPROBE = 1 << 2, TRACEFS_DYNEVENT_URETPROBE = 1 << 3, TRACEFS_DYNEVENT_EPROBE = 1 << 4, TRACEFS_DYNEVENT_SYNTH = 1 << 5, TRACEFS_DYNEVENT_MAX = 0, }; > -- Steve > > > + > > char *tracefs_get_tracing_file(const char *name); -- Tzvetomir (Ceco) Stoyanov VMware Open Source Technology Center