ping > > ping > > > > > On LLP64 platforms (like Windows) a virtual address cannot > > be represented by a "unsigned long" type, so use uintptr_t > > which is defined as a integral type large like a pointer. > > "address_delta" is a difference of pointers so use same > > type size. > > > > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > > --- > > server/memslot.c | 22 ++++++++++++---------- > > server/memslot.h | 20 ++++++++++---------- > > server/red-parse-qxl.c | 2 +- > > server/spice-qxl.h | 4 ++-- > > 4 files changed, 25 insertions(+), 23 deletions(-) > > > > diff --git a/server/memslot.c b/server/memslot.c > > index 2a1771b02..182d2b7e9 100644 > > --- a/server/memslot.c > > +++ b/server/memslot.c > > @@ -21,7 +21,7 @@ > > > > #include "memslot.h" > > > > -static unsigned long __get_clean_virt(RedMemSlotInfo *info, QXLPHYSICAL > > addr) > > +static uintptr_t __get_clean_virt(RedMemSlotInfo *info, QXLPHYSICAL addr) > > { > > return addr & info->memslot_clean_virt_mask; > > } > > @@ -37,7 +37,8 @@ static void print_memslots(RedMemSlotInfo *info) > > !info->mem_slots[i][x].virt_end_addr) { > > continue; > > } > > - printf("id %d, group %d, virt start %lx, virt end %lx, > > generation %u, delta %lx\n", > > + printf("id %d, group %d, virt start %" PRIxPTR ", virt end %" > > PRIxPTR ", generation %u," > > + " delta %" PRIxPTR "\n", > > x, i, info->mem_slots[i][x].virt_start_addr, > > info->mem_slots[i][x].virt_end_addr, > > info->mem_slots[i][x].generation, > > info->mem_slots[i][x].address_delta); > > @@ -46,7 +47,7 @@ static void print_memslots(RedMemSlotInfo *info) > > } > > > > /* return 1 if validation successfull, 0 otherwise */ > > -int memslot_validate_virt(RedMemSlotInfo *info, unsigned long virt, int > > slot_id, > > +int memslot_validate_virt(RedMemSlotInfo *info, uintptr_t virt, int > > slot_id, > > uint32_t add_size, uint32_t group_id) > > { > > MemSlot *slot; > > @@ -60,8 +61,9 @@ int memslot_validate_virt(RedMemSlotInfo *info, unsigned > > long virt, int slot_id, > > if (virt < slot->virt_start_addr || (virt + add_size) > > > slot->virt_end_addr) { > > print_memslots(info); > > spice_warning("virtual address out of range" > > - " virt=0x%lx+0x%x slot_id=%d group_id=%d\n" > > - " slot=0x%lx-0x%lx delta=0x%lx", > > + " virt=0x%" G_GINTPTR_MODIFIER "x+0x%x slot_id=%d > > group_id=%d\n" > > + " slot=0x%" G_GINTPTR_MODIFIER "x-0x%" G_GINTPTR_MODIFIER > > "x" > > + " delta=0x%" G_GINTPTR_MODIFIER "x", > > virt, add_size, slot_id, group_id, > > slot->virt_start_addr, slot->virt_end_addr, > > slot->address_delta); > > return 0; > > @@ -69,9 +71,9 @@ int memslot_validate_virt(RedMemSlotInfo *info, unsigned > > long virt, int slot_id, > > return 1; > > } > > > > -unsigned long memslot_max_size_virt(RedMemSlotInfo *info, > > - unsigned long virt, int slot_id, > > - uint32_t group_id) > > +uintptr_t memslot_max_size_virt(RedMemSlotInfo *info, > > + uintptr_t virt, int slot_id, > > + uint32_t group_id) > > { > > MemSlot *slot; > > > > @@ -91,7 +93,7 @@ void *memslot_get_virt(RedMemSlotInfo *info, QXLPHYSICAL > > addr, uint32_t add_size > > { > > int slot_id; > > int generation; > > - unsigned long h_virt; > > + uintptr_t h_virt; > > > > MemSlot *slot; > > > > @@ -171,7 +173,7 @@ void memslot_info_destroy(RedMemSlotInfo *info) > > } > > > > void memslot_info_add_slot(RedMemSlotInfo *info, uint32_t slot_group_id, > > uint32_t slot_id, > > - uint64_t addr_delta, unsigned long virt_start, > > unsigned long virt_end, > > + uint64_t addr_delta, uintptr_t virt_start, > > uintptr_t virt_end, > > uint32_t generation) > > { > > spice_assert(info->num_memslots_groups > slot_group_id); > > diff --git a/server/memslot.h b/server/memslot.h > > index 00728c4b6..45381feb9 100644 > > --- a/server/memslot.h > > +++ b/server/memslot.h > > @@ -25,9 +25,9 @@ > > > > typedef struct MemSlot { > > int generation; > > - unsigned long virt_start_addr; > > - unsigned long virt_end_addr; > > - long address_delta; > > + uintptr_t virt_start_addr; > > + uintptr_t virt_end_addr; > > + intptr_t address_delta; > > } MemSlot; > > > > typedef struct RedMemSlotInfo { > > @@ -39,8 +39,8 @@ typedef struct RedMemSlotInfo { > > uint8_t memslot_id_shift; > > uint8_t memslot_gen_shift; > > uint8_t internal_groupslot_id; > > - unsigned long memslot_gen_mask; > > - unsigned long memslot_clean_virt_mask; > > + uintptr_t memslot_gen_mask; > > + uintptr_t memslot_clean_virt_mask; > > } RedMemSlotInfo; > > > > static inline int memslot_get_id(RedMemSlotInfo *info, uint64_t addr) > > @@ -53,11 +53,11 @@ static inline int memslot_get_generation(RedMemSlotInfo > > *info, uint64_t addr) > > return (addr >> info->memslot_gen_shift) & info->memslot_gen_mask; > > } > > > > -int memslot_validate_virt(RedMemSlotInfo *info, unsigned long virt, int > > slot_id, > > +int memslot_validate_virt(RedMemSlotInfo *info, uintptr_t virt, int > > slot_id, > > uint32_t add_size, uint32_t group_id); > > -unsigned long memslot_max_size_virt(RedMemSlotInfo *info, > > - unsigned long virt, int slot_id, > > - uint32_t group_id); > > +uintptr_t memslot_max_size_virt(RedMemSlotInfo *info, > > + uintptr_t virt, int slot_id, > > + uint32_t group_id); > > void *memslot_get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t > > add_size, > > int group_id); > > > > @@ -68,7 +68,7 @@ void memslot_info_init(RedMemSlotInfo *info, > > uint8_t internal_groupslot_id); > > void memslot_info_destroy(RedMemSlotInfo *info); > > void memslot_info_add_slot(RedMemSlotInfo *info, uint32_t slot_group_id, > > uint32_t slot_id, > > - uint64_t addr_delta, unsigned long virt_start, > > unsigned long virt_end, > > + uint64_t addr_delta, uintptr_t virt_start, > > uintptr_t virt_end, > > uint32_t generation); > > void memslot_info_del_slot(RedMemSlotInfo *info, uint32_t slot_group_id, > > uint32_t slot_id); > > void memslot_info_reset(RedMemSlotInfo *info); > > diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c > > index eb2c0b538..01fd60580 100644 > > --- a/server/red-parse-qxl.c > > +++ b/server/red-parse-qxl.c > > @@ -1335,7 +1335,7 @@ static bool red_get_message(QXLInstance > > *qxl_instance, > > RedMemSlotInfo *slots, in > > { > > QXLMessage *qxl; > > int memslot_id; > > - unsigned long len; > > + uintptr_t len; > > uint8_t *end; > > > > /* > > diff --git a/server/spice-qxl.h b/server/spice-qxl.h > > index 2f47910b9..5349d9275 100644 > > --- a/server/spice-qxl.h > > +++ b/server/spice-qxl.h > > @@ -187,8 +187,8 @@ struct QXLDevMemSlot { > > uint32_t slot_group_id; > > uint32_t slot_id; > > uint32_t generation; > > - unsigned long virt_start; > > - unsigned long virt_end; > > + uintptr_t virt_start; > > + uintptr_t virt_end; > > uint64_t addr_delta; > > uint32_t qxl_ram_size; > > }; > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel