[DTrace-devel] [PATCH] Implement the ppid builtin D variable

Kris Van Hees kris.van.hees at oracle.com
Wed Sep 16 16:17:31 PDT 2020


On Wed, Sep 16, 2020 at 06:16:00PM -0400, Kris Van Hees wrote:
> 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...

Should have added: I would suggest names like DT_STATE_TASK_PARENT_OFF and
ST_STATE_TASK_TGID_OFF to make it clear that these are elements in the 'state'
map, and that they are offsets of parent and tgid in the task structure.

> >      $ 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
> 
> _______________________________________________
> 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