[DTrace-devel] [PATCH v2] Add support for built-in variable walltimestamp
Kris Van Hees
kris.van.hees at oracle.com
Tue Jun 15 10:37:53 PDT 2021
On Tue, Jun 15, 2021 at 01:25:27PM -0400, Eugene Loh wrote:
> On 6/15/21 11:08 AM, Kris Van Hees wrote:
>
> > On Mon, Jun 14, 2021 at 05:52:01PM -0400, eugene.loh at oracle.com wrote:
> >> From: Eugene Loh <eugene.loh at oracle.com>
> >>
> >> In the pre-compiled get_bvar() function, use bpf_ktime_get_ns() to
> >> get the time (in nsec) since boot. This value is adjusted by adding
> >> the POSIX time when the system was booted.
> >>
> >> diff --git a/bpf/get_bvar.c b/bpf/get_bvar.c
> >> +extern uint64_t BOOTTIMEHI;
> >> +extern uint64_t BOOTTIMELO;
> >> @@ -167,6 +169,10 @@ noinline uint64_t dt_get_bvar(dt_dctx_t *dctx, uint32_t id)
> >> + case DIF_VAR_WALLTIMESTAMP:
> >> + return bpf_ktime_get_ns()
> >> + + (((uint64_t) &BOOTTIMEHI) << 32)
> >> + + ((uint64_t) &BOOTTIMELO);
> > Why do you use two variables when each is 64-bit bits wide and the adjustment
> > itself is a 64-bit value. So, a single variable ought to be enough.
> Yup. That's what I thought. Nevertheless, only the lowest 32 bits
> survive. I guess I can investigate more, but the single variable did
> not work for me. To be picky, the width of the variable is
> unimportant; we want the address. But yeah, I agree with you, but it
> just did not work.
Ah, but that means we have a bug... Which we should fix instead of working
around it :) Anyway, patch on its way soon.
More information about the DTrace-devel
mailing list