16 #ifndef __IM_IRQIO_H__
17 #define __IM_IRQIO_H__
19 #if defined(SHOW_INCLUDE_FILE)
20 #pragma message ("#include "__FILE__)
24 #if defined(_IM_COMP_MICROSOFT)
26 #if defined(_IM_HOST_OS_NT_KERNEL)
27 #define DISABLE_INTERRUPT() ;
28 #define ENABLE_INTERRUPT() ;
29 #elif defined(_IM_HOST_OS_NT)
31 #define OUTP(adr, data) _outp(adr, data)
32 #define INP(adr) _inp(adr)
33 #define DISABLE_INTERRUPT() ;
34 #define ENABLE_INTERRUPT() ;
35 #define IRQ_STACKSIZE 512
37 #error ERROR: __IM_IRQIO_H__ for _IM_COMP_MICROSOFT
42 #elif defined(_IM_COMP_WATCOM)
45 #define OUTP(adr, data) outp(adr, data)
46 #define INP(adr) inp(adr)
47 #define DISABLE_INTERRUPT() _disable()
48 #define ENABLE_INTERRUPT() _enable()
49 #define IRQ_STACKSIZE 512
55 #elif defined(_IM_COMP_GNUC) && defined(_IM_HOST_OS_LINUX_DRIVER)
57 #define OUTP(adr,data) outb(adr, data)
58 #define INP(adr) inb(adr)
59 #define DISABLE_INTERRUPT() cli()
60 #define ENABLE_INTERRUPT() sti()
61 #define IRQ_STACKSIZE 512
66 #define INTERRUPT_SUB_QUEUE_SIZE 256
68 #if defined(_IM_HOST_OS_NT_KERNEL)
69 #define INTERRUPT_CIRCULAR_QUEUE_SIZE 256
71 #define INTERRUPT_CIRCULAR_QUEUE_SIZE 512
74 #if defined(_IM_COMP_GNUC)
80 #if defined(_IM_HOST_OS_NT_KERNEL)
81 typedef struct _ODYSSEY_ISR_QUEUE
91 #if !defined(_IM_HOST_OS_NT_KERNEL)
103 #if defined(_IM_HOST_OS_LINUX) && !defined(_IM_HOST_OS_LINUX_DRIVER)
121 #if defined(_IM_HOST_OS_NT)
123 #elif defined(_IM_HOST_OS_NTO) || defined(_IM_HOST_OS_LINUX)
125 sem_t * hEventTerminateThread;
126 sem_t * hEventStartedThread;
127 sem_t * hEventInterruptThreadCompleted;
128 pthread_t hInterruptThread;
134 #if defined(_IM_HOST_OS_NT)
135 HANDLE hEventTerminateThread;
136 HANDLE hEventStartedThread;
138 unsigned InterruptThreadId;
139 HANDLE hInterruptThread;
140 HANDLE hEventInterruptThreadCompleted;
151 #if defined(_IM_HOST_OS_LINUX)
165 #if !defined(_IM_DRIVER_CODE)
167 #if defined(_IM_HOST_OS_NT)
168 IM_EXTC HANDLE IM_FTYPE OdysseyGetHandleEvent(
PODYSSEY_HOOK_LIST pOdysseyHookFunction) IM_LFTYPE;
169 #elif defined(_IM_HOST_OS_NTO) || defined(_IM_HOST_OS_LINUX)
170 IM_EXTC sem_t* IM_FTYPE OdysseyGetHandleEvent(
PODYSSEY_HOOK_LIST pOdysseyHookFunction) IM_LFTYPE;
175 #if !defined(_IM_HOST_OS_NT_KERNEL)
181 #if defined(_IM_HOST_OS_NT)
188 #if defined(_IM_HOST_OS_LINUX)
195 unsigned long InterruptType;
200 #if defined(_IM_COMP_GNUC)
MFTYPE32 long void MPTYPE * UserDataPtr
Definition: Milproto.h:645
IM_EXTC ODYSSEYHOOKFCTPTR IM_FTYPE OdysseyGetFuncPtr(PODYSSEY_HOOK_LIST pOdysseyHookFunction) IM_LFTYPE
IM_EXTC long IM_FTYPE OdysseyHookInterruptFunction(long NodeId, ODYSSEYHOOKFCTPTR InterruptFunctionPtr, unsigned long InterruptType, sem_t *hSema, void *UserDataPtr) IM_LFTYPE
IM_EXTC void *IM_FTYPE OdysseyGetUsrDataPtr(PODYSSEY_HOOK_LIST pOdysseyHookFunction) IM_LFTYPE
struct _ODYSSEY_HOOK_LIST * PODYSSEY_HOOK_LIST
Definition: im_irqio.h:95
IM_EXTC PODYSSEY_HOOK_LIST IM_FTYPE OdysseyGetHookList(long NodeId, long InterruptType) IM_LFTYPE
#define INTERRUPT_CIRCULAR_QUEUE_SIZE
Definition: im_irqio.h:71
struct _ODYSSEY_ISR_INFO * PODYSSEY_ISR_INFO
Definition: im_irqio.h:98
long(IM_FTYPE * ODYSSEYHOOKFCTPTR)(PODYSSEY_HOOK_LIST pHookList) IM_LFTYPE
Definition: im_irqio.h:101
IM_EXTC long IM_FTYPE OdysseyGetInterruptType(PODYSSEY_HOOK_LIST pOdysseyHookFunction) IM_LFTYPE
HANDLE PID_HANDLE
Definition: im_nt.h:100
MFTYPE32 long(MFTYPE MPTYPE *MOCRHOOKFCTPTR)(long HookType
Definition: milocr.h:32
int event
Definition: shower_tr.C:25
Definition: im_irqio.h:114
PODYSSEY_ISR_INFO pOdysseyIsrInfo
Definition: im_irqio.h:115
PODYSSEY_HOOK_LIST previous
Definition: im_irqio.h:133
ODYSSEYHOOKFCTPTR InterruptFunctionPtr
Definition: im_irqio.h:119
unsigned long InterruptType
Definition: im_irqio.h:117
void * UserDataPtr
Definition: im_irqio.h:120
PODYSSEY_HOOK_LIST next
Definition: im_irqio.h:132
Definition: im_irqio.h:147
PODYSSEY_ISR_INFO previous
Definition: im_irqio.h:158
PODYSSEY_HOOK_LIST pOdysseyHookList
Definition: im_irqio.h:149
long NodeId
Definition: im_irqio.h:148
PODYSSEY_ISR_INFO next
Definition: im_irqio.h:157