[DTrace-devel] [PATCH] Implement the ppid builtin D variable
Kris Van Hees
kris.van.hees at oracle.com
Wed Sep 16 15:16:00 PDT 2020
On Wed, Sep 16, 2020 at 02:48:43PM -0700, Eugene Loh wrote:
> The other reply slipped out before I wrote anything. Sorry. Let's try
> this again...
>
>
> On 09/16/2020 02:02 PM, Kris Van Hees wrote:
> > On Wed, Sep 16, 2020 at 02:16:33PM -0400, eugene.loh at oracle.com wrote:
> >> diff --git a/bpf/get_bvar.c b/bpf/get_bvar.c
> >> @@ -46,6 +46,17 @@ noinline uint64_t dt_get_bvar(dt_mstate_t *mst, uint32_t id)
> >>
> >> return val & 0x00000000ffffffffUL;
> >> }
> >> + case DIF_VAR_PPID: {
> >> + uint64_t ptr = bpf_get_current_task();
> >> + int32_t val = -1;
> >> +
> >> + if (ptr == 0)
> >> + return -1;
> >> +
> >> + bpf_probe_read((void *) &ptr, 8, (const void *) (ptr + mst->offparent));
> >> + bpf_probe_read((void *) &val, 4, (const void *) (ptr + mst->offtgid));
> > I suggested storing the offsets in the 'state' map rather than the 'mem' map.
>
> Right, sorry. But what is the 'state' map?
From: Kris Van Hees <kris.van.hees at oracle.com>
To: dtrace-devel at oss.oracle.com
Subject: [DTrace-devel] [PATCH REVIEWED] Implement a 'state' BPF map to
communicate tracing session state
Reviewed by you a while ago...
> $ grep create_gmap libdtrace/dt_bpf.c
> create_gmap(dtrace_hdl_t *dtp, const char *name, enum bpf_map_type
> type,
> if (create_gmap(dtp, "buffers", BPF_MAP_TYPE_PERF_EVENT_ARRAY,
> ci_mapfd = create_gmap(dtp, "cpuinfo", BPF_MAP_TYPE_PERCPU_ARRAY,
> ci_memfd = create_gmap(dtp, "mem", BPF_MAP_TYPE_PERCPU_ARRAY,
> if (create_gmap(dtp, "strtab", BPF_MAP_TYPE_ARRAY,
> create_gmap(dtp, "gvars", BPF_MAP_TYPE_ARRAY,
> create_gmap(dtp, "tvars", BPF_MAP_TYPE_ARRAY,
>
> 'mstate' was the closest I found, and it's in mem.
>
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel
More information about the DTrace-devel
mailing list