plan 9 kernel history: overview | file list | diff list

1992/0914/port/taslock.c (diff list | history)

1992/0913/sys/src/9/port/taslock.c:8,311992/0914/sys/src/9/port/taslock.c:8,29 (short | long | prev | next)
1992/0222    
void 
lock(Lock *l) 
{ 
	Lock *ll = l; 
	int i; 
	ulong pc; 
 
	pc = getcallerpc(((uchar*)&l) - sizeof(l)); 
1992/0912    
	for(i = 0; i < 100000000; i++){ 
1992/0222    
    		if (tas(&ll->key) == 0){ 
1992/0914    
 
	for(i = 0; i < 10000000; i++){ 
    		if (tas(&l->key) == 0){ 
1992/0222    
			if(u) 
				u->p->hasspin = 1; 
			ll->pc = pc; 
1992/0914    
			l->pc = pc; 
1992/0222    
			return; 
		} 
	} 
	i = l->key; 
	l->key = 0; 
                 
	panic("lock loop 0x%lux key 0x%lux pc 0x%lux held by pc 0x%lux\n", l, i, 
		pc, l->pc); 
1992/0914    
	panic("lock loop 0x%lux key 0x%lux pc 0x%lux held by pc 0x%lux\n", 
			l->key, i, pc, l->pc); 
1992/0222    
} 
 
int 
1992/0913/sys/src/9/port/taslock.c:42,491992/0914/sys/src/9/port/taslock.c:40,45
1992/0222    
void 
unlock(Lock *l) 
{ 
1992/0913    
	int s; 
                 
1992/0222    
	l->pc = 0; 
	l->key = 0; 
	if(u && u->p) 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)