<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
oh, search the web for "Darwin getcontext":<br><br>http://lists.apple.com/archives/darwin-userlevel/2008/Apr/msg00014.html<br><br>Fix for x86 is #define _XOPEN_SOURCE to get the struct to be the right size.<br><br> - Jay<br><br><br><hr id="stopSpelling">From: jay.krell@cornell.edu<br>To: m3devel@elegosoft.com<br>Date: Mon, 14 Dec 2009 12:52:12 +0000<br>Subject: [M3devel] darwin user threads?<br><br>



<style>
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:10pt;font-family:Verdana;}
</style>


It looks like make/get/set/swapcontext aren't viable on MacOSX 10.5.<br>Better on 10.6?<br><br><br>x86 getcontext seems to corrupt things such that a crash follows shortly.<br>AMD64 just doesn't work.<br><br><br>I happen to be experimenting again with see http://www.engelschall.com/pw/usenix/2000/pmt-html/<br>again to ease OpenBSD porting..and had some luck on Darwin, though had trouble getting<br>the timer to trigger ever or more than once.<br><br><br>$ cat 1.c && gcc -m32 1.c && file a.out && ./a.out ; gcc -m64 1.c && file a.out && ./a.out<br>#include <errno.h><br>#include <stdio.h><br>#include <ucontext.h><br><br>int main()<br>{<br> ucontext_t a;<br> int b = getcontext(&a);<br> printf("%d %d\n", b, errno);<br> return 0;<br> }<br> a.out: Mach-O executable i386<br>0 0<br>Segmentation fault<br>a.out: Mach-O 64-bit executable x86_64<br>-1 45<br><br>$ grep 45 /usr/include/sys/errno.h <br>#define ENOTSUP        45        /* Operation not supported */<br><br><br> - Jay<br>                                    </body>
</html>