diff options
Diffstat (limited to 'src/arch/i386/include/biosint.h')
-rw-r--r-- | src/arch/i386/include/biosint.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/arch/i386/include/biosint.h b/src/arch/i386/include/biosint.h index d4e34963..d365cf01 100644 --- a/src/arch/i386/include/biosint.h +++ b/src/arch/i386/include/biosint.h @@ -6,9 +6,22 @@ * */ +#include <realmode.h> + struct segoff; -extern int hooked_bios_interrupts; +/** + * Hooked interrupt count + * + * At exit, after unhooking all possible interrupts, this counter + * should be examined. If it is non-zero, it means that we failed to + * unhook at least one interrupt vector, and so must not free up the + * memory we are using. (Note that this also implies that we should + * re-hook INT 15 in order to hide ourselves from the memory map). + */ +extern uint16_t __text16 ( hooked_bios_interrupts ); +#define hooked_bios_interrupts __use_text16 ( hooked_bios_interrupts ) + extern void hook_bios_interrupt ( unsigned int interrupt, unsigned int handler, struct segoff *chain_vector ); extern int unhook_bios_interrupt ( unsigned int interrupt, |