[DTrace-devel] [PATCH] Add macros to access (get and/or set) entries in the 'state' BPF map
Kris Van Hees
kris.van.hees at oracle.com
Wed Sep 2 13:57:02 PDT 2020
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 f7bf2a9f..500a2f04 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 */
--
2.28.0
More information about the DTrace-devel
mailing list