aboutsummaryrefslogtreecommitdiffstats
path: root/src/arch/i386/include/biosint.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/i386/include/biosint.h')
-rw-r--r--src/arch/i386/include/biosint.h15
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,