|
|
1.1 root 1: #ifndef _IRQMAN_DOT_H
2: #define _IRQMAN_DOT_H
3:
4: /*
5: * _IRQ88.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 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 12, 1992 4.00A : Initial release
20: * December 1, 1994 5.10A : All of the DOS Extender stuff has been
21: * yanked from here. The extended versions
22: * of the IRQ manager haver their own header
23: * files now.
24: */
25:
26: #define MAXIMUM_HANDLERS 10
27:
28: /*
29: * Note that real far pointers are saved as unsigned longs. This
30: * prevents protected mode code from accidentally choking if and
31: * when it treats a real mode address as a pointer.
32: *
33: * All of the 16 bit DOS Extender remnants here could get trashed.
34: * The only problem right now is that we need to match the structure
35: * up exactly with the structure used in PowerComm. So, to avoid
36: * problems, all this stuff is being left alone right now.
37: */
38:
39: typedef struct _tag_irqdata {
40: void ( GF_FAR *old_handler )( void );
41: unsigned long old_real_handler;
42: void ( GF_CDECL GF_FAR *handler )( void GF_FAR *data );
43: unsigned long real_handler;
44:
45: #ifndef VGFD
46: void GF_FAR *data;
47: #else /* ifndef VGFD */
48: void GF_FAR *data_PM;
49: void GF_FAR *data_V86;
50: #endif
51:
52: unsigned long real_data;
53: void ( GF_CONV *tear_down_function )( void GF_FAR *data );
54: #ifndef _LCODE
55: int dummy_place_holder; /* I keep this struc constant size for ISR ease */
56: #endif
57: int interrupt_number;
58: int saved_8259_bit;
59: int primary_8259;
60: int secondary_8259;
61: int mask_8259;
62: int int_count;
63: int real_int_count;
64: #ifdef VGFD
65: unsigned task_handle_irq; /* VGFD task handle */
66: int vm_id_irq; /* VGFD VM id */
67: #endif
68: } IRQDATA;
69:
70: #ifdef __cplusplus
71: extern "C" {
72: #endif
73:
74: int GF_CONV HookInterrupt( int interrupt_number,
75: #ifndef VGFD
76: void ( GF_CDECL GF_FAR *handler )( void GF_FAR *data ),
77: #else
78: long handler,
79: #endif
80: void ( GF_CDECL GF_FAR *real_handler )( void GF_FAR *data ),
81: void GF_FAR *data,
82: void ( GF_CONV *tear_down_function ) ( void GF_FAR *data ),
83: int primary_8259,
84: int secondary_8259,
85: int mask_8259 );
86:
87: int GF_CONV UnHookInterrupt( int interrupt_number );
88: IRQDATA GF_FAR * GF_CONV _GetInterruptData( int interrupt_number );
89:
90: #if !defined( VGFD )
91: extern IRQDATA GF_FAR _irqtable[ MAXIMUM_HANDLERS ];
92: #else
93: extern IRQDATA GF_FAR *_irqtable;
94: #endif
95:
96:
97: extern void GF_FAR *_dispatcher_stubs[ MAXIMUM_HANDLERS ] ;
98:
99: #ifdef __cplusplus
100: }
101: #endif
102:
103: #endif /* #ifndef _IRQMAN_DOT_H */
104:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.