Библиотека сайта rus-linux.net
The book is available and called simply "Understanding The Linux Virtual Memory Manager". There is a lot of additional material in the book that is not available here, including details on later 2.4 kernels, introductions to 2.6, a whole new chapter on the shared memory filesystem, coverage of TLB management, a lot more code commentary, countless other additions and clarifications and a CD with lots of cool stuff on it. This material (although now dated and lacking in comparison to the book) will remain available although I obviously encourge you to buy the book from your favourite book store :-) . As the book is under the Bruce Perens Open Book Series, it will be available 90 days after appearing on the book shelves which means it is not available right now. When it is available, it will be downloadable from http://www.phptr.com/perens so check there for more information.
To be fully clear, this webpage is not the actual book.
Next: 10.4 Bounce Buffers Up: 10. High Memory Management Previous: 10.2 Mapping High Memory   Contents   Index
The use of
kmap_atomic() is heavily discouraged but slots are
reserved for each CPU for when they are necessary, such as when bounce
buffers, are used by devices from interrupt. There are a varying number of
different requirements an architecture has for atomic high memory mapping
which are enumerated by
km_type. The total number of uses is
KM_TYPE_NR entries per processor are reserved at boot time for
atomic mapping at the location
FIX_KMAP_BEGIN and ending
FIX_KMAP_END. Obviously a user of an atomic kmap may not
sleep or exit before calling
kunmap_atomic() as the next process
on the processor may try to use the same entry and fail.
kmap_atomic() has the very simple task of mapping
the requested page to the slot set aside in the page tables for the requested
type of operation and processor. The function
is interesting as it will only clear the PTE with
if debugging is enabled. It is considered unnecessary to bother unmapping
atomic pages as the next call to
kmap_atomic() will simply replace
it making TLB flushes unnecessary.
Next: 10.4 Bounce Buffers Up: 10. High Memory Management Previous: 10.2 Mapping High Memory   Contents   Index Mel 2004-02-15