diff options
| author | Andrew Morton <akpm@digeo.com> | 2002-10-04 20:35:48 -0700 |
|---|---|---|
| committer | Russell King <rmk@flint.arm.linux.org.uk> | 2002-10-04 20:35:48 -0700 |
| commit | a27efcaff9ffd5ad05f4e111751da41a8820f7ab (patch) | |
| tree | cc525c035c0e53f1edaadd4a9c572a52ef702bc1 /kernel | |
| parent | 343893e647d27c96bf07e3f549b77b89aa9581ce (diff) | |
[PATCH] remove page->virtual
The patch removes page->virtual for all architectures which do not
define WANT_PAGE_VIRTUAL. Hash for it instead.
Possibly we could define WANT_PAGE_VIRTUAL for CONFIG_HIGHMEM4G, but it
seems unlikely.
A lot of the pressure went off kmap() and page_address() as a result of
the move to kmap_atomic(). That should be the preferred way to address
CPU load in the set_page_address() and page_address() hashing and
locking.
If kmap_atomic is not usable then the next best approach is for users
to cache the result of kmap() in a local rather than calling
page_address() repeatedly.
One heavy user of kmap() and page_address() is the ext2 directory code.
On a 7G Quad PIII, running four concurrent instances of
while true
do
find /usr/src/linux > /dev/null
done
on ext2 with everything cached, profiling shows that the new hashed
set_page_address() and page_address() implementations consume 0.4% and
1.3% of CPU time respectively. I think that's OK.
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/ksyms.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/ksyms.c b/kernel/ksyms.c index 4954fc80381f..56852f3be54c 100644 --- a/kernel/ksyms.c +++ b/kernel/ksyms.c @@ -132,6 +132,9 @@ EXPORT_SYMBOL(highmem_start_page); EXPORT_SYMBOL(kmap_prot); EXPORT_SYMBOL(kmap_pte); #endif +#ifdef HASHED_PAGE_VIRTUAL +EXPORT_SYMBOL(page_address); +#endif EXPORT_SYMBOL(get_user_pages); /* filesystem internal functions */ |
