[DTrace-devel] [PATCH 02/15] htab: support lookups for buckets with multiple entries

Kris Van Hees kris.van.hees at oracle.com
Thu Feb 23 15:36:13 UTC 2023


On Thu, Feb 23, 2023 at 12:32:23PM +0000, Nick Alcock wrote:
> On 23 Feb 2023, Kris Van Hees via DTrace-devel verbalised:
> 
> > Probes are represented by a quadruple naming scheme.  For easy lookup,
> > hashtables are kept based on each naming component.  When performing
> > lookups based on one of those hashtables, the head element was always
> > returned which is obviously wrong.
> 
> Ohhh I wondered how you avoided that problem. It never occurred to me
> that it simply wasn't being avoided yet!
> 
> > This patch introduced dt_htab_find() which provides for lookups using
> > a template entry and a secondary comparison function that is used to
> > evaluate the different entries in the bucket that match the template.
> >
> > Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> 
> Reviewed-by: Nick Alcock <nick.alcock at oracle.com>

Thanks.

> > diff --git a/libdtrace/dt_htab.h b/libdtrace/dt_htab.h
> > index 6dae0262..97bb0672 100644
> > --- a/libdtrace/dt_htab.h
> > +++ b/libdtrace/dt_htab.h
> > @@ -97,6 +97,9 @@ extern dt_htab_t *dt_htab_create(struct dtrace_hdl *dtp, dt_htab_ops_t *ops);
> >  extern void dt_htab_destroy(struct dtrace_hdl *dtp, dt_htab_t *htab);
> >  extern int dt_htab_insert(dt_htab_t *htab, void *entry);
> >  extern void *dt_htab_lookup(const dt_htab_t *htab, const void *entry);
> > +typedef int dt_htab_f(const void *entry, void *arg);
> 
> ... except that this typedef name is a bit clumsy. It's not a hash table
> function, it's an entry-comparing function. Maybe dt_htab_entry_cmp_fn?
> (Elsewhere in this file, we seem to use _fn for function-pointer
> typedefs, not _f.)
> 
> Rather long and clumsy name, but it's not used much...

Good point.  I'll change the name and use _fn indeed.



More information about the DTrace-devel mailing list