rem: (timer *)last->entry.next = (timer *)current->entry.next;
add: last->entry.next = current->entry.next;
context: _local_timer_cancel_event(int cpu, timer *event){	timer *last = NULL;	timer *current;	acquire_spinlock(&sTimerSpinlock[cpu]);	current = sEvents[cpu];	while (current != NULL) {		if (current == event) {			// we found it			if (current == sEvents[cpu])				sEvents[cpu] = (timer *)current->entry.next;			else				(timer *)last->entry.next = (timer *)current->entry.next;			current->entry.next = NULL;			// break out of the whole thing			break;		}		last = current;		current = (timer *)current->entry.next;	}	if (sEvents[cpu] == NULL)		arch_timer_clear_hardware_timer();	else		arch_timer_set_hardware_timer((bigtime_t)sEvents[cpu]->entry.key - system_time());	release_spinlock(&sTimerSpinlock[cpu]);	return current == event ? B_OK : B_ERROR;}