Date: Tue, 12 Jul 94 04:17:12 JST From: Stephen Turnbull To: leisner AT sdsp DOT mc DOT xerox DOT com Cc: djgpp AT sun DOT soe DOT clarkson DOT edu Subject: controlling where go32 puts program X-Mailer: exmh version 1.4 6/24/94 Date: Mon, 11 Jul 1994 09:40:44 PDT From: Marty Leisner I want to recursivesly do makes... It seems each invocation takes over 100k out of my conventional memory, so after 3 levels I'm "out of space to exec" Right. this is GO32 itself, takes about 130KB per invocation, plus an extra 50KB at startup. This isn't going to go away with current technology. Under 2.0 this problem shouldn't be a problem depending on your DPMI host (see below). So it seems unlikely that current technology will be "fixed". How can I tell go32 where to put the program (msh has a way to: not swap swap to extended swap to disk swap to expanded I want djgpp to put the majority of the program in XMS, with a little bit in conventional memory (to "own a psp"). How can I do this (this seems pretty important and fairly doable). You can't. It's apparently *not* "fairly doable" or (1) DJ would have done it already (2) the other DOS extenders would do it (3) DPMI hosts would do it (only a few do, apparently.) Anyway, GO32 swaps the program out, but not itself. GO32 itself is not reentrant, nor is DOS (presumaby the reason for keeping all those buffers around is so that GO32 or the other protected mode managers can figure out what goes where when everything gets swapped back in). Possible workarounds: (1) Switch to Linux or *BSD. (I seem to recall that you [Marty] came the opposite direction for some reason, so this probably isn't real appealing :-) OR (1) Buy DESQview or DESQview/X. (2) Edit your recursive makefiles to use the "run it in a new process" command (I think that's called "run" surprisingly enough.) OR (1) Search out one of the public domain programs which do this kind of thing for you. They are not very general and require lots of tweaking and probably just plain don't work with protected mode programs, but good luck to you. OR (1) Ask DJ about the DJGPP 2.0 ALPHA distribution and get it. (DJ told me that this would probably be feasible; he also told me that I should do it 'cause he didn't have time at the moment.... He's working on 2.0 in general. Sorry, I forget where the 2.0 ALPHA distribution is, probably omnigate.clarkson.edu or cygnus.com.) 'Tis an ALPHA distribution last I heard, it is incomplete and not suitable for general develpoment, but it was possible to build make and GCC with it as I recall. (You don't need to rebuild the compilers themselves, they're the leaves of the process tree and don't get invoked recursively. That's the secret to this, you just rebuild make and GCC to make themselves small.) (2) Mess with it until it does what you want. OR (1) Wait until somebody else has done that or the public release of 2.0 occurs and get it. The DJGPP 2.0 solution is going to depend on your DPMI host which will be required for DJGPP 2.0. There will probably be a DPMI 1.0 host distributed with DJGPP eventually, but for the moment you'll probably have to depend on one of the proprietary ones (QEMM's QDPMI, 386MAX, etc.) I believe that someone (DJ? Charles Sandmann?) wrote that some DPMI hosts require about 100KB of buffers and housekeeping *per process* in real memory, in which case it's small improvement over GO32. Others require much less. So be careful about which DPMI host you use. marty +-----------------------------------------------------------------------+ | Stephen Turnbull | | University of Tsukuba, Institute of Socio-Economic Planning | | Tennodai 1-chome 1--1, Tsukuba, Ibaraki 305 JAPAN | | Phone: +81 (298) 53-5091 Fax: +81 (298) 55-3849 | | Email: turnbull AT shako DOT sk DOT tsukuba DOT ac DOT jp | | | | Founder and CEO, Skinny Boy Associates | | Mechanism Design and Social Engineering | | REAL solutions to REAL problems of REAL people in REAL time! REALLY. | | Phone: +81 (298) 56-2703 | +-----------------------------------------------------------------------+