diff options
Diffstat (limited to 'linux-2.6-xen-sparse/include/asm-xen/foreign_page.h')
-rw-r--r-- | linux-2.6-xen-sparse/include/asm-xen/foreign_page.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/linux-2.6-xen-sparse/include/asm-xen/foreign_page.h b/linux-2.6-xen-sparse/include/asm-xen/foreign_page.h new file mode 100644 index 0000000000..d043bc491d --- /dev/null +++ b/linux-2.6-xen-sparse/include/asm-xen/foreign_page.h @@ -0,0 +1,30 @@ +/****************************************************************************** + * foreign_page.h + * + * Provide a "foreign" page type, that is owned by a foreign allocator and + * not the normal buddy allocator in page_alloc.c + * + * Copyright (c) 2004, K A Fraser + */ + +#ifndef __ASM_XEN_FOREIGN_PAGE_H__ +#define __ASM_XEN_FOREIGN_PAGE_H__ + +#define PG_foreign PG_arch_1 + +#define PageForeign(page) test_bit(PG_foreign, &(page)->flags) + +#define SetPageForeign(page, dtor) do { \ + set_bit(PG_foreign, &(page)->flags); \ + (page)->mapping = (void *)dtor; \ +} while (0) + +#define ClearPageForeign(page) do { \ + clear_bit(PG_foreign, &(page)->flags); \ + (page)->mapping = NULL; \ +} while (0) + +#define PageForeignDestructor(page) \ + ( (void (*) (struct page *)) (page)->mapping ) + +#endif /* __ASM_XEN_FOREIGN_PAGE_H__ */ |