rem: TRACE("create_timer leave\n");
context: create_timer(timer_function func, void *cookie, bigtime_t interval, uint32 flags){	cpu_status cpu;	timer_id id;		TRACE("create_timer enter\n");		if (func == 0)		return -1;		// Attention: flags are not real flags, as B_PERIODIC_TIMER is 3	cpu = disable_interrupts();	acquire_spinlock(&sTimerSpinlock);		if (sTimerCount < MAX_TIMERS) {		id = sTimerNextId;		sTimerData[sTimerCount].id = id;		sTimerData[sTimerCount].func = func;		sTimerData[sTimerCount].cookie = cookie;		sTimerData[sTimerCount].next_event = (flags == B_ONE_SHOT_ABSOLUTE_TIMER) ? interval : system_time() + interval;		sTimerData[sTimerCount].interval = interval;		sTimerData[sTimerCount].periodic = flags == B_PERIODIC_TIMER;		sTimerNextId++;		sTimerCount++;	} else {		id = -1;	}		release_spinlock(&sTimerSpinlock);	restore_interrupts(cpu);		if (id != -1)		release_sem_etc(sTimerSem, 1, B_DO_NOT_RESCHEDULE);	TRACE("create_timer leave\n");	return id;}