| 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,112 – 1991/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)){ | |
| 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,121 – 1991/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,167 – 1991/0925/sys/src/9/pc/dma.c:163,169 | ||
| 1991/0803 | unlock(dp); xp = &dp->x[chan]; | |
| 1991/0925 | if(xp->len == 0) | |
| 1991/0803 | return; /* | |
| 1991/0803/sys/src/9/pc/dma.c:168,173 – 1991/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); | |
| 1991/0925 | xp->len = 0; | |
| 1991/0803 | } | |