Re: [PATCH v3 01/11] libtracefs: Add new public macros for bits manipulations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux