<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
just a note, that make/get/set/swapcontext are not available on Darwin (10.4) and OpenBSD.<BR>I didn't check NetBSD. It is on Linux, Solaris, FreeBSD.<BR>
 <BR>
<BR>A "dual" approach where some ports use setjmp/longjmp, some use *context, probably reasonable.<BR>
 <BR>
<BR>Another approach that would probably work is you double up the jmpbuf.<BR>Always make a copy before setjmp and setjmp to the copy.<BR>That way if longjmp "scrambles" it, no matter.<BR>If you can't even copy them, well, setjmp to the "original", copy it away, and then<BR>recopy before any setjmp.<BR>
 <BR>
<BR>However, this is inefficient and using *context is probably better, where it is available.<BR>
 <BR>
<BR>question:<BR>
 <BR>
<BR>On Windows, you can "reserve" virtual memory, and "commit" it.<BR>"reserve" is allocating just the address space.<BR>"commit" I think is ensuring there is room in a pagefile.<BR>Reserve is cheaper. You can overrreserve but I guess not long-term overcommit.<BR>Usually stacks are only ever at first reserved, and then commited gradually,<BR>like a page at a time.<BR>
 <BR>
<BR>Whatever *context documentation I could find, didn't talk about this.<BR>They either used a local char array, or a called mmap.<BR>On at least some platforms, there a flag to mmap to indicate you are creating a stack.<BR>
 <BR>
 <BR>
Do we really need the assembly _fpsetjmp?<BR>
<BR> - Jay<BR><BR></body>
</html>