Re: [PATCH v2 6/7] tracing/user_events: Use bits vs bytes for enabled status page data

From: Steven Rostedt
Date: Tue Jul 26 2022 - 18:01:25 EST


On Mon, 25 Apr 2022 11:46:30 -0700
Beau Belgrave <beaub@xxxxxxxxxxxxxxxxxxx> wrote:

> diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c
> index 2bcae7abfa81..4afc41e321ac 100644
> --- a/kernel/trace/trace_events_user.c
> +++ b/kernel/trace/trace_events_user.c
> @@ -40,17 +40,26 @@
> */
> #define MAX_PAGE_ORDER 0
> #define MAX_PAGES (1 << MAX_PAGE_ORDER)
> -#define MAX_EVENTS (MAX_PAGES * PAGE_SIZE)
> +#define MAX_BYTES (MAX_PAGES * PAGE_SIZE)
> +#define MAX_EVENTS (MAX_BYTES * 8)
>
> /* Limit how long of an event name plus args within the subsystem. */
> #define MAX_EVENT_DESC 512
> #define EVENT_NAME(user_event) ((user_event)->tracepoint.name)
> #define MAX_FIELD_ARRAY_SIZE 1024
>
> +#define STATUS_BYTE(bit) ((bit) >> 3)
> +#define STATUS_MASK(bit) (1 << ((bit) & 7))
> +
> +/* Internal bits to keep track of connected probes */
> +#define EVENT_STATUS_FTRACE (1 << 0)
> +#define EVENT_STATUS_PERF (1 << 1)
> +#define EVENT_STATUS_OTHER (1 << 7)

Did you mean to shift STATUS_OTHER by 7?

Is EVENT_STATUS_OTHER suppose to be one of the flags within the 3 bits of
the 7 in STATUS_MASK?

-- Steve

> +
> static char *register_page_data;
>
> static DEFINE_MUTEX(reg_mutex);
> -static DEFINE_HASHTABLE(register_table, 4);
> +static DEFINE_HASHTABLE(register_table, 8);
> static DECLARE_BITMAP(page_bitmap, MAX_EVENTS);
>
> /*
> @@ -72,6 +81,7 @@ struct user_event {
> int index;
> int flags;
> int min_size;
> + char status;
> };