#ifndef BIOSINT_H
#define BIOSINT_H

/**
 * @file BIOS interrupts
 *
 */

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );

#include <realmode.h>

struct segoff;

/**
 * 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,
				   unsigned int handler,
				   struct segoff *chain_vector );
extern void check_bios_interrupts ( void );

#endif /* BIOSINT_H */
