Signed-off-by: Zhang Yi <yi.z.zh...@linux.intel.com> Signed-off-by: Michael S. Tsirkin <m...@redhat.com> --- include/exec/memory.h | 12 ++++++------ include/qemu/osdep.h | 9 +++++++++ 2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/include/exec/memory.h b/include/exec/memory.h index 667466b..03824d9 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -104,27 +104,27 @@ struct IOMMUNotifier { typedef struct IOMMUNotifier IOMMUNotifier; /* RAM is pre-allocated and passed into qemu_ram_alloc_from_ptr */ -#define RAM_PREALLOC (1 << 0) +#define RAM_PREALLOC ((QEMU_FORCE QemuMmapFlags) (1 << 0)) /* RAM is mmap-ed with MAP_SHARED */ -#define RAM_SHARED (1 << 1) +#define RAM_SHARED ((QEMU_FORCE QemuMmapFlags) (1 << 1)) /* Only a portion of RAM (used_length) is actually used, and migrated. * This used_length size can change across reboots. */ -#define RAM_RESIZEABLE (1 << 2) +#define RAM_RESIZEABLE ((QEMU_FORCE QemuMmapFlags) (1 << 2)) /* UFFDIO_ZEROPAGE is available on this RAMBlock to atomically * zero the page and wake waiting processes. * (Set during postcopy) */ -#define RAM_UF_ZEROPAGE (1 << 3) +#define RAM_UF_ZEROPAGE ((QEMU_FORCE QemuMmapFlags) (1 << 3)) /* RAM can be migrated */ -#define RAM_MIGRATABLE (1 << 4) +#define RAM_MIGRATABLE ((QEMU_FORCE QemuMmapFlags) (1 << 4)) /* RAM is a persistent kind memory */ -#define RAM_PMEM (1 << 5) +#define RAM_PMEM ((QEMU_FORCE QemuMmapFlags) (1 << 5)) static inline void iommu_notifier_init(IOMMUNotifier *n, IOMMUNotify fn, IOMMUNotifierFlag flags, diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 3bf48bc..457d24e 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -185,6 +185,15 @@ extern int daemon(int, int); #define ESHUTDOWN 4099 #endif +#ifdef __CHECKER__ +#define QEMU_BITWISE __attribute__((bitwise)) +#define QEMU_FORCE __attribute__((force)) +#else +#define QEMU_BITWISE +#define QEMU_FORCE +#endif + +typedef unsigned QEMU_BITWISE QemuMmapFlags; /* time_t may be either 32 or 64 bits depending on the host OS, and * can be either signed or unsigned, so we can't just hardcode a * specific maximum value. This is not a C preprocessor constant, -- 2.7.4