This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / include / xen / foreign_page.h
1 /******************************************************************************
2  * foreign_page.h
3  * 
4  * Provide a "foreign" page type, that is owned by a foreign allocator and 
5  * not the normal buddy allocator in page_alloc.c
6  * 
7  * Copyright (c) 2004, K A Fraser
8  */
9
10 #ifndef __ASM_XEN_FOREIGN_PAGE_H__
11 #define __ASM_XEN_FOREIGN_PAGE_H__
12
13 #define PG_foreign              PG_arch_1
14
15 #define PageForeign(page)       test_bit(PG_foreign, &(page)->flags)
16
17 #define SetPageForeign(page, dtor) do {         \
18         set_bit(PG_foreign, &(page)->flags);    \
19         (page)->mapping = (void *)dtor;         \
20 } while (0)
21
22 #define ClearPageForeign(page) do {             \
23         clear_bit(PG_foreign, &(page)->flags);  \
24         (page)->mapping = NULL;                 \
25 } while (0)
26
27 #define PageForeignDestructor(page)     \
28         ( (void (*) (struct page *)) (page)->mapping )
29
30 #endif /* __ASM_XEN_FOREIGN_PAGE_H__ */