Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 998 → Rev 999

/shark/trunk/oslib/kl/event1.c
35,6 → 35,7
#include <ll/i386/advtimer.h>
#include <ll/i386/error.h>
#include <ll/i386/64bit.h>
#include <ll/i386/limits.h>
 
#include <ll/sys/ll/ll-data.h>
#include <ll/sys/ll/ll-func.h>
139,7 → 140,11
struct timespec now, ttmp;
WORD tmp;
DWORD tnext;
DWORD max_tnext;
 
 
 
 
TRACER_LOGEVENT(FTrace_EVT_timer_wakeup_start, 0, 0);
 
if (!use_tsc) {
189,21 → 194,38
ll_read_timespec(&now);
}
 
if (TIMESPEC_A_GT_B(&now, &(firstevent->time))) {
NULL_TIMESPEC(&ttmp);
} else {
SUBTIMESPEC(&(firstevent->time), &now, &ttmp);
}
/* SUBTIMESPEC(&(firstevent->time), &now, &ttmp); */
tnext = TIMESPEC2USEC(&ttmp);
if (!use_apic) {
mul32div32to32(tnext,1193182,1000000,tnext);
pit_setconstant(0, tnext);
} else {
if (firstevent) {
if (TIMESPEC_A_GT_B(&now, &(firstevent->time))) {
NULL_TIMESPEC(&ttmp);
} else {
SUBTIMESPEC(&(firstevent->time), &now, &ttmp);
}
/* SUBTIMESPEC(&(firstevent->time), &now, &ttmp); */
tnext = TIMESPEC2USEC(&ttmp);
if (!use_apic) {
mul32div32to32(INT_MAX,1000000,1193182,max_tnext);
} else {
mul32div32to32(INT_MAX,1000,apic_clk_per_msec,max_tnext);
}
if (tnext>max_tnext) {
message("(************TIME IN THE FUTURE************)");
}
if (!use_apic) {
mul32div32to32(tnext,1193182,1000000,tnext);
pit_setconstant(0, tnext);
} else {
mul32div32to32(tnext,apic_clk_per_msec,1000,tnext);
set_APIC_timer(tnext);
}
} else {
if (!use_apic)
pit_setconstant(0, 0xFFFF);
else
set_APIC_timer(0xFFFFFFFF);
}
activeEvent = 0;
activeEvent = 0;
} else {
if (!use_apic)
pit_setconstant(0, 0xFFFF);