-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIVTEntry.h
40 lines (32 loc) · 884 Bytes
/
IVTEntry.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef _IVTENTRY_H_
#define _IVTENTRY_H_
#include "PCB.h"
typedef void interrupt (*Handler)(...);
class PCB;
class KernelEvent;
class IVTEntry
{
public:
static IVTEntry* ivtTable[256];
IVTEntry(unsigned char ivtNumber,
Handler newHandler,
int callOldHandlerFlag);
~IVTEntry();
static unsigned usedTable[256];
void signal();
//private:
Handler oldHandler,newHandler;
int callOldHandlerFlag;
unsigned char ivtNumber;
KernelEvent* myKernelEvent;
Thread* myLifetimeThread;//------
};
/*Makro samo poziva signal odredjenog ulaza*/
#define PREPAREENTRY(ivtNumber,callOldHandlerFlag)\
void interrupt interruptRoutine##ivtNumber(...);\
IVTEntry entry##ivtNumber(ivtNumber,interruptRoutine##ivtNumber,callOldHandlerFlag);\
void interrupt interruptRoutine##ivtNumber(...)\
{\
IVTEntry::ivtTable[ivtNumber]->signal();\
}
#endif