SoW-2020-0002: Trace Hit Counters
[deliverable/lttng-ust.git] / include / lttng / ust-abi.h
index 10ee6d4432451d613e1e0720c71aa95cd14beb62..9821784e7a7fe436fa4491a8a705a98ad91bac0a 100644 (file)
@@ -1,32 +1,14 @@
-#ifndef _LTTNG_UST_ABI_H
-#define _LTTNG_UST_ABI_H
-
 /*
- * lttng/ust-abi.h
- *
- * LTTng-UST ABI header
- *
- * Copyright 2010-2012 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+ * SPDX-License-Identifier: MIT
  *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
+ * Copyright (C) 2010-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
+ * LTTng-UST ABI header
  */
 
+#ifndef _LTTNG_UST_ABI_H
+#define _LTTNG_UST_ABI_H
+
 #include <stdint.h>
 #include <lttng/ust-compiler.h>
 
@@ -103,6 +85,72 @@ struct lttng_ust_stream {
         */
 } LTTNG_PACKED;
 
+#define LTTNG_UST_EVENT_PADDING1       8
+#define LTTNG_UST_EVENT_PADDING2       (LTTNG_UST_SYM_NAME_LEN + 32)
+struct lttng_ust_event {
+       enum lttng_ust_instrumentation instrumentation;
+       char name[LTTNG_UST_SYM_NAME_LEN];      /* event name */
+
+       enum lttng_ust_loglevel_type loglevel_type;
+       int loglevel;   /* value, -1: all */
+       uint64_t token;                         /* User-provided token */
+       char padding[LTTNG_UST_EVENT_PADDING1];
+
+       /* Per instrumentation type configuration */
+       union {
+               char padding[LTTNG_UST_EVENT_PADDING2];
+       } u;
+} LTTNG_PACKED;
+
+#define LTTNG_UST_EVENT_NOTIFIER_PADDING       32
+struct lttng_ust_event_notifier {
+       struct lttng_ust_event event;
+       uint64_t error_counter_index;
+
+       char padding[LTTNG_UST_EVENT_NOTIFIER_PADDING];
+} LTTNG_PACKED;
+
+#define LTTNG_UST_EVENT_NOTIFIER_NOTIFICATION_PADDING 32
+struct lttng_ust_event_notifier_notification {
+       uint64_t token;
+       uint16_t capture_buf_size;
+       char padding[LTTNG_UST_EVENT_NOTIFIER_NOTIFICATION_PADDING];
+} LTTNG_PACKED;
+
+enum lttng_ust_key_token_type {
+       LTTNG_UST_KEY_TOKEN_STRING = 0,         /* arg: strtab_offset. */
+       LTTNG_UST_KEY_TOKEN_EVENT_NAME = 1,     /* no arg. */
+       LTTNG_UST_KEY_TOKEN_PROVIDER_NAME = 2,  /* no arg. */
+};
+
+#define LTTNG_UST_KEY_ARG_PADDING1             256
+#define LTTNG_UST_KEY_TOKEN_STRING_LEN_MAX     256
+struct lttng_ust_key_token {
+       uint32_t type;  /* enum lttng_ust_key_token_type */
+       union {
+               char string[LTTNG_UST_KEY_TOKEN_STRING_LEN_MAX];
+               char padding[LTTNG_UST_KEY_ARG_PADDING1];
+       } arg;
+} LTTNG_PACKED;
+
+#define LTTNG_UST_NR_KEY_TOKEN 4
+struct lttng_ust_counter_key_dimension {
+       uint32_t nr_key_tokens;
+       struct lttng_ust_key_token key_tokens[LTTNG_UST_NR_KEY_TOKEN];
+} LTTNG_PACKED;
+
+#define LTTNG_UST_COUNTER_DIMENSION_MAX 4
+struct lttng_ust_counter_key {
+       uint32_t nr_dimensions;
+       struct lttng_ust_counter_key_dimension key_dimensions[LTTNG_UST_COUNTER_DIMENSION_MAX];
+} LTTNG_PACKED;
+
+#define LTTNG_UST_COUNTER_EVENT_PADDING1       16
+struct lttng_ust_counter_event {
+       struct lttng_ust_event event;
+       struct lttng_ust_counter_key key;
+       char padding[LTTNG_UST_COUNTER_EVENT_PADDING1];
+} LTTNG_PACKED;
 
 enum lttng_ust_counter_arithmetic {
        LTTNG_UST_COUNTER_ARITHMETIC_MODULAR = 0,
@@ -122,13 +170,15 @@ struct lttng_ust_counter_dimension {
        uint8_t has_overflow;
 } LTTNG_PACKED;
 
-#define LTTNG_UST_COUNTER_DIMENSION_MAX 8
+#define LTTNG_UST_COUNTER_CONF_PADDING1        67
 struct lttng_ust_counter_conf {
        uint32_t arithmetic;    /* enum lttng_ust_counter_arithmetic */
        uint32_t bitness;       /* enum lttng_ust_counter_bitness */
        uint32_t number_dimensions;
        int64_t global_sum_step;
        struct lttng_ust_counter_dimension dimensions[LTTNG_UST_COUNTER_DIMENSION_MAX];
+       uint8_t coalesce_hits;
+       char padding[LTTNG_UST_COUNTER_CONF_PADDING1];
 } LTTNG_PACKED;
 
 struct lttng_ust_counter_value {
@@ -137,37 +187,6 @@ struct lttng_ust_counter_value {
        int64_t value;
 } LTTNG_PACKED;
 
-#define LTTNG_UST_EVENT_PADDING1       8
-#define LTTNG_UST_EVENT_PADDING2       (LTTNG_UST_SYM_NAME_LEN + 32)
-struct lttng_ust_event {
-       enum lttng_ust_instrumentation instrumentation;
-       char name[LTTNG_UST_SYM_NAME_LEN];      /* event name */
-
-       enum lttng_ust_loglevel_type loglevel_type;
-       int loglevel;   /* value, -1: all */
-       uint64_t token;                         /* User-provided token */
-       char padding[LTTNG_UST_EVENT_PADDING1];
-
-       /* Per instrumentation type configuration */
-       union {
-               char padding[LTTNG_UST_EVENT_PADDING2];
-       } u;
-} LTTNG_PACKED;
-
-#define LTTNG_UST_EVENT_NOTIFIER_PADDING       32
-struct lttng_ust_event_notifier {
-       struct lttng_ust_event event;
-       uint64_t error_counter_index;
-       char padding[LTTNG_UST_EVENT_NOTIFIER_PADDING];
-} LTTNG_PACKED;
-
-#define LTTNG_EVENT_NOTIFIER_NOTIFICATION_PADDING 32
-struct lttng_ust_event_notifier_notification {
-       uint64_t token;
-       uint16_t capture_buf_size;
-       char padding[LTTNG_EVENT_NOTIFIER_NOTIFICATION_PADDING];
-} LTTNG_PACKED;
-
 #define LTTNG_UST_COUNTER_PADDING1     (LTTNG_UST_SYM_NAME_LEN + 32)
 #define LTTNG_UST_COUNTER_DATA_MAX_LEN 4096U
 struct lttng_ust_counter {
@@ -292,6 +311,7 @@ enum lttng_ust_object_type {
        LTTNG_UST_OBJECT_TYPE_COUNTER = 6,
        LTTNG_UST_OBJECT_TYPE_COUNTER_GLOBAL = 7,
        LTTNG_UST_OBJECT_TYPE_COUNTER_CPU = 8,
+       LTTNG_UST_OBJECT_TYPE_COUNTER_EVENT = 9,
 };
 
 #define LTTNG_UST_OBJECT_DATA_PADDING1 32
@@ -434,6 +454,8 @@ struct lttng_ust_event_exclusion {
        _UST_CMDW(0xD0, struct lttng_ust_counter_global)
 #define LTTNG_UST_COUNTER_CPU                  \
        _UST_CMDW(0xD1, struct lttng_ust_counter_cpu)
+#define LTTNG_UST_COUNTER_EVENT                        \
+       _UST_CMDW(0xD2, struct lttng_ust_counter_event)
 
 #define LTTNG_UST_ROOT_HANDLE  0
 
This page took 0.025768 seconds and 5 git commands to generate.