Fix: python: suppress -Wmissing-prototypes warning with SWIG 3.0.10
[lttng-tools.git] / extras / bindings / swig / python / lttng.i.in
index c947ce3dd499d45b4dfe37546536b9e2a9f112a4..684482e1fd2c06605e64ad2cc91e10f55887847f 100644 (file)
@@ -1,3 +1,10 @@
+/*
+ * Copyright (C) 2012 Danny Serres <danny.serres@efficios.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ */
+
 %define DOCSTRING
 "LTTNG_VERSION_STR
 
@@ -9,6 +16,7 @@ multiple concurrent processes and threads. Tracing across multiple systems is al
 %module(docstring=DOCSTRING) lttng
 
 %include "typemaps.i"
+%include "stdint.i"
 %include "pyabc.i"
 %{
 #define SWIG_FILE_WITH_INIT
@@ -21,6 +29,14 @@ multiple concurrent processes and threads. Tracing across multiple systems is al
 // This makes the typemap code useable with both Python 2 and 3.
 #define PyInt_AsSsize_t PyLong_AsSsize_t
 #endif
+
+// Avoid -Wmissing-declarations warning.
+PyObject *SWIG_init(void);
+
+// Avoid -Wmissing-prototypes warning with SWIG 3.0.10.
+#if SWIG_VERSION < 0x30012
+static size_t SWIG_strnlen(const char* s, size_t maxlen);
+#endif
 %}
 
 typedef unsigned int uint32_t;
@@ -43,6 +59,15 @@ enum lttng_domain_type {
        LTTNG_DOMAIN_UST                      = 2,
 };
 
+%rename("BUFFER_PER_PID") LTTNG_BUFFER_PER_PID;
+%rename("BUFFER_PER_UID") LTTNG_BUFFER_PER_UID;
+%rename("BUFFER_GLOBAL") LTTNG_BUFFER_GLOBAL;
+enum lttng_buffer_type {
+       LTTNG_BUFFER_PER_PID,
+       LTTNG_BUFFER_PER_UID,
+       LTTNG_BUFFER_GLOBAL,
+};
+
 %rename("EVENT_ALL") LTTNG_EVENT_ALL;
 %rename("EVENT_TRACEPOINT") LTTNG_EVENT_TRACEPOINT;
 %rename("EVENT_PROBE") LTTNG_EVENT_PROBE;
@@ -120,6 +145,15 @@ enum lttng_event_output {
 %rename("EVENT_CONTEXT_PPID") LTTNG_EVENT_CONTEXT_PPID;
 %rename("EVENT_CONTEXT_VPPID") LTTNG_EVENT_CONTEXT_VPPID;
 %rename("EVENT_CONTEXT_PTHREAD_ID") LTTNG_EVENT_CONTEXT_PTHREAD_ID;
+%rename("EVENT_CONTEXT_HOSTNAME") LTTNG_EVENT_CONTEXT_HOSTNAME;
+%rename("EVENT_CONTEXT_IP") LTTNG_EVENT_CONTEXT_IP;
+%rename("EVENT_CONTEXT_PERF_CPU_COUNTER") LTTNG_EVENT_CONTEXT_PERF_CPU_COUNTER;
+%rename("EVENT_CONTEXT_PERF_THREAD_COUNTER") LTTNG_EVENT_CONTEXT_PERF_THREAD_COUNTER;
+%rename("EVENT_CONTEXT_APP_CONTEXT") LTTNG_EVENT_CONTEXT_APP_CONTEXT;
+%rename("EVENT_CONTEXT_INTERRUPTIBLE") LTTNG_EVENT_CONTEXT_INTERRUPTIBLE;
+%rename("EVENT_CONTEXT_PREEMPTIBLE") LTTNG_EVENT_CONTEXT_PREEMPTIBLE;
+%rename("EVENT_CONTEXT_NEED_RESCHEDULE") LTTNG_EVENT_CONTEXT_NEED_RESCHEDULE;
+%rename("EVENT_CONTEXT_MIGRATABLE") LTTNG_EVENT_CONTEXT_MIGRATABLE;
 enum lttng_event_context_type {
        LTTNG_EVENT_CONTEXT_PID               = 0,
        LTTNG_EVENT_CONTEXT_PERF_COUNTER      = 1,
@@ -132,12 +166,17 @@ enum lttng_event_context_type {
        LTTNG_EVENT_CONTEXT_PPID              = 8,
        LTTNG_EVENT_CONTEXT_VPPID             = 9,
        LTTNG_EVENT_CONTEXT_PTHREAD_ID        = 10,
+       LTTNG_EVENT_CONTEXT_HOSTNAME          = 11,
+       LTTNG_EVENT_CONTEXT_IP                = 12,
+       LTTNG_EVENT_CONTEXT_PERF_CPU_COUNTER  = 13,
+       LTTNG_EVENT_CONTEXT_PERF_THREAD_COUNTER = 14,
+       LTTNG_EVENT_CONTEXT_APP_CONTEXT       = 15,
+       LTTNG_EVENT_CONTEXT_INTERRUPTIBLE     = 16,
+       LTTNG_EVENT_CONTEXT_PREEMPTIBLE       = 17,
+       LTTNG_EVENT_CONTEXT_NEED_RESCHEDULE   = 18,
+       LTTNG_EVENT_CONTEXT_MIGRATABLE        = 19,
 };
 
-%rename("CALIBRATE_FUNCTION") LTTNG_CALIBRATE_FUNCTION;
-enum lttng_calibrate_type {
-       LTTNG_CALIBRATE_FUNCTION              = 0,
-};
 
 
 
@@ -159,12 +198,10 @@ enum lttng_calibrate_type {
                        PyObject *name = PyString_FromString((*$1)[i].name);
                        PyObject *path = PyString_FromString((*$1)[i].path);
                        PyObject *enabled = PyInt_FromSize_t((*$1)[i].enabled);
-                       PyObject *padding = PyString_FromString((*$1)[i].padding);
 
                        PyTuple_SetItem(tmp, 0, name);
                        PyTuple_SetItem(tmp, 1, path);
                        PyTuple_SetItem(tmp, 2, enabled);
-                       PyTuple_SetItem(tmp, 3, padding);
                        PyList_Append(sessions, tmp);
                }
                $result = sessions;
@@ -184,18 +221,20 @@ enum lttng_calibrate_type {
                int i;
                for(i=0; i<l; i++)
                {
-                       PyObject *tmp = PyTuple_New(5);
+                       PyObject *tmp = PyTuple_New(6);
                        PyObject *type = PyInt_FromSize_t((*$1)[i].type);
+                       PyObject *buf_type = PyInt_FromSize_t((*$1)[i].buf_type);
                        PyObject *execname = PyString_FromString((*$1)[i].attr.exec_name);
                        PyObject *pid = PyInt_FromSize_t((*$1)[i].attr.pid);
                        PyObject *padding = PyString_FromString((*$1)[i].padding);
                        PyObject *attrpadding = PyString_FromString((*$1)[i].attr.padding);
 
                        PyTuple_SetItem(tmp, 0, type);
-                       PyTuple_SetItem(tmp, 1, padding);
-                       PyTuple_SetItem(tmp, 2, pid);
-                       PyTuple_SetItem(tmp, 3, execname);
-                       PyTuple_SetItem(tmp, 4, attrpadding);
+                       PyTuple_SetItem(tmp, 1, buf_type);
+                       PyTuple_SetItem(tmp, 2, padding);
+                       PyTuple_SetItem(tmp, 3, pid);
+                       PyTuple_SetItem(tmp, 4, execname);
+                       PyTuple_SetItem(tmp, 5, attrpadding);
                        PyList_Append(dom, tmp);
                }
                $result = dom;
@@ -314,6 +353,7 @@ enum lttng_calibrate_type {
 // =============================================
 
 %rename("create") lttng_create_session(const char *name, const char *path);
+%rename("create_snapshot") lttng_create_session_snapshot(const char *name, const char *snapshot_url);
 %rename("destroy") lttng_destroy_session(const char *name);
 %rename("_lttng_create_handle") lttng_create_handle(const char *session_name, struct lttng_domain *domain);
 %rename("_lttng_destroy_handle") lttng_destroy_handle(struct lttng_handle *handle);
@@ -333,7 +373,6 @@ enum lttng_calibrate_type {
 %rename("_lttng_enable_channel") lttng_enable_channel(struct lttng_handle *handle, struct lttng_channel *chan);
 %rename("_lttng_disable_event") lttng_disable_event(struct lttng_handle *handle, const char *name, const char *channel_name);
 %rename("_lttng_disable_channel") lttng_disable_channel(struct lttng_handle *handle, const char *name);
-%rename("_lttng_calibrate") lttng_calibrate(struct lttng_handle *handle, struct lttng_calibrate *calibrate);
 %rename("channel_set_default_attr") lttng_channel_set_default_attr(struct lttng_domain *domain, struct lttng_channel_attr *attr);
 
 //Redefined functions
@@ -352,7 +391,6 @@ int lttng_enable_channel(struct lttng_handle *handle, struct lttng_channel *chan
 int lttng_disable_event(struct lttng_handle *handle,
                const char *name, const char *channel_name);
 int lttng_disable_channel(struct lttng_handle *handle, const char *name);
-int lttng_calibrate(struct lttng_handle *handle, struct lttng_calibrate *calibrate);
 int lttng_register_consumer(struct lttng_handle *handle, const char *socket_path);
 int lttng_list_sessions(struct lttng_session **sessions);
 int lttng_list_domains(const char *session_name, struct lttng_domain **domains);
@@ -361,14 +399,20 @@ int lttng_list_domains(const char *session_name, struct lttng_domain **domains);
 %feature("docstring")"create(str name, str path) -> int
 
 Create a new tracing session using name and path.
-Returns size of returned session payload data or a negative error code."
+Returns 0 on success or a negative error code."
 int lttng_create_session(const char *name, const char *path);
 
+%feature("docstring")"create_snapshot(str name, str snapshot_url) -> int
+
+Create a new tracing session using name and snapshot_url in snapshot
+mode (flight recorder).
+Returns 0 on success or a negative error code."
+int lttng_create_session_snapshot(const char *name, const char *path);
 
 %feature("docstring")"destroy(str name) -> int
 
 Tear down tracing session using name.
-Returns size of returned session payload data or a negative error code."
+Returns 0 on success or a negative error code."
 int lttng_destroy_session(const char *name);
 
 
@@ -469,10 +513,11 @@ def list_domains(session_name):
        for dom_elements in dom_list:
                dom = Domain()
                dom.type = dom_elements[0]
-               dom.paddinf = dom_elements[1]
-               dom.attr.pid = dom_elements[2]
-               dom.attr.exec_name = dom_elements[3]
-               dom.attr.padding = dom_elements[4]
+               dom.buf_type = dom_elements[1]
+               dom.paddinf = dom_elements[2]
+               dom.attr.pid = dom_elements[3]
+               dom.attr.exec_name = dom_elements[4]
+               dom.attr.padding = dom_elements[5]
 
                domains.append(dom)
 
@@ -688,20 +733,6 @@ def disable_channel(handle, name):
                return _lttng_disable_channel(handle._h, name)
        except AttributeError:
                raise TypeError("in method 'disable_channel', argument 1 must be a Handle instance")
-
-
-def calibrate(handle, calibrate):
-       """
-       calibrate(Handle handle, Calibrate calibrate) -> int
-
-       Quantify LTTng overhead.
-       Returns size of returned session payload data or a negative error code.
-       """
-
-       try:
-               return _lttng_calibrate(handle._h, calibrate)
-       except AttributeError:
-               raise TypeError("in method 'calibrate', argument 1 must be a Handle instance")
 %}
 
 
@@ -768,13 +799,13 @@ class Handle:
 %rename("Domain") lttng_domain;
 %rename("EventContext") lttng_event_context;
 %rename("Event") lttng_event;
-%rename("Calibrate") lttng_calibrate;
 %rename("ChannelAttr") lttng_channel_attr;
 %rename("Channel") lttng_channel;
 %rename("Session") lttng_session;
 
 struct lttng_domain{
        enum lttng_domain_type type;
+       enum lttng_buffer_type buf_type;
        char padding[LTTNG_DOMAIN_PADDING1];
 
        union {
@@ -786,17 +817,39 @@ struct lttng_domain{
        %extend {
                char *__repr__() {
                        static char temp[256];
+                       static char domain_type[25];
+                       static char buffer_type[25];
                        switch ( $self->type ) {
                        case 1:
-                               sprintf(temp, "lttng.Domain; type(DOMAIN_KERNEL)");
+                               sprintf(domain_type, "type(DOMAIN_KERNEL)");
                                break;
                        case 2:
-                               sprintf(temp, "lttng.Domain; type(DOMAIN_UST)");
+                               sprintf(domain_type, "type(DOMAIN_UST)");
+                               break;
+                       default:
+                               sprintf(domain_type, "type(%i)", $self->type);
+                               break;
+                       }
+
+                       switch ( $self->buf_type ) {
+                       case LTTNG_BUFFER_PER_UID:
+                               sprintf(buffer_type, "buf_type(BUFFER_PER_UID)");
+                               break;
+                       case LTTNG_BUFFER_PER_PID:
+                               sprintf(buffer_type, "buf_type(BUFFER_PER_PID)");
+                               break;
+                       case LTTNG_BUFFER_GLOBAL:
+                               sprintf(buffer_type, "buf_type(BUFFER_GLOBAL)");
                                break;
                        default:
-                               sprintf(temp, "lttng.Domain; type(%i)", $self->type);
+                               sprintf(buffer_type, "buf_type(%i)", $self->buf_type);
                                break;
                        }
+
+                       sprintf(temp, "lttng.Domain; %s, %s",
+                               domain_type,
+                               buffer_type
+                               );
                        return &temp[0];
                }
        }
@@ -848,6 +901,33 @@ struct lttng_event_context {
                        case 10:
                                sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_PTHREAD_ID)");
                                break;
+                       case 11:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_HOSTNAME)");
+                               break;
+                       case 12:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_IP)");
+                               break;
+                       case 13:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_PERF_CPU_COUNTER)");
+                               break;
+                       case 14:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_PERF_THREAD_COUNTER)");
+                               break;
+                       case 15:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_APP_CONTEXT)");
+                               break;
+                       case 16:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_INTERRUPTIBLE)");
+                               break;
+                       case 17:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_PREEMPTIBLE)");
+                               break;
+                       case 18:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_NEED_RESCHEDULE)");
+                               break;
+                       case 19:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_MIGRATABLE)");
+                               break;
                        default:
                                sprintf(temp, "lttng.EventContext; type(%i)", $self->ctx);
                                break;
@@ -946,26 +1026,6 @@ struct lttng_event {
        }
 };
 
-struct lttng_calibrate {
-       enum lttng_calibrate_type type;
-       char padding[LTTNG_CALIBRATE_PADDING1];
-
-       %extend {
-               char *__repr__() {
-                       static char temp[256];
-                       switch ( $self->type ) {
-                       case 0:
-                               sprintf(temp, "lttng.Calibrate; type(CALIBRATE_FUNCTION)");
-                               break;
-                       default:
-                               sprintf(temp, "lttng.Calibrate; type(%i)", $self->type);
-                               break;
-                       }
-                       return &temp[0];
-               }
-       }
-};
-
 struct lttng_channel_attr {
        int overwrite;
        uint64_t subbuf_size;
@@ -992,8 +1052,8 @@ struct lttng_channel_attr {
                                sprintf(evout, "%i", $self->output);
                                break;
                        }
-                       sprintf(temp, "lttng.ChannelAttr; overwrite(%i), subbuf_size(%lu), "
-                               "num_subbuf(%lu), switch_timer_interval(%u), "
+                       sprintf(temp, "lttng.ChannelAttr; overwrite(%i), subbuf_size(%"PRIu64"), "
+                               "num_subbuf(%"PRIu64"), switch_timer_interval(%u), "
                                "read_timer_interval(%u), output(%s)",
                                $self->overwrite, $self->subbuf_size, $self->num_subbuf,
                                $self->switch_timer_interval, $self->read_timer_interval,
@@ -1012,7 +1072,7 @@ struct lttng_channel {
        %extend {
                char *__repr__() {
                        static char temp[512];
-                       sprintf(temp, "lttng.Channel; name('%s'), enabled(%s)",
+                       snprintf(temp, sizeof(temp), "lttng.Channel; name('%s'), enabled(%s)",
                                $self->name, $self->enabled ? "True" : "False");
                        return &temp[0];
                }
@@ -1023,12 +1083,17 @@ struct lttng_session {
        char name[NAME_MAX];
        char path[PATH_MAX];
        uint32_t enabled;
-       char padding[LTTNG_SESSION_PADDING1];
+       uint32_t snapshot_mode;
+       unsigned int live_timer_interval;
+       union {
+               char padding[LTTNG_SESSION_PADDING1];
+               void *ptr;
+       } extended;
 
        %extend {
                char *__repr__() {
-                       static char temp[512];
-                       sprintf(temp, "lttng.Session; name('%s'), path('%s'), enabled(%s)",
+                       static char temp[PATH_MAX + NAME_MAX + 512];
+                       snprintf(temp, sizeof(temp), "lttng.Session; name('%s'), path('%s'), enabled(%s)",
                                $self->name, $self->path,
                                $self->enabled ? "True" : "False");
                        return &temp[0];
This page took 0.027882 seconds and 4 git commands to generate.