#define TIMER_IVT_ENTRYNUM 0x1C
or
#define TIMER_IVT_ENTRYNUM 0x08
prevInt = getvect(TIMER_IVT_ENTRYNUM);
setvect(TIMER_IVT_ENTRYNUM, currInt);
вот как я установил свой собственный обработчик прерывания, который выглядит так:
void interrupt Timer::currInt(...) {
(*prevInt)(); //old timer routine
cout << "TIMER occurence" << endl;
lock();
counter++;
tick(); //empty body
if ( (Kernel::getRunning() -> getTimeSlice() > 0) )
if (counter >= Kernel::getRunning() -> getTimeSlice()) {
unlock();
dispatch();
//dispatchInterrupt();
};
unlock();
};
в любом случае, прерывания таймера вообще не происходят сами по себе... но если я вызову процедуру int явно, используя geninterrupt(TIMER_IVT_ENTRYNUM)
, она сработает...
Вроде таймер никогда сам не генерирует прерывания... o.O У меня Win XP 32bit, Borland C++ 3.1 (обязательно)
sleep(seconds)
не зависит от таймера... Я полагаю, что это так, но даже тогда нет никаких доказательств выполнения прерывания... - person maricn   schedule 11.09.2011