X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=extras%2Fbindings%2Fswig%2Fpython%2Flttng.i.in;h=b6b6f960eba7720955611e3adbeceaa3679195e2;hp=e48bf6d8e57a6e229d4ed76d62ad7f340916e586;hb=1831ae68b70dece8e9b847081526495adbbf05e5;hpb=965ef48e12ccfb55fed5c1782fb6739ce67dd323 diff --git a/extras/bindings/swig/python/lttng.i.in b/extras/bindings/swig/python/lttng.i.in index e48bf6d8e..b6b6f960e 100644 --- a/extras/bindings/swig/python/lttng.i.in +++ b/extras/bindings/swig/python/lttng.i.in @@ -1,3 +1,10 @@ +/* + * Copyright (C) 2012 Danny Serres + * + * SPDX-License-Identifier: GPL-2.0-only + * + */ + %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 + +// Avoid -Wmissing-declarations warning. +PyObject *SWIG_init(void); %} typedef unsigned int uint32_t; @@ -44,6 +54,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 +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_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, @@ -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_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, }; @@ -156,12 +193,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 +216,20 @@ enum lttng_event_context_type { int i; for(i=0; itype ) { 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 +896,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; @@ -979,7 +1067,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]; } @@ -990,12 +1078,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];