www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/03/07/13:13:36

Xref: news2.mv.net comp.os.msdos.djgpp:1716
From: Shawn Hargreaves <slh100 AT york DOT ac DOT uk>
Newsgroups: comp.os.msdos.djgpp
Subject: Exiting a program from a hw interrupt
Date: Thu, 7 Mar 1996 16:08:17 +0000
Organization: The University of York, UK
Lines: 37
Message-ID: <Pine.SGI.3.91.960307153523.30C-100000@tower.york.ac.uk>
NNTP-Posting-Host: tower.york.ac.uk
Mime-Version: 1.0
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

This is a question for Charles Sandmann, and anyone else who knows a 
lot about the inner workings of dpmi.

I want to be able to abort my program from inside a hardware interrupt 
(keyboard) handler. I have a taken over a lot of interrupts, and it would 
be nice to have some way to kill my program when it hangs, by pressing 
ctrl+alt+del or some such. In djgpp 1.x just calling exit() from within 
the irq handler worked (I could hardly believe it, but it did :-) In 
djgpp 2 that is not surprisingly no longer the case. After some 
examination of the library sources I came up with the code fragment:

    asm (" 
        movb $0x79, %al
        call ___djgpp_hw_exception
    ");

which does the trick, but is hardly elegant or particularly future-proof, 
since it relys on the inner workings of the library (the 
_djgpp_hw_exception isn't even declared in any headers).

So my question is, is this a safe thing to do? Is this function likely to 
change in later versions of the runtime library, and if so, is there any 
other way I can achieve the same thing?

I'm also unclear as to exactly when this routine will raise the 
exception. As far as I can make out, my interrupt handler will finish and 
exit normally, and the exception will occur as soon as control returns to 
the main body of my code. Is this correct? If so, I can't do my program 
cleanup inside the irq handler (freeing an iret wrapper from inside the 
irq is probably a bad plan :-) so I will have to rely on an atexit() 
function to sort things out for me.


Shawn Hargreaves                        If God is omnipotent, can he make a
http://www.york.ac.uk/~slh100/          rock so heavy that he cannot lift it?


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019