Fix: counter-api: always inline counter add function
[lttng-modules.git] / include / counter / counter-api.h
index f2829fc5df9840cc9670dee6b138b02351379982..fbc65818858f6128559abbfb978b0f31c4b81863 100644 (file)
 #include <linux/bitops.h>
 #include <counter/counter.h>
 #include <counter/counter-internal.h>
+#include <wrapper/limits.h>
 
 /*
  * Using unsigned arithmetic because overflow is defined.
  */
-static inline int __lttng_counter_add(const struct lib_counter_config *config,
+static __always_inline int __lttng_counter_add(const struct lib_counter_config *config,
                                       enum lib_counter_config_alloc alloc,
                                       enum lib_counter_config_sync sync,
                                       struct lib_counter *counter,
@@ -79,10 +80,12 @@ static inline int __lttng_counter_add(const struct lib_counter_config *config,
                        } while (old != res);
                        break;
                }
+               default:
+                       return -EINVAL;
                }
                if (v > 0 && (v >= U8_MAX || n < old))
                        overflow = true;
-               else if (v < 0 && (v <= -U8_MAX || n > old))
+               else if (v < 0 && (v <= -(s64) U8_MAX || n > old))
                        underflow = true;
                break;
        }
@@ -118,10 +121,12 @@ static inline int __lttng_counter_add(const struct lib_counter_config *config,
                        } while (old != res);
                        break;
                }
+               default:
+                       return -EINVAL;
                }
                if (v > 0 && (v >= U16_MAX || n < old))
                        overflow = true;
-               else if (v < 0 && (v <= -U16_MAX || n > old))
+               else if (v < 0 && (v <= -(s64) U16_MAX || n > old))
                        underflow = true;
                break;
        }
@@ -157,10 +162,12 @@ static inline int __lttng_counter_add(const struct lib_counter_config *config,
                        } while (old != res);
                        break;
                }
+               default:
+                       return -EINVAL;
                }
                if (v > 0 && (v >= U32_MAX || n < old))
                        overflow = true;
-               else if (v < 0 && (v <= -U32_MAX || n > old))
+               else if (v < 0 && (v <= -(s64) U32_MAX || n > old))
                        underflow = true;
                break;
        }
@@ -197,6 +204,8 @@ static inline int __lttng_counter_add(const struct lib_counter_config *config,
                        } while (old != res);
                        break;
                }
+               default:
+                       return -EINVAL;
                }
                if (v > 0 && n < old)
                        overflow = true;
@@ -217,7 +226,7 @@ static inline int __lttng_counter_add(const struct lib_counter_config *config,
        return 0;
 }
 
-static inline int __lttng_counter_add_percpu(const struct lib_counter_config *config,
+static __always_inline int __lttng_counter_add_percpu(const struct lib_counter_config *config,
                                     struct lib_counter *counter,
                                     const size_t *dimension_indexes, int64_t v)
 {
@@ -234,7 +243,7 @@ static inline int __lttng_counter_add_percpu(const struct lib_counter_config *co
        return 0;
 }
 
-static inline int __lttng_counter_add_global(const struct lib_counter_config *config,
+static __always_inline int __lttng_counter_add_global(const struct lib_counter_config *config,
                                     struct lib_counter *counter,
                                     const size_t *dimension_indexes, int64_t v)
 {
@@ -242,7 +251,7 @@ static inline int __lttng_counter_add_global(const struct lib_counter_config *co
                                   dimension_indexes, v, NULL);
 }
 
-static inline int lttng_counter_add(const struct lib_counter_config *config,
+static __always_inline int lttng_counter_add(const struct lib_counter_config *config,
                                    struct lib_counter *counter,
                                    const size_t *dimension_indexes, int64_t v)
 {
@@ -257,14 +266,14 @@ static inline int lttng_counter_add(const struct lib_counter_config *config,
        }
 }
 
-static inline int lttng_counter_inc(const struct lib_counter_config *config,
+static __always_inline int lttng_counter_inc(const struct lib_counter_config *config,
                                     struct lib_counter *counter,
                                     const size_t *dimension_indexes)
 {
        return lttng_counter_add(config, counter, dimension_indexes, 1);
 }
 
-static inline int lttng_counter_dec(const struct lib_counter_config *config,
+static __always_inline int lttng_counter_dec(const struct lib_counter_config *config,
                                    struct lib_counter *counter,
                                    const size_t *dimension_indexes)
 {
This page took 0.025273 seconds and 4 git commands to generate.