Example #1
0
void local_apic_timer_init(void)
{
  local_apic_timer_calibrate(128);
  /* set periodic mode (set bit to 1) */
  local_apic->lvt_timer.timer_mode |= (1 << 0);
  /* enable timer */
  local_apic_timer_enable();

}
Example #2
0
void apic_reenable(){// TODO : sometimes cpu stop recving the interrupt interrupt
	/* 1. enable all external interrupt except timer */
	  apic_lvt_lint_t lvt_lint=local_apic->lvt_lint0;
	  lvt_lint.mask=0x0;
	  local_apic->lvt_lint0.reg = lvt_lint.reg;

	  lvt_lint=local_apic->lvt_lint1;
	  lvt_lint.mask=0x0;
	  local_apic->lvt_lint1.reg = lvt_lint.reg;

	/* 2. set the timer to the defualt frequency frequency */
	  local_apic_timer_disable();
	  local_apic_timer_ap_calibrate(TICKS_PER_SECOND); /* recevies 100 timer interrupts per sec */
	  local_apic_timer_enable();
}
Example #3
0
/********************************** ELASTIC CPU ****************************/
void apic_disable_partially(){// TODO sometimes cpu stop recving the timer interrupt

	/* 1. disable all external interrupt except timer */
	  apic_lvt_lint_t lvt_lint=local_apic->lvt_lint0;
	  lvt_lint.mask=0x1;
	  local_apic->lvt_lint0.reg = lvt_lint.reg;

	  lvt_lint=local_apic->lvt_lint1;
	  lvt_lint.mask=0x1;
	  local_apic->lvt_lint1.reg = lvt_lint.reg;

	/* 2. set the timer so that interrupts happens with very less frequency */
	  local_apic_timer_disable();
	  local_apic_timer_ap_calibrate(1);  // recevies timer interrupt 1 per second instead of 100 per second
	  local_apic_timer_enable();
}