[Mono-dev] mach kernel support for sgen

Geoff Norton gnorton at novell.com
Thu Jun 17 10:54:54 EDT 2010


I learned recently that one of our long standing issues one mach kernels (darwin specifically) that we chalked up to a bug in their implementation (specifically signal coalescing) is in fact a unfounded assumption by us.  Guaranteeing 1 deliver per signal, (and infact the sem_init issue that plagued us historically) is only guaranteed for RT signals in POSIX Realtime Extension.  As such I've started undertaking to move our runtime away from signals for thread managment on darwin and to use mach ports instead.  With some help from Rodrigo, I got sgen playing nicely with mach ports last night for STW.  This cuts about 50% off our sys time doing GC intensive benchmarks.

I've introduced a new set of helpers into utils for mach support and arch specific backends for x86 and amd64.  It currently is only tested on apple, and certainly wont work anywhere else due to mono_mach_arch_get_tls_value_from_thread being 100% apple specific.  Once we figure out what changes the runtime team would like to see I'll look at porting it to arm.

After getting these changes incubated, I'd like to start looking at moving our Thread.Abort/Interrupt/Suspend semantics to mach ports, as well as sdb's STW semantics.

Comments?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: sgen-mach.diff
Type: application/octet-stream
Size: 12871 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20100617/9db74b70/attachment-0001.obj 
-------------- next part --------------

-g



More information about the Mono-devel-list mailing list