Home | History | Annotate | Download | only in include
      1 #ifndef BIOSINT_H
      2 #define BIOSINT_H
      3 
      4 /**
      5  * @file BIOS interrupts
      6  *
      7  */
      8 
      9 FILE_LICENCE ( GPL2_OR_LATER );
     10 
     11 #include <realmode.h>
     12 
     13 struct segoff;
     14 
     15 /**
     16  * Hooked interrupt count
     17  *
     18  * At exit, after unhooking all possible interrupts, this counter
     19  * should be examined.  If it is non-zero, it means that we failed to
     20  * unhook at least one interrupt vector, and so must not free up the
     21  * memory we are using.  (Note that this also implies that we should
     22  * re-hook INT 15 in order to hide ourselves from the memory map).
     23  */
     24 extern uint16_t __text16 ( hooked_bios_interrupts );
     25 #define hooked_bios_interrupts __use_text16 ( hooked_bios_interrupts )
     26 
     27 extern void hook_bios_interrupt ( unsigned int interrupt, unsigned int handler,
     28 				  struct segoff *chain_vector );
     29 extern int unhook_bios_interrupt ( unsigned int interrupt,
     30 				   unsigned int handler,
     31 				   struct segoff *chain_vector );
     32 
     33 #endif /* BIOSINT_H */
     34