1 /******************************************************************************
4 * Provide a "foreign" page type, that is owned by a foreign allocator and
5 * not the normal buddy allocator in page_alloc.c
7 * Copyright (c) 2004, K A Fraser
10 #ifndef __ASM_XEN_FOREIGN_PAGE_H__
11 #define __ASM_XEN_FOREIGN_PAGE_H__
13 #define PG_foreign PG_arch_1
15 #define PageForeign(page) test_bit(PG_foreign, &(page)->flags)
17 #define SetPageForeign(page, dtor) do { \
18 set_bit(PG_foreign, &(page)->flags); \
19 (page)->mapping = (void *)dtor; \
22 #define ClearPageForeign(page) do { \
23 clear_bit(PG_foreign, &(page)->flags); \
24 (page)->mapping = NULL; \
27 #define PageForeignDestructor(page) \
28 ( (void (*) (struct page *)) (page)->mapping )
30 #endif /* __ASM_XEN_FOREIGN_PAGE_H__ */