The following code implements inline tracing for the kinst DTrace
provider.
Briefly explained, what the code does is, for each probe of the form:
```
kinst::<inline_func>:<entry/return>
```
libdtrace checks to see if `<inline_func>` is indeed an inline function, where
where in this case it finds all inline copies of it and creates new probes for each
probes for each one of them. Otherwise, it converts the probe to an FBT one so that we don't
one so that we don't duplicate FBT's functionality in kinst.
Notes:
Unlike FBT, leaving the probe name empty won't trace both `entry` and `return`.
return. kinst goes into "inline-tracing mode" only when it sees `entry`/`return` in the
probe name, otherwise it thinks it's a regular kinst probeentry/return in the probe name, in which case theotherwise it thinks it's a regular kinst
probe, in which case the dtrace(1) invocation will fail if we try to trace an inline function with an
trace an inline function with an empty probe name.
Sponsored by: The FreeBSD Foundation
MFC after: 1 week