[DTrace-devel] [PATCH 05/14] Add a hook for a provider-specific "update" function

Eugene Loh eugene.loh at oracle.com
Mon Jun 10 22:14:35 UTC 2024


On 6/4/24 17:38, Kris Van Hees wrote:

> Much like the previous patch not considering the generic nature of retained
> enablings, this one should be part of that design also.  The functionality
> we need to handle match-after-start probe specifications really should be
> independent from any specific provider.  It may (well, almost certainly will)
> require a hook in providers that need to do special handling.  But that would
> be a specific hook for a specific purpose - not just an 'update' hook.

I guess I do not know what you're asking for here.  I think we agree 
that a provider-specific hook is needed.  So, what scope or purpose 
should that hook have?  The immediate purpose at hand is to update the 
set of pids we're tracking for uprobes.  I'm open to thinking about this 
in other ways, but then some specific proposals would be helpful.

> On Tue, Jun 04, 2024 at 02:11:04PM -0400, eugene.loh--- via DTrace-devel wrote:
>> From: Eugene Loh <eugene.loh at oracle.com>
>>
>> For up-coming USDT-probe support, we need to update a BPF map
>> -- at least when the dtrace session starts but possibly also later
>> to support systemwide USDT tracing for processes that may start up
>> later.
>>
>> One way to do this is with a USDT-specific update function.
>>
>> For now, let's add a hook for providers to have provider-specific
>> update functions.  User space can either call
>>
>>      for (i = 0; i < ARRAY_SIZE(dt_providers); i++) {
>>          if (dt_providers[i]->update)
>>              dt_providers[i]->update(...);
>>      }
>>
>> any time it likes.  Or it can call dt_usdt.update(...).
>>
>> This is for WIP.  A different approach can be adopted later instead.
>>
>> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
>> ---
>>   libdtrace/dt_provider.h | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/libdtrace/dt_provider.h b/libdtrace/dt_provider.h
>> index 17b1844c..21ff15ad 100644
>> --- a/libdtrace/dt_provider.h
>> +++ b/libdtrace/dt_provider.h
>> @@ -68,6 +68,8 @@ typedef struct dt_provimpl {
>>   			      void *datap);
>>   	void (*destroy)(dtrace_hdl_t *dtp,	/* free provider data */
>>   			      void *datap);
>> +	void (*update)(dtrace_hdl_t *dtp,	/* update provider-specific info */
>> +			      void *datap);
>>   } dt_provimpl_t;
>>   
>>   /* list dt_dtrace first */
>> -- 
>> 2.18.4
>>
>>
>> _______________________________________________
>> 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