qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC v3 07/13] ram_addr.h: Make exclusive bitmap access


From: Alex Bennée
Subject: Re: [Qemu-devel] [RFC v3 07/13] ram_addr.h: Make exclusive bitmap accessors atomic
Date: Fri, 17 Jul 2015 14:32:47 +0100

Alvise Rigo <address@hidden> writes:

> Suggested-by: Jani Kokkonen <address@hidden>
> Suggested-by: Claudio Fontana <address@hidden>
> Signed-off-by: Alvise Rigo <address@hidden>
> ---
>  include/exec/ram_addr.h | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
> index 2766541..e51bd65 100644
> --- a/include/exec/ram_addr.h
> +++ b/include/exec/ram_addr.h
> @@ -255,7 +255,7 @@ uint64_t cpu_physical_memory_sync_dirty_bitmap(unsigned 
> long *dest,
>  /* Exclusive bitmap accessors. */
>  static inline void cpu_physical_memory_set_excl_dirty(ram_addr_t addr)
>  {
> -    set_bit(addr >> TARGET_PAGE_BITS,
> +    set_bit_atomic(addr >> TARGET_PAGE_BITS,
>              ram_list.dirty_memory[DIRTY_MEMORY_EXCLUSIVE]);
>  }
>  
> @@ -267,8 +267,8 @@ static inline int 
> cpu_physical_memory_excl_is_dirty(ram_addr_t addr)
>  
>  static inline void cpu_physical_memory_clear_excl_dirty(ram_addr_t addr)
>  {
> -    clear_bit(addr >> TARGET_PAGE_BITS,
> -              ram_list.dirty_memory[DIRTY_MEMORY_EXCLUSIVE]);
> +    
> bitmap_test_and_clear_atomic(ram_list.dirty_memory[DIRTY_MEMORY_EXCLUSIVE],
> +                                 addr >> TARGET_PAGE_BITS, 1);

Does this call for simply implementing a clear_bit_atomic() rather than
the fancy bitmap_test_and_clear_atomic. Looking at atomic.h it seems the
primitives you need are there.

>  }
>  
>  #endif

-- 
Alex Bennée



reply via email to

[Prev in Thread] Current Thread [Next in Thread]