.gitignore: ignore local vscode workspace settings file
[lttng-tools.git] / extras / bindings / swig / python / lttng.i.in
index d74e08478268f6ea23ed68728753d734d1eb76b0..94198769c3e54b6bfc3be46ef168ab3eb75df0fe 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
 
@@ -22,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;
@@ -44,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;
@@ -121,6 +145,37 @@ 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;
+%rename("EVENT_CONTEXT_CALLSTACK_KERNEL") LTTNG_EVENT_CONTEXT_CALLSTACK_KERNEL;
+%rename("EVENT_CONTEXT_CALLSTACK_USER") LTTNG_EVENT_CONTEXT_CALLSTACK_USER;
+%rename("EVENT_CONTEXT_CGROUP_NS") LTTNG_EVENT_CONTEXT_CGROUP_NS;
+%rename("EVENT_CONTEXT_IPC_NS") LTTNG_EVENT_CONTEXT_IPC_NS;
+%rename("EVENT_CONTEXT_MNT_NS") LTTNG_EVENT_CONTEXT_MNT_NS;
+%rename("EVENT_CONTEXT_NET_NS") LTTNG_EVENT_CONTEXT_NET_NS;
+%rename("EVENT_CONTEXT_PID_NS") LTTNG_EVENT_CONTEXT_PID_NS;
+%rename("EVENT_CONTEXT_USER_NS") LTTNG_EVENT_CONTEXT_USER_NS;
+%rename("EVENT_CONTEXT_UTS_NS") LTTNG_EVENT_CONTEXT_UTS_NS;
+%rename("EVENT_CONTEXT_UID") LTTNG_EVENT_CONTEXT_UID;
+%rename("EVENT_CONTEXT_EUID") LTTNG_EVENT_CONTEXT_EUID;
+%rename("EVENT_CONTEXT_SUID") LTTNG_EVENT_CONTEXT_SUID;
+%rename("EVENT_CONTEXT_GID") LTTNG_EVENT_CONTEXT_GID;
+%rename("EVENT_CONTEXT_EGID") LTTNG_EVENT_CONTEXT_EGID;
+%rename("EVENT_CONTEXT_SGID") LTTNG_EVENT_CONTEXT_SGID;
+%rename("EVENT_CONTEXT_VUID") LTTNG_EVENT_CONTEXT_VUID;
+%rename("EVENT_CONTEXT_VEUID") LTTNG_EVENT_CONTEXT_VEUID;
+%rename("EVENT_CONTEXT_VSUID") LTTNG_EVENT_CONTEXT_VSUID;
+%rename("EVENT_CONTEXT_VGID") LTTNG_EVENT_CONTEXT_VGID;
+%rename("EVENT_CONTEXT_VEGID") LTTNG_EVENT_CONTEXT_VEGID;
+%rename("EVENT_CONTEXT_VSGID") LTTNG_EVENT_CONTEXT_VSGID;
+%rename("EVENT_CONTEXT_TIME_NS") LTTNG_EVENT_CONTEXT_TIME_NS;
 enum lttng_event_context_type {
        LTTNG_EVENT_CONTEXT_PID               = 0,
        LTTNG_EVENT_CONTEXT_PERF_COUNTER      = 1,
@@ -133,6 +188,37 @@ 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,
+       LTTNG_EVENT_CONTEXT_CALLSTACK_KERNEL  = 20,
+       LTTNG_EVENT_CONTEXT_CALLSTACK_USER    = 21,
+       LTTNG_EVENT_CONTEXT_CGROUP_NS         = 22,
+       LTTNG_EVENT_CONTEXT_IPC_NS            = 23,
+       LTTNG_EVENT_CONTEXT_MNT_NS            = 24,
+       LTTNG_EVENT_CONTEXT_NET_NS            = 25,
+       LTTNG_EVENT_CONTEXT_PID_NS            = 26,
+       LTTNG_EVENT_CONTEXT_USER_NS           = 27,
+       LTTNG_EVENT_CONTEXT_UTS_NS            = 28,
+       LTTNG_EVENT_CONTEXT_UID               = 29,
+       LTTNG_EVENT_CONTEXT_EUID              = 30,
+       LTTNG_EVENT_CONTEXT_SUID              = 31,
+       LTTNG_EVENT_CONTEXT_GID               = 32,
+       LTTNG_EVENT_CONTEXT_EGID              = 33,
+       LTTNG_EVENT_CONTEXT_SGID              = 34,
+       LTTNG_EVENT_CONTEXT_VUID              = 35,
+       LTTNG_EVENT_CONTEXT_VEUID             = 36,
+       LTTNG_EVENT_CONTEXT_VSUID             = 37,
+       LTTNG_EVENT_CONTEXT_VGID              = 38,
+       LTTNG_EVENT_CONTEXT_VEGID             = 39,
+       LTTNG_EVENT_CONTEXT_VSGID             = 40,
+       LTTNG_EVENT_CONTEXT_TIME_NS           = 41,
 };
 
 
@@ -156,12 +242,10 @@ enum lttng_event_context_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;
@@ -181,18 +265,20 @@ enum lttng_event_context_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;
@@ -356,20 +442,20 @@ int lttng_list_domains(const char *session_name, struct lttng_domain **domains);
 //Functions not needing redefinition
 %feature("docstring")"create(str name, str path) -> int
 
-Create a new tracing session using name and path.
+Create a new recording session using name and path.
 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
+Create a new recording 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.
+Tear down recording session using name.
 Returns 0 on success or a negative error code."
 int lttng_destroy_session(const char *name);
 
@@ -471,10 +557,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)
 
@@ -762,6 +849,7 @@ class Handle:
 
 struct lttng_domain{
        enum lttng_domain_type type;
+       enum lttng_buffer_type buf_type;
        char padding[LTTNG_DOMAIN_PADDING1];
 
        union {
@@ -773,17 +861,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];
                }
        }
@@ -835,6 +945,99 @@ 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;
+                       case 20:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_CALLSTACK_KERNEL)");
+                               break;
+                       case 21:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_CALLSTACK_USER)");
+                               break;
+                       case 22:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_CGROUP_NS)");
+                               break;
+                       case 23:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_IPC_NS)");
+                               break;
+                       case 24:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_MNT_NS)");
+                               break;
+                       case 25:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_NET_NS)");
+                               break;
+                       case 26:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_PID_NS)");
+                               break;
+                       case 27:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_USER_NS)");
+                               break;
+                       case 28:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_UTS_NS)");
+                               break;
+                       case 29:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_UID)");
+                               break;
+                       case 30:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_EUID)");
+                               break;
+                       case 31:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_SUID)");
+                               break;
+                       case 32:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_GID)");
+                               break;
+                       case 33:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_EGID)");
+                               break;
+                       case 34:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_SGID)");
+                               break;
+                       case 35:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_VUID)");
+                               break;
+                       case 36:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_VEUID)");
+                               break;
+                       case 37:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_VSUID)");
+                               break;
+                       case 38:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_VGID)");
+                               break;
+                       case 39:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_VEGID)");
+                               break;
+                       case 40:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_VSGID)");
+                               break;
+                       case 41:
+                               sprintf(temp, "lttng.EventContext; ctx(EVENT_CONTEXT_TIME_NS)");
+                               break;
                        default:
                                sprintf(temp, "lttng.EventContext; type(%i)", $self->ctx);
                                break;
@@ -990,7 +1193,12 @@ 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__() {
This page took 0.028474 seconds and 4 git commands to generate.