[Mono-dev] [PATCH] Mono DTrace provider v2

Andreas Färber andreas.faerber at web.de
Fri May 30 18:09:03 EDT 2008


Here's an updated version of my patch, adding initial DTrace support  
to the Mono runtime.

A new hand-crafted header file has been added, which is to be included  
in place of the generated header file. It defines MONO_PROBE_* macros  
as requested by Zoltan. The generated header file is then only needed  
iff DTrace is enabled.

Ugly build steps for Solaris were moved to a shell script. It extracts  
object files from their library to a temporary directory, patches them  
and puts them back in. This helps keep Makefiles clean and provides a  
one-stop resource to fix things, should they break. Tested on  
OpenSolaris 2008.05 i86. (Warning: I am not experienced in writing  
shell scripts.)

It appears the problem with the gc-end probe on Solaris was due to  
some kind of compiler optimization or the like. Adding a trailing  
sleep(0) call made it work; I have limited this workaround to when the  
gc-end probe is enabled on Solaris, to minimize the impact. Better  
ideas welcome. If we do stick with it and it turns out this is needed  
in more void functions, we could consider turning this into a  
MONO_PROBE_* macro to keep source files clean.

Signed-off-by: Andreas Faerber <andreas.faerber at web.de>

Change Log v2:

* dtrace-prelink.sh.in: New
   Script to prevent ugly Solaris hacks in Makefiles.

* configure.in:
   Prepare support for OSX/x86_64 (untested)
   Output dtrace-prelink.sh script.

* data/mono.d: Renamed (from mono-trace.d)
   Added standard Mono header.
   Added generation argument to gc-{begin,end} probes.
   Added explicit stability attributes.

* mono/utils/dtrace.h: New
   Wrapper around generated mono/utils/mono-dtrace.h.
   Define MONO_PROBE_* macros.

* mono/utils/Makefile.am:
   We no longer need to postprocess the generated header file.

* mono/metadata/Makefile.am,
   Use new dtrace-prelink.sh script.

* mono/mini/mini.c,
   Use new macros

* mono/metadata/boehm-gc.c:
   Add workaround to make gc-end probe work on Solaris.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: DTrace-USDT-2.diff
Type: application/octet-stream
Size: 11079 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20080531/9ebb2468/attachment.obj 
-------------- next part --------------

More information about the Mono-devel-list mailing list