Clean-up: sessiond: return an lttng_error_code from list_triggers
[lttng-tools.git] / src / bin / lttng-sessiond / event-notifier-error-accounting.c
index c8d1ae332a82602c9aacbc463f3f65effec3b251..e7b2def91c4b2675d7500c6c8c664e39e1339fb6 100644 (file)
@@ -381,6 +381,12 @@ struct ust_error_accounting_entry *ust_error_accounting_entry_create(
                .has_overflow = false,
        };
 
+       if (!ust_app_supports_counters(app)) {
+               DBG("Refusing to create accounting entry for application (unsupported feature): app name = '%s', app ppid = %d",
+                               app->name, (int) app->ppid);
+               goto error;
+       }
+
        entry = zmalloc(sizeof(struct ust_error_accounting_entry));
        if (!entry) {
                PERROR("Failed to allocate event notifier error acounting entry")
@@ -586,6 +592,11 @@ event_notifier_error_accounting_register_app(struct ust_app *app)
        enum event_notifier_error_accounting_status status;
        struct lttng_ust_abi_object_data **cpu_counters;
 
+       if (!ust_app_supports_counters(app)) {
+               status = EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_UNSUPPORTED;
+               goto end;
+       }
+
        /*
         * Check if we already have a error counter for the user id of this
         * app. If not, create one.
@@ -688,7 +699,7 @@ event_notifier_error_accounting_register_app(struct ust_app *app)
        app->event_notifier_group.nr_counter_cpu = entry->nr_counter_cpu_fds;
        app->event_notifier_group.counter_cpu = cpu_counters;
        cpu_counters = NULL;
-       goto end;
+       goto end_unlock;
 
 error_send_cpu_counter_data:
 error_duplicate_cpu_counter:
@@ -716,8 +727,9 @@ error_duplicate_counter:
        ust_error_accounting_entry_put(entry);
 error_creating_entry:
        app->event_notifier_group.counter = NULL;
-end:
+end_unlock:
        rcu_read_unlock();
+end:
        return status;
 }
 
@@ -915,7 +927,7 @@ event_notifier_error_accounting_kernel_clear(
        int ret;
        uint64_t error_counter_index;
        enum event_notifier_error_accounting_status status;
-       struct lttng_kernel_counter_clear counter_clear = {};
+       struct lttng_kernel_abi_counter_clear counter_clear = {};
 
        status = get_error_counter_index_for_token(&kernel_state,
                        lttng_trigger_get_tracer_token(trigger),
@@ -963,11 +975,11 @@ event_notifier_error_accounting_register_kernel(
 {
        int error_counter_fd = -1, ret;
        enum event_notifier_error_accounting_status status;
-       const struct lttng_kernel_counter_conf error_counter_conf = {
-               .arithmetic = LTTNG_KERNEL_COUNTER_ARITHMETIC_MODULAR,
+       const struct lttng_kernel_abi_counter_conf error_counter_conf = {
+               .arithmetic = LTTNG_KERNEL_ABI_COUNTER_ARITHMETIC_MODULAR,
                .bitness = sizeof(void *) == sizeof(uint32_t) ?
-                               LTTNG_KERNEL_COUNTER_BITNESS_32 :
-                               LTTNG_KERNEL_COUNTER_BITNESS_64,
+                               LTTNG_KERNEL_ABI_COUNTER_BITNESS_32 :
+                               LTTNG_KERNEL_ABI_COUNTER_BITNESS_64,
                .global_sum_step = 0,
                .number_dimensions = 1,
                .dimensions[0].size = kernel_state.number_indices,
@@ -1069,6 +1081,9 @@ event_notifier_error_accounting_register_event_notifier(
                state = &kernel_state;
                break;
        case LTTNG_DOMAIN_UST:
+       case LTTNG_DOMAIN_PYTHON:
+       case LTTNG_DOMAIN_JUL:
+       case LTTNG_DOMAIN_LOG4J:
                state = &ust_state;
                break;
        default:
@@ -1117,6 +1132,9 @@ event_notifier_error_accounting_register_event_notifier(
 #ifdef HAVE_LIBLTTNG_UST_CTL
        switch (lttng_trigger_get_underlying_domain_type_restriction(trigger)) {
        case LTTNG_DOMAIN_UST:
+       case LTTNG_DOMAIN_PYTHON:
+       case LTTNG_DOMAIN_JUL:
+       case LTTNG_DOMAIN_LOG4J:
                pthread_mutex_lock(&the_event_notifier_counter.lock);
                the_event_notifier_counter.count++;
                if (the_event_notifier_counter.count == 1) {
@@ -1145,7 +1163,7 @@ enum event_notifier_error_accounting_status
 event_notifier_error_accounting_kernel_get_count(
                const struct lttng_trigger *trigger, uint64_t *count)
 {
-       struct lttng_kernel_counter_aggregate counter_aggregate = {};
+       struct lttng_kernel_abi_counter_aggregate counter_aggregate = {};
        enum event_notifier_error_accounting_status status;
        uint64_t error_counter_index;
        int ret;
@@ -1206,6 +1224,9 @@ event_notifier_error_accounting_get_count(
                return event_notifier_error_accounting_kernel_get_count(
                                trigger, count);
        case LTTNG_DOMAIN_UST:
+       case LTTNG_DOMAIN_PYTHON:
+       case LTTNG_DOMAIN_JUL:
+       case LTTNG_DOMAIN_LOG4J:
 #ifdef HAVE_LIBLTTNG_UST_CTL
                return event_notifier_error_accounting_ust_get_count(trigger,
                                count);
@@ -1226,6 +1247,9 @@ event_notifier_error_accounting_clear(const struct lttng_trigger *trigger)
        case LTTNG_DOMAIN_KERNEL:
                return event_notifier_error_accounting_kernel_clear(trigger);
        case LTTNG_DOMAIN_UST:
+       case LTTNG_DOMAIN_PYTHON:
+       case LTTNG_DOMAIN_JUL:
+       case LTTNG_DOMAIN_LOG4J:
 #ifdef HAVE_LIBLTTNG_UST_CTL
                return event_notifier_error_accounting_ust_clear(trigger);
 #else
@@ -1269,6 +1293,9 @@ void event_notifier_error_accounting_unregister_event_notifier(
                break;
 #ifdef HAVE_LIBLTTNG_UST_CTL
        case LTTNG_DOMAIN_UST:
+       case LTTNG_DOMAIN_PYTHON:
+       case LTTNG_DOMAIN_JUL:
+       case LTTNG_DOMAIN_LOG4J:
                state = &ust_state;
 
                pthread_mutex_lock(&the_event_notifier_counter.lock);
This page took 0.025619 seconds and 4 git commands to generate.