SoW-2019-0002: Dynamic Snapshot
[lttng-tools.git] / extras / bindings / swig / python / lttng.i.in
index 7418d01d635c24778b55309de35aff4a4716086d..b6b6f960eba7720955611e3adbeceaa3679195e2 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
 
 %define DOCSTRING
 "LTTNG_VERSION_STR
 
@@ -22,6 +29,9 @@ 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
 // 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);
 %}
 
 typedef unsigned int uint32_t;
 %}
 
 typedef unsigned int uint32_t;
@@ -44,6 +54,15 @@ enum lttng_domain_type {
        LTTNG_DOMAIN_UST                      = 2,
 };
 
        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;
 %rename("EVENT_ALL") LTTNG_EVENT_ALL;
 %rename("EVENT_TRACEPOINT") LTTNG_EVENT_TRACEPOINT;
 %rename("EVENT_PROBE") LTTNG_EVENT_PROBE;
@@ -121,6 +140,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_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,
 enum lttng_event_context_type {
        LTTNG_EVENT_CONTEXT_PID               = 0,
        LTTNG_EVENT_CONTEXT_PERF_COUNTER      = 1,
@@ -133,6 +161,15 @@ enum lttng_event_context_type {
        LTTNG_EVENT_CONTEXT_PPID              = 8,
        LTTNG_EVENT_CONTEXT_VPPID             = 9,
        LTTNG_EVENT_CONTEXT_PTHREAD_ID        = 10,
        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,
 };
 
 
 };
 
 
@@ -179,18 +216,20 @@ enum lttng_event_context_type {
                int i;
                for(i=0; i<l; i++)
                {
                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 *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);
                        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;
                        PyList_Append(dom, tmp);
                }
                $result = dom;
@@ -469,10 +508,11 @@ def list_domains(session_name):
        for dom_elements in dom_list:
                dom = Domain()
                dom.type = dom_elements[0]
        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)
 
 
                domains.append(dom)
 
@@ -760,6 +800,7 @@ class Handle:
 
 struct lttng_domain{
        enum lttng_domain_type type;
 
 struct lttng_domain{
        enum lttng_domain_type type;
+       enum lttng_buffer_type buf_type;
        char padding[LTTNG_DOMAIN_PADDING1];
 
        union {
        char padding[LTTNG_DOMAIN_PADDING1];
 
        union {
@@ -771,17 +812,39 @@ struct lttng_domain{
        %extend {
                char *__repr__() {
                        static char temp[256];
        %extend {
                char *__repr__() {
                        static char temp[256];
+                       static char domain_type[25];
+                       static char buffer_type[25];
                        switch ( $self->type ) {
                        case 1:
                        switch ( $self->type ) {
                        case 1:
-                               sprintf(temp, "lttng.Domain; type(DOMAIN_KERNEL)");
+                               sprintf(domain_type, "type(DOMAIN_KERNEL)");
                                break;
                        case 2:
                                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:
                                break;
                        default:
-                               sprintf(temp, "lttng.Domain; type(%i)", $self->type);
+                               sprintf(buffer_type, "buf_type(%i)", $self->buf_type);
                                break;
                        }
                                break;
                        }
+
+                       sprintf(temp, "lttng.Domain; %s, %s",
+                               domain_type,
+                               buffer_type
+                               );
                        return &temp[0];
                }
        }
                        return &temp[0];
                }
        }
@@ -833,6 +896,33 @@ struct lttng_event_context {
                        case 10:
                                sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_PTHREAD_ID)");
                                break;
                        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;
                        default:
                                sprintf(temp, "lttng.EventContext; type(%i)", $self->ctx);
                                break;
This page took 0.028279 seconds and 5 git commands to generate.