<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
Caveat: OpenBSD now only offers pthreads.<br>Modula-3 user threads require either get/set/make/swapcontext, or sigaltstack. OpenBSD offers neither.<br>There were implementations using setjmp, but they were most unportable, only remained<br>for OpenBSD, and I removed them.<br><br><br> - Jay<br><br><hr id="stopSpelling">From: jay.krell@cornell.edu<br>To: dabenavidesd@yahoo.es; m3devel@elegosoft.com; rcolebur@scires.com<br>Date: Tue, 19 Apr 2011 06:23:55 +0000<br>Subject: Re: [M3devel] 5.8.6 LINUXLIBC6 breakage, kernel 2.6.23, glibc-2.6-4<br><br>
<meta http-equiv="Content-Type" content="text/html; charset=unicode">
<meta name="Generator" content="Microsoft SafeHTML">
<style>
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:10pt;font-family:Tahoma;}
</style>
<pre>> I think we need to post how the various threading models<br>> map to the various implementation platforms, and what<br>> options one needs to use to select between the models, and<br>> on which platforms a choice of threading model is<br>> available.<br><br><br>Win32 only offers Win32 threads.<br>That is the entire story for Win32.<br>User threads have never been provided for Modula-3 on Win32.<br>And probably never will. Though the idea isn't completely without merit.<br>You might experiment with Fibers or UMS, but nobody has done anything here I believe.<br><br><br><br>All other platforms offer user threads and pthreads.<br>Pthreads are the default on all other platforms.<br> Except if we detect we are hosting on and targeting FreeBSD 4.x.<br> (Not FreeBSD 1.x, 2.x, 3,x, but only 4.x.)<br> Then we default to user threads.<br><br><br>To select user threads, you must edit m3-libs/m3core/src/thread/m3makefile and recompile everything.<br>Or no edit, rebuild m3core with cm3 -DNOPTHREAD, and then still recompile everything.<br>I believe you *cannot* just swap in one libm3core.so for another.<br>It'd be nice to be able to do that, but I think it'd require a change that I suspect Tony would reject.<br>I also would like an ability to select at link or execution time, but Tony definitely rejected that.<br> You'd have to be sure to have indirection through function pointers, and the compiler could never<br> inline lock usage. Not that it ever does today, but it might in the future.<br> (Consider Win32 though: no inlining. And pthreads: generally abstract/opaque enough<br> to not allow inlining?)<br><br>Really -- user threads hardly have reason to exist.<br>We need pthreads to work.<br><br><br> - Jay<br><br></pre> </body>
</html>