message: Bugfix: When the given wakeup_time in set_oneshot_timer is right now or in the past, a zero or negative relative timeout was calculated.
  This caused the timer interrupt to not fire at all or fire too late.
  We now maintain a minimum value of one tick.
diff: @@ -443,7 +443,9 @@ fn calibrate_timer() {
  pub fn set_oneshot_timer(wakeup_time: Option<usize>) {
  if let Some(wt) = wakeup_time {
  // Calculate the relative timeout from the absolute wakeup time.
  - let ticks = wt - processor::update_timer_ticks();
  + // Maintain a minimum value of one tick, otherwise the timer interrupt does not fire at all.
  + let current_time = processor::update_timer_ticks();
  + let ticks = if wt > current_time { wt - current_time } else { 1 };
  // Enable the APIC Timer and let it start by setting the initial counter value.
  local_apic_write(IA32_X2APIC_LVT_TIMER, TIMER_INTERRUPT_NUMBER as u64);
  