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