diff options
author | Nick Piggin <npiggin@suse.de> | 2006-03-22 03:08:40 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-22 10:54:02 -0500 |
commit | 7835e98b2e3c66dba79cb0ff8ebb90a2fe030c29 (patch) | |
tree | 405a96eade34845dabe2f125b6c5eb095846869d /include | |
parent | 70dc991d66cac40fdb07346dba2b5d862d732c34 (diff) |
[PATCH] remove set_page_count() outside mm/
set_page_count usage outside mm/ is limited to setting the refcount to 1.
Remove set_page_count from outside mm/, and replace those users with
init_page_count() and set_page_refcounted().
This allows more debug checking, and tighter control on how code is allowed
to play around with page->_count.
Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/mm.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h index 3d84b7a35e0d..7d8c127daad7 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -307,8 +307,6 @@ static inline int get_page_unless_zero(struct page *page) | |||
307 | return atomic_inc_not_zero(&page->_count); | 307 | return atomic_inc_not_zero(&page->_count); |
308 | } | 308 | } |
309 | 309 | ||
310 | #define set_page_count(p,v) atomic_set(&(p)->_count, (v)) | ||
311 | |||
312 | extern void FASTCALL(__page_cache_release(struct page *)); | 310 | extern void FASTCALL(__page_cache_release(struct page *)); |
313 | 311 | ||
314 | static inline int page_count(struct page *page) | 312 | static inline int page_count(struct page *page) |
@@ -325,6 +323,15 @@ static inline void get_page(struct page *page) | |||
325 | atomic_inc(&page->_count); | 323 | atomic_inc(&page->_count); |
326 | } | 324 | } |
327 | 325 | ||
326 | /* | ||
327 | * Setup the page count before being freed into the page allocator for | ||
328 | * the first time (boot or memory hotplug) | ||
329 | */ | ||
330 | static inline void init_page_count(struct page *page) | ||
331 | { | ||
332 | atomic_set(&page->_count, 1); | ||
333 | } | ||
334 | |||
328 | void put_page(struct page *page); | 335 | void put_page(struct page *page); |
329 | 336 | ||
330 | void split_page(struct page *page, unsigned int order); | 337 | void split_page(struct page *page, unsigned int order); |