X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=extras%2Fbindings%2Fswig%2Fpython%2Flttng.i.in;h=780ee01b5222ee2c87f004c8e51ce513e2e6806d;hp=0d6d1e952634c0fcc5bbc1ef9045081d87bd558b;hb=dd5f427a5998f826204ac3bfc1659cd7177dc747;hpb=36907cb5a542b8eb01d95e1990894abd45e98bc0 diff --git a/extras/bindings/swig/python/lttng.i.in b/extras/bindings/swig/python/lttng.i.in index 0d6d1e952..780ee01b5 100644 --- a/extras/bindings/swig/python/lttng.i.in +++ b/extras/bindings/swig/python/lttng.i.in @@ -9,12 +9,21 @@ 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 #include %} +%{ +#if PY_MAJOR_VERSION >= 3 +// The PyInt and PyLong types were unified as of Python 3 +// This makes the typemap code useable with both Python 2 and 3. +#define PyInt_AsSsize_t PyLong_AsSsize_t +#endif +%} + typedef unsigned int uint32_t; typedef int int32_t; typedef unsigned long long uint64_t; @@ -35,6 +44,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; @@ -126,10 +144,6 @@ enum lttng_event_context_type { LTTNG_EVENT_CONTEXT_PTHREAD_ID = 10, }; -%rename("CALIBRATE_FUNCTION") LTTNG_CALIBRATE_FUNCTION; -enum lttng_calibrate_type { - LTTNG_CALIBRATE_FUNCTION = 0, -}; @@ -151,12 +165,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; @@ -176,18 +188,20 @@ enum lttng_calibrate_type { int i; for(i=0; i 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); @@ -461,10 +480,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) @@ -680,20 +700,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") %} @@ -707,7 +713,7 @@ def calibrate(handle, calibrate): %pythoncode %{ class Handle: - """ + """ Manages a handle. Takes two arguments: (str session_name, Domain domain) """ @@ -760,13 +766,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 { @@ -778,17 +784,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]; } } @@ -938,26 +966,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; @@ -984,8 +992,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, @@ -1004,7 +1012,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]; } @@ -1015,12 +1023,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];