[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