projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Turn health.h/health.c into a library
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
health.h
diff --git
a/src/bin/lttng-sessiond/health.h
b/src/bin/lttng-sessiond/health.h
index 91a90706a77928acbcaa2fdd83bf8b958f69e7c1..82cfc87dfccb6f36797b8dc31e4a5c87bdf9cf9d 100644
(file)
--- a/
src/bin/lttng-sessiond/health.h
+++ b/
src/bin/lttng-sessiond/health.h
@@
-34,22
+34,10
@@
#define HEALTH_IS_IN_POLL(x) ((x) & HEALTH_POLL_VALUE)
#define HEALTH_IS_IN_POLL(x) ((x) & HEALTH_POLL_VALUE)
-enum health_flags {
- HEALTH_ERROR = (1U << 0),
-};
+struct health_app;
-enum health_type {
- HEALTH_TYPE_CMD = 0,
- HEALTH_TYPE_APP_MANAGE = 1,
- HEALTH_TYPE_APP_REG = 2,
- HEALTH_TYPE_KERNEL = 3,
- HEALTH_TYPE_CONSUMER = 4,
-
- HEALTH_NUM_TYPE,
-};
-
-struct health_tls_state_list {
- struct cds_list_head head;
+enum health_flags {
+ HEALTH_ERROR = (1U << 0),
};
struct health_state {
};
struct health_state {
@@
-65,7
+53,7
@@
struct health_state {
*/
unsigned long current; /* progress counter, updated atomically */
enum health_flags flags; /* other flags, updated atomically */
*/
unsigned long current; /* progress counter, updated atomically */
enum health_flags flags; /* other flags, updated atomically */
-
enum health_type type;
/* Indicates the nature of the thread. */
+
int type;
/* Indicates the nature of the thread. */
/* Node of the global TLS state list. */
struct cds_list_head node;
};
/* Node of the global TLS state list. */
struct cds_list_head node;
};
@@
-73,24
+61,31
@@
struct health_state {
/* Declare TLS health state. */
extern DECLARE_URCU_TLS(struct health_state, health_state);
/* Declare TLS health state. */
extern DECLARE_URCU_TLS(struct health_state, health_state);
-/* Health state counters for the client command thread */
-extern struct health_state health_thread_cmd;
-
-/* Health state counters for the application management thread */
-extern struct health_state health_thread_app_manage;
-
-/* Health state counters for the application registration thread */
-extern struct health_state health_thread_app_reg;
+/*
+ * 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 assert() is raised.
+ */
+static inline void health_poll_entry(void)
+{
+ /* Code MUST be in code execution state which is an even number. */
+ assert(!(uatomic_read(&URCU_TLS(health_state).current)
+ & HEALTH_POLL_VALUE));
-/* Health state counters for the kernel thread */
-extern struct health_state health_thread_kernel;
+ uatomic_add(&URCU_TLS(health_state).current, HEALTH_POLL_VALUE);
+}
/*
/*
- * Update current counter by 1 to indicate that the thread entered or
- * left a blocking state caused by a poll().
+ * Update current counter by 1 indicating the exit of a poll or blocking call.
+ * If the counter's value is not an odd number (a poll execution), an assert()
+ * is raised.
*/
*/
-static inline void health_poll_
update(struct health_state *state
)
+static inline void health_poll_
exit(void
)
{
{
+ /* Code MUST be in poll execution state which is an odd number. */
+ assert(uatomic_read(&URCU_TLS(health_state).current)
+ & HEALTH_POLL_VALUE);
+
uatomic_add(&URCU_TLS(health_state).current, HEALTH_POLL_VALUE);
}
uatomic_add(&URCU_TLS(health_state).current, HEALTH_POLL_VALUE);
}
@@
-98,7
+93,7
@@
static inline void health_poll_update(struct health_state *state)
* Update current counter by 2 indicates progress in execution of a
* thread.
*/
* Update current counter by 2 indicates progress in execution of a
* thread.
*/
-static inline void health_code_update(
struct health_state *state
)
+static inline void health_code_update(
void
)
{
uatomic_add(&URCU_TLS(health_state).current, HEALTH_CODE_VALUE);
}
{
uatomic_add(&URCU_TLS(health_state).current, HEALTH_CODE_VALUE);
}
@@
-106,13
+101,16
@@
static inline void health_code_update(struct health_state *state)
/*
* Set health "error" flag.
*/
/*
* Set health "error" flag.
*/
-static inline void health_error(
struct health_state *state
)
+static inline void health_error(
void
)
{
uatomic_or(&URCU_TLS(health_state).flags, HEALTH_ERROR);
}
{
uatomic_or(&URCU_TLS(health_state).flags, HEALTH_ERROR);
}
-int health_check_state(enum health_type type);
-void health_register(enum health_type type);
-void health_unregister(void);
+struct health_app *health_app_create(int nr_types);
+void health_app_destroy(struct health_app *ha);
+int health_check_state(struct health_app *ha, int type);
+void health_register(struct health_app *ha, int type);
+void health_unregister(struct health_app *ha);
+void health_init(struct health_app *ha);
#endif /* _HEALTH_H */
#endif /* _HEALTH_H */
This page took
0.025086 seconds
and
4
git commands to generate.