diff mbox

[v4,6/7] asm-arm/atomic.h: atomic_{inc, dec}_return: macros to inline functions

Message ID 1468565489-339-1-git-send-email-czuzu@bitdefender.com (mailing list archive)
State New, archived
Headers show

Commit Message

Corneliu ZUZU July 15, 2016, 6:51 a.m. UTC
Turn atomic_inc_return and atomic_dec_return atomic.h macros to inline
functions. Adjust README.LinuxPrimitives in the process.

Signed-off-by: Corneliu ZUZU <czuzu@bitdefender.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
---
Changed since v3:
  * update README.LinuxPrimitives file
---
 xen/arch/arm/README.LinuxPrimitives | 18 ++++++++++--------
 xen/include/asm-arm/atomic.h        | 13 ++++++++++---
 2 files changed, 20 insertions(+), 11 deletions(-)

Comments

Corneliu ZUZU July 15, 2016, 6:59 a.m. UTC | #1
On 7/15/2016 9:51 AM, Corneliu ZUZU wrote:
> Turn atomic_inc_return and atomic_dec_return atomic.h macros to inline
> functions. Adjust README.LinuxPrimitives in the process.
>
> Signed-off-by: Corneliu ZUZU <czuzu@bitdefender.com>
> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
> ---
> Changed since v3:
>    * update README.LinuxPrimitives file
> ---
>   xen/arch/arm/README.LinuxPrimitives | 18 ++++++++++--------
>   xen/include/asm-arm/atomic.h        | 13 ++++++++++---
>   2 files changed, 20 insertions(+), 11 deletions(-)
>
> diff --git a/xen/arch/arm/README.LinuxPrimitives b/xen/arch/arm/README.LinuxPrimitives
> index 2fcdfa4..efdc00c 100644
> --- a/xen/arch/arm/README.LinuxPrimitives
> +++ b/xen/arch/arm/README.LinuxPrimitives
> @@ -27,13 +27,14 @@ The following functions were taken from Linux:
>       atomic_add(), atomic_add_return(), atomic_sub(), atomic_sub_return(),
>       atomic_cmpxchg(), __atomic_add_unless()
>   
> -Also, the following macros which were in the meantime moved to asm-arm/atomic.h
> -and most of them turned to inline functions:
> -    atomic_xchg(v, new) [still macro], atomic_inc(v), atomic_dec(v),
> +Also, the following macros which were in the meantime moved to asm-arm/atomic.h:
> +    atomic_xchg(v, new), atomic_inc(v), atomic_dec(v),
>       atomic_inc_and_test(v), atomic_dec_and_test(v),
> -    atomic_inc_return(v) [still macro], atomic_dec_return(v) [still macro],
> +    atomic_inc_return(v), atomic_dec_return(v),
>       atomic_sub_and_test(i, v), atomic_add_negative(i,v)
>   
> +    * Note: all but atomic_xchg() were turned to inline functions
> +
>   ---------------------------------------------------------------------
>   
>   mem*: last sync @ v3.16-rc6 (last commit: d875c9b37240)
> @@ -106,13 +107,14 @@ The following functions were taken from Linux:
>       atomic_add(), atomic_add_return(), atomic_sub(), atomic_sub_return(),
>       atomic_cmpxchg(), __atomic_add_unless()
>   
> -Also, the following macros which were in the meantime moved to asm-arm/atomic.h
> -and most of them turned to inline functions:
> -    atomic_xchg(v, new) [still macro], atomic_inc(v), atomic_dec(v),
> +Also, the following macros which were in the meantime moved to asm-arm/atomic.h:
> +    atomic_xchg(v, new), atomic_inc(v), atomic_dec(v),
>       atomic_inc_and_test(v), atomic_dec_and_test(v),
> -    atomic_inc_return(v) [still macro], atomic_dec_return(v) [still macro],
> +    atomic_inc_return(v), atomic_dec_return(v),
>       atomic_sub_and_test(i, v), atomic_add_negative(i,v)
>   
> +	* Note: all but atomic_xchg() were turned to inline functions
> +
>   ---------------------------------------------------------------------
>   
>   mem*: last sync @ v3.16-rc6 (last commit: d98b90ea22b0)
> diff --git a/xen/include/asm-arm/atomic.h b/xen/include/asm-arm/atomic.h
> index 78dad29..c69aae6 100644
> --- a/xen/include/asm-arm/atomic.h
> +++ b/xen/include/asm-arm/atomic.h
> @@ -130,9 +130,6 @@ static inline void _atomic_set(atomic_t *v, int i)
>   # error "unknown ARM variant"
>   #endif
>   
> -#define atomic_inc_return(v)        (atomic_add_return(1, v))
> -#define atomic_dec_return(v)        (atomic_sub_return(1, v))
> -
>   static inline int atomic_sub_and_test(int i, atomic_t *v)
>   {
>       return atomic_sub_return(i, v) == 0;
> @@ -143,6 +140,11 @@ static inline void atomic_inc(atomic_t *v)
>       atomic_add(1, v);
>   }
>   
> +static inline int atomic_inc_return(atomic_t *v)
> +{
> +    return atomic_add_return(1, v);
> +}
> +
>   static inline int atomic_inc_and_test(atomic_t *v)
>   {
>       return atomic_add_return(1, v) == 0;
> @@ -153,6 +155,11 @@ static inline void atomic_dec(atomic_t *v)
>       atomic_sub(1, v);
>   }
>   
> +static inline int atomic_dec_return(atomic_t *v)
> +{
> +    return atomic_sub_return(1, v);
> +}
> +
>   static inline int atomic_dec_and_test(atomic_t *v)
>   {
>       return atomic_sub_return(1, v) == 0;

I mistakenly inserted a TAB instead of 4 spaces in 
README.LinuxPrimitives (under arm32/atomic.h):

+	* Note: all but atomic_xchg() were turned to inline functions

If there won't be a v5 only for this change, please correct that before pushing the commit.

Thanks,
Corneliu.
diff mbox

Patch

diff --git a/xen/arch/arm/README.LinuxPrimitives b/xen/arch/arm/README.LinuxPrimitives
index 2fcdfa4..efdc00c 100644
--- a/xen/arch/arm/README.LinuxPrimitives
+++ b/xen/arch/arm/README.LinuxPrimitives
@@ -27,13 +27,14 @@  The following functions were taken from Linux:
     atomic_add(), atomic_add_return(), atomic_sub(), atomic_sub_return(),
     atomic_cmpxchg(), __atomic_add_unless()
 
-Also, the following macros which were in the meantime moved to asm-arm/atomic.h
-and most of them turned to inline functions:
-    atomic_xchg(v, new) [still macro], atomic_inc(v), atomic_dec(v),
+Also, the following macros which were in the meantime moved to asm-arm/atomic.h:
+    atomic_xchg(v, new), atomic_inc(v), atomic_dec(v),
     atomic_inc_and_test(v), atomic_dec_and_test(v),
-    atomic_inc_return(v) [still macro], atomic_dec_return(v) [still macro],
+    atomic_inc_return(v), atomic_dec_return(v),
     atomic_sub_and_test(i, v), atomic_add_negative(i,v)
 
+    * Note: all but atomic_xchg() were turned to inline functions
+
 ---------------------------------------------------------------------
 
 mem*: last sync @ v3.16-rc6 (last commit: d875c9b37240)
@@ -106,13 +107,14 @@  The following functions were taken from Linux:
     atomic_add(), atomic_add_return(), atomic_sub(), atomic_sub_return(),
     atomic_cmpxchg(), __atomic_add_unless()
 
-Also, the following macros which were in the meantime moved to asm-arm/atomic.h
-and most of them turned to inline functions:
-    atomic_xchg(v, new) [still macro], atomic_inc(v), atomic_dec(v),
+Also, the following macros which were in the meantime moved to asm-arm/atomic.h:
+    atomic_xchg(v, new), atomic_inc(v), atomic_dec(v),
     atomic_inc_and_test(v), atomic_dec_and_test(v),
-    atomic_inc_return(v) [still macro], atomic_dec_return(v) [still macro],
+    atomic_inc_return(v), atomic_dec_return(v),
     atomic_sub_and_test(i, v), atomic_add_negative(i,v)
 
+	* Note: all but atomic_xchg() were turned to inline functions
+
 ---------------------------------------------------------------------
 
 mem*: last sync @ v3.16-rc6 (last commit: d98b90ea22b0)
diff --git a/xen/include/asm-arm/atomic.h b/xen/include/asm-arm/atomic.h
index 78dad29..c69aae6 100644
--- a/xen/include/asm-arm/atomic.h
+++ b/xen/include/asm-arm/atomic.h
@@ -130,9 +130,6 @@  static inline void _atomic_set(atomic_t *v, int i)
 # error "unknown ARM variant"
 #endif
 
-#define atomic_inc_return(v)        (atomic_add_return(1, v))
-#define atomic_dec_return(v)        (atomic_sub_return(1, v))
-
 static inline int atomic_sub_and_test(int i, atomic_t *v)
 {
     return atomic_sub_return(i, v) == 0;
@@ -143,6 +140,11 @@  static inline void atomic_inc(atomic_t *v)
     atomic_add(1, v);
 }
 
+static inline int atomic_inc_return(atomic_t *v)
+{
+    return atomic_add_return(1, v);
+}
+
 static inline int atomic_inc_and_test(atomic_t *v)
 {
     return atomic_add_return(1, v) == 0;
@@ -153,6 +155,11 @@  static inline void atomic_dec(atomic_t *v)
     atomic_sub(1, v);
 }
 
+static inline int atomic_dec_return(atomic_t *v)
+{
+    return atomic_sub_return(1, v);
+}
+
 static inline int atomic_dec_and_test(atomic_t *v)
 {
     return atomic_sub_return(1, v) == 0;