| plan 9 kernel history: overview | file list | diff list |
1992/0131/port/page.c (diff list | history)
| 1992/0120/sys/src/9/port/page.c:461,467 – 1992/0131/sys/src/9/port/page.c:461,467 (short | long | prev | next) | ||
| 1991/0705 | while(ptealloclk.free == 0) { unlock(&ptealloclk); | |
| 1991/1122 |
| |
| 1992/0131 | k = kmap(newpage(1, 0, 0)); | |
| 1991/0705 | new = (Pte*)VA(k); n = (BY2PG/sizeof(Pte))-1; for(i = 0; i < n; i++) | |
| 1992/0120/sys/src/9/port/page.c:476,484 – 1992/0131/sys/src/9/port/page.c:476,484 | ||
| 1991/0705 | new = ptealloclk.free; ptealloclk.free = new->next; unlock(&ptealloclk); | |
| 1991/1122 | new->first = &new->pages[PTEPERTAB]; new->last = new->pages; | |
| 1992/0131 | ||
| 1991/0705 | return new; | |
| 1991/0606 | } | |
| 1992/0120/sys/src/9/port/page.c:491,503 – 1992/0131/sys/src/9/port/page.c:491,507 | ||
| 1991/0705 | case SG_PHYSICAL: | |
| 1991/1122 | ptop = &p->pages[PTEPERTAB]; | |
| 1991/0705 | for(pg = p->pages; pg < ptop; pg++) | |
| 1992/0131 | if(*pg) { | |
| 1991/0705 | (*s->pgfree)(*pg); | |
| 1992/0131 | *pg = 0; } | |
| 1991/0705 | break; default: | |
| 1991/1122 | for(pg = p->first; pg <= p->last; pg++) | |
| 1991/0705 |
| |
| 1992/0131 | if(*pg) { | |
| 1991/0705 | putpage(*pg); | |
| 1992/0131 | *pg = 0; } | |
| 1991/0606 | } | |
| 1991/0705 | lock(&ptealloclk); | |