#include <linux/bitops.h>
#include <counter/counter.h>
#include <counter/counter-internal.h>
+#include <wrapper/compiler_attributes.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,
} while (old != res);
break;
}
+ default:
+ return -EINVAL;
}
if (v > 0 && (v >= U8_MAX || n < old))
overflow = true;
} while (old != res);
break;
}
+ default:
+ return -EINVAL;
}
if (v > 0 && (v >= U16_MAX || n < old))
overflow = true;
} while (old != res);
break;
}
+ default:
+ return -EINVAL;
}
if (v > 0 && (v >= U32_MAX || n < old))
overflow = true;
} while (old != res);
break;
}
+ default:
+ return -EINVAL;
}
if (v > 0 && n < old)
overflow = true;
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)
{
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)
{
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)
{
switch (config->alloc) {
- case COUNTER_ALLOC_PER_CPU: /* Fallthrough */
+ case COUNTER_ALLOC_PER_CPU:
+ lttng_fallthrough;
case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
return __lttng_counter_add_percpu(config, counter, dimension_indexes, v);
case COUNTER_ALLOC_GLOBAL:
}
}
-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)
{