|
|
1.1 ! root 1: #ifndef _IRQ16_DOT_H ! 2: #define _IRQ16_DOT_H ! 3: ! 4: /* ! 5: * _IRQ286.H 5.20A June 8, 1995 ! 6: * ! 7: * The Greenleaf Comm Library ! 8: * ! 9: * Copyright (C) 1984-1995 Greenleaf Software Inc. All Rights Reserved. ! 10: * ! 11: * NOTES ! 12: * ! 13: * This file contains all the structures and constants used by ! 14: * the 16 bit IRQ Manager internal functions. End users should never ! 15: * have to include this file in any of their source modules. ! 16: * ! 17: * MODIFICATIONS ! 18: * ! 19: * December 1, 1994 5.10A : Initial release. ! 20: * ! 21: */ ! 22: ! 23: #define MAXIMUM_HANDLERS 10 ! 24: ! 25: #pragma pack( 1 ) ! 26: ! 27: typedef struct _tag_irqdata { ! 28: void far * old_prot_handler; ! 29: GF_REALPTR16 old_real_handler; ! 30: void far *prot_handler; ! 31: GF_REALPTR16 real_handler; ! 32: void far *prot_handler_data; ! 33: GF_REALPTR16 real_handler_data; ! 34: void ( GF_CONV *tear_down_function )( void far *data ); ! 35: #ifndef _LCODE ! 36: int dummy_place_holder; /* I keep this struc constant size for ISR ease */ ! 37: #endif ! 38: int interrupt_number; ! 39: int saved_8259_bit; ! 40: int primary_8259; ! 41: int secondary_8259; ! 42: int mask_8259; ! 43: int prot_int_count; ! 44: int real_int_count; ! 45: } IRQDATA; ! 46: ! 47: #pragma pack() ! 48: ! 49: #ifdef __cplusplus ! 50: extern "C" { ! 51: #endif ! 52: ! 53: int GF_CONV HookInterrupt( int interrupt_number, ! 54: void ( GF_CDECL *prot_handler )( void far *data ), ! 55: GF_REALPTR16 real_handler, ! 56: void far *handler_data, ! 57: void ( GF_CONV *tear_down_function ) ( void far *data ), ! 58: int primary_8259, ! 59: int secondary_8259, ! 60: int mask_8259 ); ! 61: int GF_CONV UnHookInterrupt( int interrupt_number ); ! 62: void far * GF_CONV _GetInterruptData( int interrupt_number ); ! 63: int GF_CONV RelocateIsrData( void ); ! 64: void far * GF_CONV CalcRR16Address( void far *p ); ! 65: ! 66: #ifdef __cplusplus ! 67: } ! 68: #endif ! 69: ! 70: /* ! 71: * These first two extern declarations are used to find the start and end ! 72: * of the real isr data area. We need this when it is time to perform ! 73: * the relocation. ! 74: */ ! 75: ! 76: extern char far _SegmentStartRR; ! 77: extern char far _SegmentEndRR; ! 78: ! 79: /* ! 80: * These two extern definitions are really important. When ! 81: * the 16 bit IRQ manager is initialized, it relocates the real portion ! 82: * of the IRQ manager, plus the table of IRQDATA blocks down to ! 83: * a block of real memory. Thse two pointers let everyone else ! 84: * know where that memory block is. ! 85: */ ! 86: ! 87: extern GF_REALPTR16 RealBlockPtrReal; ! 88: extern void far *RealBlockPtrProt; ! 89: ! 90: void GF_CDECL far _RealIret( GF_REALPTR16 int_flag ); ! 91: ! 92: #endif /* #ifndef _IRQ16_DOT_H */ ! 93:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.