patch-2.4.0-test6 linux/mm/highmem.c
Next file: linux/mm/memory.c
Previous file: linux/mm/filemap.c
Back to the patch index
Back to the overall index
- Lines: 91
- Date:
Mon Aug 7 21:01:36 2000
- Orig file:
v2.4.0-test5/linux/mm/highmem.c
- Orig date:
Thu Jul 27 17:38:02 2000
diff -u --recursive --new-file v2.4.0-test5/linux/mm/highmem.c linux/mm/highmem.c
@@ -22,8 +22,6 @@
#include <linux/swap.h>
#include <linux/slab.h>
-unsigned long highmem_mapnr;
-
/*
* Take one locked page, return another low-memory locked page.
*/
@@ -61,7 +59,7 @@
* we stored its data into the new regular_page.
*/
page_cache_release(page);
- new_page = mem_map + MAP_NR(regular_page);
+ new_page = virt_to_page(regular_page);
LockPage(new_page);
return new_page;
}
@@ -83,12 +81,11 @@
}
vaddr = kmap(highpage);
- copy_page((void *)vaddr, (void *)page_address(page));
+ copy_page((void *)vaddr, page_address(page));
kunmap(highpage);
- /* Preserve the caching of the swap_entry. */
- highpage->index = page->index;
- highpage->mapping = page->mapping;
+ if (page->mapping)
+ BUG();
/*
* We can just forget the old page since
@@ -119,6 +116,8 @@
{
int i;
+ flush_cache_all();
+
for (i = 0; i < LAST_PKMAP; i++) {
struct page *page;
pte_t pte;
@@ -136,7 +135,7 @@
BUG();
pte_clear(pkmap_page_table+i);
page = pte_page(pte);
- page->virtual = 0;
+ page->virtual = NULL;
}
flush_tlb_all();
}
@@ -175,17 +174,17 @@
/* Somebody else might have mapped it while we slept */
if (page->virtual)
- return page->virtual;
+ return (unsigned long) page->virtual;
/* Re-start */
goto start;
}
}
vaddr = PKMAP_ADDR(last_pkmap_nr);
- pkmap_page_table[last_pkmap_nr] = mk_pte(page, kmap_prot);
+ set_pte(&(pkmap_page_table[last_pkmap_nr]), mk_pte(page, kmap_prot));
pkmap_count[last_pkmap_nr] = 1;
- page->virtual = vaddr;
+ page->virtual = (void *) vaddr;
return vaddr;
}
@@ -201,7 +200,7 @@
* We cannot call this from interrupts, as it may block
*/
spin_lock(&kmap_lock);
- vaddr = page->virtual;
+ vaddr = (unsigned long) page->virtual;
if (!vaddr)
vaddr = map_new_virtual(page);
pkmap_count[PKMAP_NR(vaddr)]++;
@@ -217,7 +216,7 @@
unsigned long nr;
spin_lock(&kmap_lock);
- vaddr = page->virtual;
+ vaddr = (unsigned long) page->virtual;
if (!vaddr)
BUG();
nr = PKMAP_NR(vaddr);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)