Mail Archives: djgpp/1994/02/01/16:31:00
> 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).
- Raw text -