Date: Tue, 1 Feb 94 15:40:34 -0500 From: DJ Delorie To: rri!potter AT vtserf DOT cc DOT vt DOT edu Cc: djgpp AT sun DOT soe DOT clarkson DOT edu Subject: Re: GO32 paging in interrupt handlers, was: Multitasking under djgpp > Even if DOS is in a non-reentrent state? My example would be while in a DOS > critical error interrupt handler (Interrupt 24h). While in such a handler only > a very few DOS calls a valid, and none of those involve the disk. That's an exception. The original statement was that *go32* can handle page faults while servicing interrupts. This doesn't mean that DOS can. Sad but true; you'll have to get a different operating system if you want this kind of support. > The reason I'm asking is that I've been working on (on and off) the Borland & > Microsoft style harderr() functions. In the program that I originally wrote > these for, I was having a problem with the computer hanging on any critical > error that occured after I did a system(). Originally I thought that system() > wasn't quit right, that it was lossing the interrupt vectors that I had set > before the system() call (I found that recalling my harderr() function to reset > the vector solved the problem). Now I realize that the real problem was that > the harderr catch functions was swapped out and calling harderr() caused it to > be swapped back in. (Actually I probably sould release the interrupt before the > system() call and then rehook it on return.) This then reopens the question > the original poster asked of, How to lock down pages? I know I could use the > DPMI call, however my current program does not work under DPMI, and I don't > remember seeing that one listed as one of the DPMI calls GO32 supports. Go32 supports "un-page-out-able pages" but has no way of marking them as such from an application. I suppose it would be a trivial addition to go32 for a maintainence release to provide such a hook, but I don't know how it would handle out-of-memory conditions (probably a panic for starters).