File:  [Research Unix] / researchv9 / jerq / sgs / inc / sdpsrc / hi / unlock.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:22:00 2018 UTC (8 years, 3 months ago) by root
Branches: belllabs, MAIN
CVS tags: researchv9-SUN3_old, researchv9-SUN3, HEAD
researchv9-SUN3(old)

/*
 * static char ID_unlckc[] = "@(#) unlock.c: 1.1 1/7/82";
 */

unlock(itemid, permissions)
ITEMID itemid;
int    permissions;
{

	register index;

	LD_unlock++;
#if DEBUG
	if( dflag > 15 )
		fprintf( stderr, "unlock %08lx ", itemid );
#endif

	itemid &= ~BYTEMASK;

	for( index = 0; index < NUMBERFRAMES; index++ )
		if( itemid == manager[index].page_id) {
			manager[index].lock_count--;
			if( permissions == WRTN )
				manager[index].ref_chng = WRTN;
			if( manager[index].lock_count < 0 )
				return( fatal("attempt to unlock unlocked frame") );
			if( manager[index].lock_count == 0 )
				if( enlist(index, MRU) < 0 )
					return( fatal("unable to replace frame on free list") );
			return(SUCCESS);
			}

	return( fatal("attempt to unlock non-resident item") );
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.