2 * Copyright (C) 2020 Francis Deslauriers <francis.deslauriers@efficios.com>
4 * SPDX-License-Identifier: GPL-2.0-only
8 #ifndef _EVENT_NOTIFIER_ERROR_ACCOUNTING_H
9 #define _EVENT_NOTIFIER_ERROR_ACCOUNTING_H
11 #include "ust-app.hpp"
13 #include <lttng/trigger/trigger.h>
17 enum event_notifier_error_accounting_status {
18 EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_OK,
19 EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_ERR,
20 EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_NOT_FOUND,
21 EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_NOMEM,
22 EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_NO_INDEX_AVAILABLE,
23 EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_APP_DEAD,
24 EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_UNSUPPORTED,
28 * Initialize the event notifier error accounting system.
29 * `buffer_size_kernel` and `buffer_size_ust` represent the number of buckets
30 * to be allocated for each domain.
32 enum event_notifier_error_accounting_status
33 event_notifier_error_accounting_init(uint64_t buffer_size_kernel, uint64_t buffer_size_ust);
36 * Register the kernel event notifier group.
37 * This allocates the counter object on the kernel side.
39 enum event_notifier_error_accounting_status
40 event_notifier_error_accounting_register_kernel(int kernel_event_notifier_group_fd);
42 #ifdef HAVE_LIBLTTNG_UST_CTL
45 * Register a UST application.
47 * This reuses (or creates) the counter object of the app UID.
49 enum event_notifier_error_accounting_status
50 event_notifier_error_accounting_register_app(struct ust_app *app);
53 * Unregister a UST application.
55 enum event_notifier_error_accounting_status
56 event_notifier_error_accounting_unregister_app(struct ust_app *app);
58 #else /* HAVE_LIBLTTNG_UST_CTL */
60 static inline enum event_notifier_error_accounting_status
61 event_notifier_error_accounting_register_app(struct ust_app *app __attribute__((unused)))
63 return EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_OK;
66 static inline enum event_notifier_error_accounting_status
67 event_notifier_error_accounting_unregister_app(struct ust_app *app __attribute__((unused)))
69 return EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_OK;
71 #endif /* HAVE_LIBLTTNG_UST_CTL */
74 * Allocates, reserves and returns the error counter index for that trigger.
76 enum event_notifier_error_accounting_status
77 event_notifier_error_accounting_register_event_notifier(const struct lttng_trigger *trigger,
78 uint64_t *error_counter_index);
80 enum event_notifier_error_accounting_status
81 event_notifier_error_accounting_get_count(const struct lttng_trigger *trigger, uint64_t *count);
83 void event_notifier_error_accounting_unregister_event_notifier(const struct lttng_trigger *trigger);
85 void event_notifier_error_accounting_fini();
87 #endif /* _EVENT_NOTIFIER_ERROR_ACCOUNTING_H */