UST comm ABI: Add padding, push version to 2.0
[lttng-ust.git] / include / lttng / ust-abi.h
index 8b8197731b10714543ca2948e386187f2bf36e70..f726c8b576e707a69a0cd3508f77c184d21706c4 100644 (file)
 
 #define LTTNG_UST_SYM_NAME_LEN 256
 
-#define LTTNG_UST_COMM_VERSION_MAJOR           0
-#define LTTNG_UST_COMM_VERSION_MINOR           1
+#define LTTNG_UST_COMM_VERSION_MAJOR           2
+#define LTTNG_UST_COMM_VERSION_MINOR           0
 
 enum lttng_ust_instrumentation {
        LTTNG_UST_TRACEPOINT            = 0,
        LTTNG_UST_PROBE                 = 1,
        LTTNG_UST_FUNCTION              = 2,
-       LTTNG_UST_TRACEPOINT_LOGLEVEL   = 3,
+};
+
+enum lttng_ust_loglevel_type {
+       LTTNG_UST_LOGLEVEL_ALL          = 0,
+       LTTNG_UST_LOGLEVEL_RANGE        = 1,
+       LTTNG_UST_LOGLEVEL_SINGLE       = 2,
 };
 
 enum lttng_ust_output {
@@ -42,6 +47,7 @@ struct lttng_ust_tracer_version {
        uint32_t patchlevel;
 };
 
+#define LTTNG_UST_CHANNEL_PADDING      LTTNG_UST_SYM_NAME_LEN + 32
 struct lttng_ust_channel {
        int overwrite;                          /* 1: overwrite, 0: discard */
        uint64_t subbuf_size;                   /* in bytes */
@@ -49,27 +55,32 @@ struct lttng_ust_channel {
        unsigned int switch_timer_interval;     /* usecs */
        unsigned int read_timer_interval;       /* usecs */
        enum lttng_ust_output output;           /* output mode */
-       /* The following fields are used internally within UST. */
-       int shm_fd;
-       int wait_fd;
-       uint64_t memory_map_size;
+       char padding[LTTNG_UST_CHANNEL_PADDING];
 };
 
-/*
- * This structure is only used internally within UST. It is not per-se
- * part of the communication between sessiond and UST.
- */
+#define LTTNG_UST_STREAM_PADDING1      16
+#define LTTNG_UST_STREAM_PADDING2      LTTNG_UST_SYM_NAME_LEN + 32
 struct lttng_ust_stream {
-       int shm_fd;
-       int wait_fd;
-       uint64_t memory_map_size;
+       char padding[LTTNG_UST_STREAM_PADDING1];
+
+       union {
+               char padding[LTTNG_UST_STREAM_PADDING2];
+       } u;
 };
 
+#define LTTNG_UST_EVENT_PADDING1       16
+#define LTTNG_UST_EVENT_PADDING2       LTTNG_UST_SYM_NAME_LEN + 32
 struct lttng_ust_event {
-       char name[LTTNG_UST_SYM_NAME_LEN];      /* event name */
        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 */
+       char padding[LTTNG_UST_EVENT_PADDING1];
+
        /* Per instrumentation type configuration */
        union {
+               char padding[LTTNG_UST_EVENT_PADDING2];
        } u;
 };
 
@@ -80,15 +91,21 @@ enum lttng_ust_context_type {
        LTTNG_UST_CONTEXT_PROCNAME              = 3,
 };
 
+#define LTTNG_UST_CONTEXT_PADDING1     16
+#define LTTNG_UST_CONTEXT_PADDING2     LTTNG_UST_SYM_NAME_LEN + 32
 struct lttng_ust_context {
        enum lttng_ust_context_type ctx;
+       char padding[LTTNG_UST_CONTEXT_PADDING1];
+
        union {
+               char padding[LTTNG_UST_CONTEXT_PADDING2];
        } u;
 };
 
 /*
  * Tracer channel attributes.
  */
+#define LTTNG_UST_CHANNEL_ATTR_PADDING LTTNG_UST_SYM_NAME_LEN + 32
 struct lttng_ust_channel_attr {
        int overwrite;                          /* 1: overwrite, 0: discard */
        uint64_t subbuf_size;                   /* bytes */
@@ -96,19 +113,38 @@ struct lttng_ust_channel_attr {
        unsigned int switch_timer_interval;     /* usec */
        unsigned int read_timer_interval;       /* usec */
        enum lttng_ust_output output;           /* splice, mmap */
+       char padding[LTTNG_UST_CHANNEL_ATTR_PADDING];
 };
 
+#define LTTNG_UST_TRACEPOINT_ITER_PADDING      16
 struct lttng_ust_tracepoint_iter {
        char name[LTTNG_UST_SYM_NAME_LEN];      /* provider:name */
-       char loglevel[LTTNG_UST_SYM_NAME_LEN];  /* loglevel */
-       int64_t loglevel_value;
+       int loglevel;
+       char padding[LTTNG_UST_TRACEPOINT_ITER_PADDING];
 };
 
+#define LTTNG_UST_OBJECT_DATA_PADDING          LTTNG_UST_SYM_NAME_LEN + 32
 struct lttng_ust_object_data {
        int handle;
        int shm_fd;
        int wait_fd;
        uint64_t memory_map_size;
+       char padding[LTTNG_UST_OBJECT_DATA_PADDING];
+};
+
+enum lttng_ust_calibrate_type {
+       LTTNG_UST_CALIBRATE_TRACEPOINT,
+};
+
+#define LTTNG_UST_CALIBRATE_PADDING1   16
+#define LTTNG_UST_CALIBRATE_PADDING2   LTTNG_UST_SYM_NAME_LEN + 32
+struct lttng_ust_calibrate {
+       enum lttng_ust_calibrate_type type;     /* type (input) */
+       char padding[LTTNG_UST_CALIBRATE_PADDING1];
+
+       union {
+               char padding[LTTNG_UST_CALIBRATE_PADDING2];
+       } u;
 };
 
 #define _UST_CMD(minor)                                (minor)
@@ -158,8 +194,22 @@ struct lttng_ust_object_data {
 
 struct lttng_ust_obj;
 
+union ust_args {
+       struct {
+               int *shm_fd;
+               int *wait_fd;
+               uint64_t *memory_map_size;
+       } channel;
+       struct {
+               int *shm_fd;
+               int *wait_fd;
+               uint64_t *memory_map_size;
+       } stream;
+};
+
 struct lttng_ust_objd_ops {
-       long (*cmd)(int objd, unsigned int cmd, unsigned long arg);
+       long (*cmd)(int objd, unsigned int cmd, unsigned long arg,
+               union ust_args *args);
        int (*release)(int objd);
 };
 
This page took 0.024785 seconds and 4 git commands to generate.