[DTrace-devel] [PATCH v2 06/08] Add macros to access (get and/or set) entries in the 'state' BPF map

Eugene Loh eugene.loh at oracle.com
Thu Sep 17 21:23:33 PDT 2020


Reviewed-by: Eugene Loh <eugene.loh at oracle.com>

On 09/14/2020 12:51 PM, Kris Van Hees wrote:
> Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
>   libdtrace/dt_state.h | 29 +++++++++++++++++++++++++++++
>   1 file changed, 29 insertions(+)
>
> diff --git a/libdtrace/dt_state.h b/libdtrace/dt_state.h
> index 219a00fc..dff0aabf 100644
> --- a/libdtrace/dt_state.h
> +++ b/libdtrace/dt_state.h
> @@ -8,6 +8,11 @@
>   #ifndef _DT_STATE_H
>   #define _DT_STATE_H
>   
> +#include "dt_bpf.h"
> +#include "dt_impl.h"
> +
> +struct dtrace_hdl;
> +
>   /*
>    * DTrace 'state' BPF map.
>    *
> @@ -34,4 +39,28 @@ typedef enum dt_activity {
>   	DT_ACTIVITY_STOPPED		/* tracing stopped */
>   } dt_activity_t;
>   
> +static inline uint32_t
> +dt_state_get(dtrace_hdl_t *dtp, uint32_t key)
> +{
> +        uint32_t        val = 0;
> +
> +        dt_bpf_map_lookup(dtp->dt_stmap_fd, &key, &val);
> +
> +        return val;
> +}
> +
> +static inline void
> +dt_state_set(dtrace_hdl_t *dtp, uint32_t key, uint32_t val)
> +{
> +        dt_bpf_map_update(dtp->dt_stmap_fd, &key, &val);
> +}
> +
> +#define dt_state_get_activity(dtp)	((dt_activity_t) \
> +					 dt_state_get(dtp, DT_STATE_ACTIVITY))
> +#define dt_state_get_beganon(dtp)	dt_state_get(dtp, DT_STATE_BEGANON)
> +#define dt_state_get_endedon(dtp)	dt_state_get(dtp, DT_STATE_ENDEDON)
> +
> +#define dt_state_set_activity(dtp, act)	dt_state_set(dtp, DT_STATE_ACTIVITY, \
> +						     (uint32_t)(act))
> +
>   #endif /* _DT_STATE_H */




More information about the DTrace-devel mailing list