X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Fcounter%2Fcounter-api.h;h=fbc65818858f6128559abbfb978b0f31c4b81863;hb=6c8c025bf7552b6073c5c1884e1493badd842f42;hp=f2829fc5df9840cc9670dee6b138b02351379982;hpb=a101fa100885861be33fab3966db2c5136815724;p=lttng-modules.git diff --git a/include/counter/counter-api.h b/include/counter/counter-api.h index f2829fc5..fbc65818 100644 --- a/include/counter/counter-api.h +++ b/include/counter/counter-api.h @@ -15,11 +15,12 @@ #include #include #include +#include /* * 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) {