[PATCH V3 1/9] Adapt `info probes' to support printing probes of different types.

Pedro Alves palves@redhat.com
Mon Nov 17 16:36:00 GMT 2014


On 11/14/2014 11:08 PM, Sergio Durigan Junior wrote:
> On Friday, November 14 2014, Pedro Alves wrote:
> 
>> On 10/31/2014 06:56 PM, Sergio Durigan Junior wrote:
>>> Also, any particular reason why you did not create a field "type" inside
>>> "struct probe", instead of making a function that returns the string?  I
>>> consider the field would be simpler (i.e., not pollute the probe_ops
>>> structure), and it could be set when creating the probes.
>>
>> Not sure I understood it (and probably doesn't matter much), seems like
>> that'd waste memory storing the same info over and over?
> 
> We would be wasting sizeof (char *) for each probe created, indeed, but
> I think this is clearer (also for debugging purposes) than having all
> the necessary machinery to call a function that will return the same
> info...

IMO, that's not cleaner, because the type name is a property of
the type, not of the instance, so it makes sense to get it from the
type (thus through an ops method).  Writing the equivalent C++ may
make it clearer.  Something like:

struct probe
{
...
   virtual const char *type_name () = 0;
};

struct stap_probe : public probe
{
...
   virtual const char *type_name () { return "stap"; }
};

struct dtrace_probe : public probe
{
...
   virtual const char *type_name () { return "dtrace"; }
};


And then in info_probes_for_ops:

      const char *probe_type = probe->probe->type_name ();

> 
> Anyway, I won't oppose the current approach too, I was just curious :-P.


Thanks,
Pedro Alves



More information about the Gdb-patches mailing list