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

1991/0925/pc/dma.c (diff list | history)

1991/0803/sys/src/9/pc/dma.c:106,1121991/0925/sys/src/9/pc/dma.c:106,113 (short | long | prev | next)
1991/0803    
	 */ 
	pa = ((ulong)va) & ~KZERO; 
	if(!isphys(va) || (pa&0xFFFF0000)!=((pa+len)&0xFFFF0000)){ 
		xp->pg = newpage(1, 0, 0); 
1991/0925    
		if(xp->pg == 0) 
			xp->pg = newpage(1, 0, 0); 
1991/0803    
		if(len > BY2PG) 
			len = BY2PG; 
		if(!isread) 
1991/0803/sys/src/9/pc/dma.c:115,1211991/0925/sys/src/9/pc/dma.c:116,123
1991/0803    
		xp->len = len; 
		xp->isread = isread; 
		pa = xp->pg->pa; 
	} 
1991/0925    
	} else 
		xp->len = 0; 
1991/0803    
 
	/* 
	 * this setup must be atomic 
1991/0803/sys/src/9/pc/dma.c:161,1671991/0925/sys/src/9/pc/dma.c:163,169
1991/0803    
	unlock(dp); 
 
	xp = &dp->x[chan]; 
	if(xp->pg == 0) 
1991/0925    
	if(xp->len == 0) 
1991/0803    
		return; 
 
	/* 
1991/0803/sys/src/9/pc/dma.c:168,1731991/0925/sys/src/9/pc/dma.c:170,174
1991/0803    
	 *  copy out of temporary page 
	 */ 
	memmove(xp->va, (void*)(KZERO|xp->pg->pa), xp->len); 
	putpage(xp->pg); 
	xp->pg = 0; 
1991/0925    
	xp->len = 0; 
1991/0803    
} 


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