blob: 7f97d152123d5e6d56ca506f7fbf416c22e4abb6 [file] [log] [blame]
#ifndef _BLKBACK_PAGEMAP_H_
#define _BLKBACK_PAGEMAP_H_
#include <linux/mm.h>
#include <xen/interface/xen.h>
#include <xen/interface/grant_table.h>
typedef unsigned int busid_t;
struct blkback_pagemap {
struct page *page;
domid_t domid;
busid_t busid;
grant_ref_t gref;
};
#if defined(CONFIG_XEN_BLKBACK_PAGEMAP) || defined(CONFIG_XEN_BLKBACK_PAGEMAP_MODULE)
int blkback_pagemap_init(int);
void blkback_pagemap_set(int, struct page *, domid_t, busid_t, grant_ref_t);
void blkback_pagemap_clear(struct page *);
struct blkback_pagemap blkback_pagemap_read(struct page *);
int blkback_pagemap_contains_page(struct page *page);
#else /* CONFIG_XEN_BLKBACK_PAGEMAP */
static inline int blkback_pagemap_init(int pages) { return 0; }
static inline void blkback_pagemap_set(int idx, struct page *page, domid_t dom,
busid_t bus, grant_ref_t gnt) {}
static inline void blkback_pagemap_clear(struct page *page) {}
#define blkback_pagemap_read(_page) ({ BUG(); (struct blkback_pagemap){0}; })
static inline int blkback_pagemap_contains_page(struct page *page) { return 0; }
#endif /* CONFIG_XEN_BLKBACK_PAGEMAP */
#endif