#
272461 |
|
02-Oct-2014 |
gjb |
Copy stable/10@r272459 to releng/10.1 as part of the 10.1-RELEASE process.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
262058 |
|
17-Feb-2014 |
avg |
MFC r258625: sdt: add support for solaris/illumos style DTRACE_PROBE macros
Note: in head KDTRACE_HOOKS is defined in opt_global.h and thus there is no need to explicitly include any header to check that option. In this branch we have to include opt_kdtrace.h and, so, this commit carries additional changes to accomodate for that difference.
Sponsored by: HybridCluster
|
#
262040 |
|
17-Feb-2014 |
avg |
MFC r257152: Do some cleanup of the SDT code
|
#
260817 |
|
17-Jan-2014 |
avg |
MFC r258622: dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE
|
#
256281 |
|
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
#
255776 |
|
21-Sep-2013 |
markj |
Give argtype struct names a different prefix than probe struct names. Otherwise it's possible to declare SDT probes in such a way that a name collision occurs, causing an unexpected compilation error.
Approved by: re (gjb) MFC after: 1 week
|
#
254468 |
|
17-Aug-2013 |
markj |
Add a "translated type" argument to SDT_PROBE_ARGTYPE() and add some macros which allow one to define SDT probes that specify translated types. The idea is to make it easy to write SDT probe definitions that can work across multiple operating systems. In particular, this makes it possible to port illumos SDT probes to FreeBSD without changing their argument types, so long as the appropriate translators are defined. Then DTrace scripts written for Solaris/illumos will work on FreeBSD without any changes.
MFC after: 1 week
|
#
254268 |
|
13-Aug-2013 |
markj |
FreeBSD's DTrace implementation has a few problems with respect to handling probes declared in a kernel module when that module is unloaded. In particular,
* Unloading a module with active SDT probes will cause a panic. [1] * A module's (FBT/SDT) probes aren't destroyed when the module is unloaded; trying to use them after the fact will generally cause a panic.
This change fixes both problems by porting the DTrace module load/unload handlers from illumos and registering them with the corresponding EVENTHANDLER(9) handlers. This allows the DTrace framework to destroy all probes defined in a module when that module is unloaded, and to prevent a module unload from proceeding if some of its probes are active. The latter problem has already been fixed for FBT probes by checking lf->nenabled in kern_kldunload(), but moving the check into the DTrace framework generalizes it to all kernel providers and also fixes a race in the current implementation (since a probe may be activated between the check and the call to linker_file_unload()).
Additionally, the SDT implementation has been reworked to define SDT providers/probes/argtypes in linker sets rather than using SYSINIT/SYSUNINIT to create and destroy SDT probes when a module is loaded or unloaded. This simplifies things quite a bit since it means that pretty much all of the SDT code can live in sdt.ko, and since it becomes easier to integrate SDT with the DTrace framework. Furthermore, this allows FreeBSD to be quite flexible in that SDT providers spanning multiple modules can be created on the fly when a module is loaded; at the moment it looks like illumos' SDT implementation requires all SDT probes to be statically defined in a single kernel table.
PR: 166927, 166926, 166928 Reported by: davide [1] Reviewed by: avg, trociny (earlier version) MFC after: 1 month
|
#
253022 |
|
08-Jul-2013 |
markj |
Also define SDT_PROBE_DEFINE0 for the !KDTRACE_HOOKS case.
|
#
252894 |
|
06-Jul-2013 |
markj |
Add SDT_PROBE_DEFINE0 for consistency with SDT_PROBE0.
MFC after: 1 week
|
#
251166 |
|
30-May-2013 |
markj |
Add macros which allow one to define SDT probes with six or seven arguments; they are needed when porting some of the Solaris providers (ip, iscsi, and tcp in particular).
dtrace_probe() only takes five arguments from the probe site, so we need to add the appropriate cast to allow for more than five arguments. The extra arguments are later copied out of dtrace_probe()'s stack frame by dtrace_getarg() (or the provider-specific getarg method) as needed.
MFC after: 1 week
|
#
250816 |
|
19-May-2013 |
pjd |
Protect SDT_PROBE() with do { } while (0) loop.
|
#
235459 |
|
14-May-2012 |
rstone |
Implement the DTrace sched provider. This implementation aims to be compatible with the sched provider implemented by Solaris and its open- source derivatives. Full documentation of the sched provider can be found on Oracle's DTrace wiki pages.
Note that for compatibility with scripts originally written for Solaris, serveral probes are defined that will never fire. These probes are defined to fire when Solaris-specific features perform certain actions. As these features are not present in FreeBSD, the probes can never fire.
Also, I have added a two probes that are not defined in Solaris, lend-pri and load-change. These probes have been added to make it possible to collect schedgraph data with DTrace.
Finally, a few probes are defined in Solaris to take a cpuinfo_t * argument. As it was not immediately clear to me how to translate that to FreeBSD, currently those probes are passed NULL in place of a cpuinfo_t *.
Sponsored by: Sandvine Incorporated MFC after: 2 weeks
|
#
233552 |
|
27-Mar-2012 |
rstone |
Instead of only iterating over the set of known SDT probes when sdt.ko is loaded and unloaded, also have sdt.ko register callbacks with kern_sdt.c that will be called when a newly loaded KLD module adds more probes or a module with probes is unloaded.
This fixes two issues: first, if a module with SDT probes was loaded after sdt.ko was loaded, those new probes would not be available in DTrace. Second, if a module with SDT probes was unloaded while sdt.ko was loaded, the kernel would panic the next time DTrace had cause to try and do anything with the no-longer-existent probes.
This makes it possible to create SDT probes in KLD modules, although there are still two caveats: first, any SDT probes in a KLD module must be part of a DTrace provider that is defined in that module. At present DTrace only destroys probes when the provider is destroyed, so you can still panic the system if a KLD module creates new probes in a provider from a different module(including the kernel) and then unload the the first module.
Second, the system will panic if you unload a module containing SDT probes while there is an active D script that has enabled those probes.
MFC after: 1 month
|
#
227294 |
|
07-Nov-2011 |
ed |
SDT's struct sdt_argtype can be marked static everywhere.
It is only passed to SYSINIT/SYSUNINIT.
|
#
211616 |
|
22-Aug-2010 |
rpaulo |
Add an extra comment to the SDT probes definition. This allows us to get use '-' in probe names, matching the probe names in Solaris.[1]
Add userland SDT probes definitions to sys/sdt.h.
Sponsored by: The FreeBSD Foundation Discussed with: rwaston [1]
|
#
199883 |
|
28-Nov-2009 |
bz |
Add SDT_PROBE[1-5] in the same way we have SDT_PROBE_DEFINE[1-5] to avoid having to add all the unused trailing arguments as zeros.
MFC after: 6 days
|
#
189314 |
|
03-Mar-2009 |
rwatson |
Adding missing ";"'s required by some SDT_PROBE_DEFINEx() macros.
MFC after: 1 week
|
#
189311 |
|
03-Mar-2009 |
rwatson |
Reduce the verbosity of SDT trace points for DTrace by defining several wrapper macros that allow trace points and arguments to be declared using a single macro rather than several. This means a lot less repetition and vertical space for each trace point.
Use these macros when defining privilege and MAC Framework trace points.
Reviewed by: jb MFC after: 1 week
|
#
179063 |
|
17-May-2008 |
jb |
Add the statically defined tracing header.
Note that this implementation differs from the one in OpenSolaris, so it is BSD licensed and can be included anywhere.
The kernel definitions defined here are dependent on the kernel option KDTRACE_HOOKS so that macros added to the sources are pre-processed out completely when the DTrace kernel hooks aren't compiled in.
|