예제 #1
0
void
tsemloop(void)
{
	int i;
	i = 0;
	while(i < nloops){
		if(tsemacquire(&x, 10)){
			if((i % 1000) == 0)
				sleep(10);
			incr++;
			i++;
			semrelease(&x, 1);
		} else {
			//print("pid %d timeout\n", getpid());
		}
	}
	exits(nil);
}
예제 #2
0
파일: sysproc.c 프로젝트: Akheon23/nix-os
long
systsemacquire(ulong *arg)
{
	long *addr;
	ulong ms;
	Segment *s;

	validaddr(arg[0], sizeof(long), 1);
	evenaddr(arg[0]);
	addr = (long*)arg[0];
	ms = arg[1];

	if((s = seg(up, (ulong)addr, 0)) == nil)
		error(Ebadarg);
	if(*addr < 0)
		error(Ebadarg);
	return tsemacquire(s, addr, ms);
}