Annotation of gcl520h/_irq286.h, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.