Example #1
0
File: proc.c Project: npe9/harvey
void
tsleep(Rendez *r, int (*fn)(void*), void *arg, int32_t ms)
{
	Mach *m = machp();
	if (m->externup->tt){
		print("tsleep: timer active: mode %d, tf %#p\n",
			m->externup->tmode, m->externup->tf);
		timerdel(m->externup);
	}
	m->externup->tns = MS2NS(ms);
	m->externup->tf = twakeup;
	m->externup->tmode = Trelative;
	m->externup->ta = m->externup;
	m->externup->trend = r;
	m->externup->tfn = fn;
	timeradd(m->externup);

	if(waserror()){
		timerdel(m->externup);
		nexterror();
	}
	sleep(r, tfn, arg);
	if (m->externup->tt)
		timerdel(m->externup);
	m->externup->twhen = 0;
	poperror();
}
Example #2
0
void
tsleep(Rendez *r, int (*fn)(void*), void *arg, ulong ms)
{
	if(up->tt != nil){
		print("tsleep: timer active: mode %d, tf %#p\n", up->tmode, up->tf);
		timerdel(up);
	}
	up->tns = MS2NS(ms);
	up->tf = twakeup;
	up->tmode = Trelative;
	up->ta = up;
	up->trend = r;
	up->tfn = fn;
	timeradd(up);

	if(waserror()){
		timerdel(up);
		nexterror();
	}
	sleep(r, tfn, arg);
	if(up->tt != nil)
		timerdel(up);
	up->twhen = 0;
	poperror();
}
Example #3
0
File: proc.c Project: Shamar/harvey
void
tsleep(Rendez *r, int (*fn)(void*), void *arg, int64_t ms)
{
	Proc *up = externup();
	if (up->Timer.tt){
		print("tsleep: timer active: mode %d, tf %#p\n",
			up->Timer.tmode, up->Timer.tf);
		timerdel(&up->Timer);
	}
	up->Timer.tns = MS2NS(ms);
	up->Timer.tf = twakeup;
	up->Timer.tmode = Trelative;
	up->Timer.ta = up;
	up->trend = r;
	up->tfn = fn;
	timeradd(&up->Timer);

	if(waserror()){
		timerdel(&up->Timer);
		nexterror();
	}
	sleep(r, tfn, arg);
	if (up->Timer.tt)
		timerdel(&up->Timer);
	up->Timer.twhen = 0;
	poperror();
}