X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=include%2Flttng%2Fhealth-internal.hpp;h=eee164cb141d4b86ed009d52d31c8ccfa9f5508e;hb=c91ccadee5bfbc94a95540e17c879ce976caf6a2;hp=67bdc6a5eeec383b9ce7706b62c6a61d36769c9e;hpb=c9e313bc594f40a86eed237dce222c0fc99c957f;p=lttng-tools.git diff --git a/include/lttng/health-internal.hpp b/include/lttng/health-internal.hpp index 67bdc6a5e..eee164cb1 100644 --- a/include/lttng/health-internal.hpp +++ b/include/lttng/health-internal.hpp @@ -10,26 +10,28 @@ */ #include +#include + +#include + #include +#include #include #include -#include -#include -#include /* * These are the value added to the current state depending of the position in * the thread where is either waiting on a poll() or running in the code. */ -#define HEALTH_POLL_VALUE (1UL << 0) -#define HEALTH_CODE_VALUE (1UL << 1) +#define HEALTH_POLL_VALUE (1UL << 0) +#define HEALTH_CODE_VALUE (1UL << 1) -#define HEALTH_IS_IN_POLL(x) ((x) & HEALTH_POLL_VALUE) +#define HEALTH_IS_IN_POLL(x) ((x) &HEALTH_POLL_VALUE) struct health_app; enum health_flags { - HEALTH_ERROR = (1U << 0), + HEALTH_ERROR = (1U << 0), }; struct health_state { @@ -43,40 +45,39 @@ struct health_state { /* * current and flags are updated by multiple threads concurrently. */ - unsigned long current; /* progress counter, updated atomically */ - enum health_flags flags; /* other flags, updated atomically */ - int type; /* Indicates the nature of the thread. */ + unsigned long current; /* progress counter, updated atomically */ + enum health_flags flags; /* other flags, updated atomically */ + int type; /* Indicates the nature of the thread. */ /* Node of the global TLS state list. */ struct cds_list_head node; }; enum health_cmd { - HEALTH_CMD_CHECK = 0, + HEALTH_CMD_CHECK = 0, }; struct health_comm_msg { - uint32_t cmd; /* enum health_cmd */ + uint32_t cmd; /* enum health_cmd */ } LTTNG_PACKED; struct health_comm_reply { - uint64_t ret_code; /* bitmask of threads in bad health */ + uint64_t ret_code; /* bitmask of threads in bad health */ } LTTNG_PACKED; /* Declare TLS health state. */ -extern DECLARE_URCU_TLS(struct health_state, health_state); +extern thread_local struct health_state health_state; /* * Update current counter by 1 to indicate that the thread entered or left a * blocking state caused by a poll(). If the counter's value is not an even * number (meaning a code execution flow), an LTTNG_ASSERT() is raised. */ -static inline void health_poll_entry(void) +static inline void health_poll_entry() { /* Code MUST be in code execution state which is an even number. */ - LTTNG_ASSERT(!(uatomic_read(&URCU_TLS(health_state).current) - & HEALTH_POLL_VALUE)); + LTTNG_ASSERT(!(uatomic_read(&health_state.current) & HEALTH_POLL_VALUE)); - uatomic_add(&URCU_TLS(health_state).current, HEALTH_POLL_VALUE); + uatomic_add(&health_state.current, HEALTH_POLL_VALUE); } /* @@ -84,30 +85,29 @@ static inline void health_poll_entry(void) * If the counter's value is not an odd number (a poll execution), an LTTNG_ASSERT() * is raised. */ -static inline void health_poll_exit(void) +static inline void health_poll_exit() { /* Code MUST be in poll execution state which is an odd number. */ - LTTNG_ASSERT(uatomic_read(&URCU_TLS(health_state).current) - & HEALTH_POLL_VALUE); + LTTNG_ASSERT(uatomic_read(&health_state.current) & HEALTH_POLL_VALUE); - uatomic_add(&URCU_TLS(health_state).current, HEALTH_POLL_VALUE); + uatomic_add(&health_state.current, HEALTH_POLL_VALUE); } /* * Update current counter by 2 indicates progress in execution of a * thread. */ -static inline void health_code_update(void) +static inline void health_code_update() { - uatomic_add(&URCU_TLS(health_state).current, HEALTH_CODE_VALUE); + uatomic_add(&health_state.current, HEALTH_CODE_VALUE); } /* * Set health "error" flag. */ -static inline void health_error(void) +static inline void health_error() { - uatomic_or(&URCU_TLS(health_state).flags, HEALTH_ERROR); + uatomic_or(&health_state.flags, HEALTH_ERROR); } struct health_app *health_app_create(int nr_types);