<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
I looked into this a bit..and I think it's actually pretty easy.<BR>It hardly churns the code even.<BR>
 <BR>
<BR>I have other things I want to do first.<BR>
 <BR>
<BR>In the meantime, specify the directive?<BR>There are actually a large number of subtle options.<BR>
 <BR>
 <BR>
Can I ask for any of n libraries -- NT, pthreads, user threads?<BR>
 setjmp vs. context? Or is it just a boolean, user vs. kernel?<BR>
 <BR>
 <BR>
Is the option to "favor" or "require" a certain library?<BR>
 <BR>
 <BR>
Can I set it on libraries or only programs?<BR>
 What if the requests clash?<BR>
 <BR>
 <BR>
Is it "Favor" or "Require"?<BR>
Is it a function call or setting a global variable?<BR>
I favor function call, but TARGET, WORD_SIZE, BUILD_DIR establish the other precedent,<BR>
and either can work.<BR>
 <BR>
Is it flags in the moduleinfo like incgc, gengc, or separate data that<BR>
there is just one of in RTLinker? Probably separate data, unless it is allowed in libraries.<BR>
 <BR>
 <BR>
What are the names of the libraries?<BR>
 "posix" and "pthreads"  ?<BR>
  "user" and "kernel" ?<BR>
  "true" and "false" (or vice versa) ?<BR>
 <BR>
 <BR>
Should NT implement user threads, using fibers?<BR>
 <BR>
 <BR>
Presumably it works with both standalone and shared/dynamic programs.<BR>
Presumably it is ok to always bloat up m3core.dll with both libraries.<BR>
Presumably it is ok to have everyone pay a teeny tiny perf.<BR>
  That is, there is a microscopic dispatching layer, that everyone<BR>
  ends up going through, not chosing to link in one library or the other.<BR>
 <BR>
 <BR>
And as part of this, whenever it happens, can we bump up the minimum<BR>
bootstrap to a version that includes SchedulerPosix.DoesWaitPidYield()?<BR>
Or does it become VAR Scheduler.UsingKerneThreads?<BR>
(no, it should be a function; but naming matter remains).<BR>
 <BR>
 <BR>
(ie. as I said, the decision currently is baked into m3core.dll, but<BR>
now it is also baked into sysutils.dll, but these should change together;<BR>
m3core.dll should manage the knowledge).<BR>
 <BR>
<BR> - Jay<BR><BR><BR>> Date: Sat, 3 Jan 2009 01:12:27 +0100<BR>> From: wagner@elegosoft.com<BR>> To: m3devel@elegosoft.com<BR>> Subject: Re: [M3devel] dynamic chose between user/kernel threads?<BR>> <BR>> An option to cm3 or a quake directive to use in the m3makefiles<BR>> would suffice in my opinion (and be a great improvement).<BR>> <BR>> Olaf<BR>> <BR>> Quoting Jay <jay.krell@cornell.edu>:<BR>> <BR>> ><BR>> > Should the user/kernel thread chose be available:<BR>> ><BR>> ><BR>> > On the command line to a Modula-3 executable (or even an executable <BR>> > where main is in another language, but which static or dynamic <BR>> > Modula-3 libs are used)?<BR>> ><BR>> ><BR>> > Via a quake directive when building programs?<BR>> ><BR>> ><BR>> > You know, imagine you have a bunch of Modula-3 programs and some but <BR>> > not all use a very large number of threads and benefit from <BR>> > userthreads.<BR>> ><BR>> ><BR>> > Currently the chose is locked into m3core when it is built.<BR>> ><BR>> ><BR>> > - Jay<BR>> <BR>> <BR>> -- <BR>> Olaf<BR></body>
</html>