lttng-ust:cygwin-2.0-experimental

Last commit made on 2012-12-21
Get this branch:
git clone -b cygwin-2.0-experimental https://git.launchpad.net/lttng-ust

Branch merges

Branch information

Name:
cygwin-2.0-experimental
Repository:
lp:lttng-ust

Recent commits

2e2f5ec... by Christian Babeux <email address hidden>

Add a README.cygwin detailing Cygwin specific build/install instructions

Signed-off-by: Christian Babeux <email address hidden>
Signed-off-by: Mathieu Desnoyers <email address hidden>

fcd27aa... by Christian Babeux <email address hidden>

Cygwin: Unlink shm and wait pipe file

Signed-off-by: Christian Babeux <email address hidden>
Signed-off-by: Mathieu Desnoyers <email address hidden>

ecab630... by Christian Babeux <email address hidden>

Cygwin: Fix multiple loaded instances of liblttng-ust-tracepoint due to dlopen

Multiple instances of the liblttng-ust-tracepoint were present in memory and
caused duplication and incoherence of various data structures (such as the
tracepoints hashtable). This is due to the dlopen(3) of liblttng-ust-tracepoint
in applications that were already linked against liblttng-ust-tracepoint.

This commit introduce a new restriction on application tracing:
the applications must be linked against liblttng-ust-tracepoint.

167ff4d... by Christian Babeux <email address hidden>

Cygwin: Remove weak symbols attributes due to semantic differences

Weak symbols on Cygwin/PE platforms do not have the same semantics
as on Linux/ELF platforms [1].

The __start___tracepoints_ptrs and __stop___tracepoints_ptrs symbols
were NULL and tracepoints were not properly registered due to this
difference.

[1] - http://cygwin.com/ml/cygwin/2010-04/msg00281.html

616d309... by Christian Babeux <email address hidden>

Cygwin: Introduce new LTTNG_UST_STREAM_PIPE command to open wakeup pipe

Normally, the userspace tracer open the wakeup pipe, and the resulting
fd is passed to the consumer via the session daemon. Since we can't pass
fds via UNIX socket, the pipe need to be opened separately in the tracer
and in the consumer. The only way to open the write side of a named pipe
*before* the read side without blocking is to open it in read/write mode.
This is supported on Linux, but POSIX leave this behavior undefined [1].

The Cygwin named pipe implementation doesn't seem to allow multiple
readers/writers on a named pipe. Opening a pipe in RW mode in the tracer
and then opening the read side in the consumer won't work because the
consumer will get a "Device or ressource busy" error. Thus arise the need
to open the named pipe read side *before* the write side.

In order to accomplish this task, a new command must be introduced to signal
to the tracer that a specific named pipe should be opened in write mode.

Proper care must be taken to issue this command *after* the named pipe paths
have been sent to the consumer or else the sessiond or tracer will block
indefinitely.

[1] - man 7 fifo

42100b8... by Christian Babeux <email address hidden>

Cygwin: Generate dummy file descriptors

The consumer in LTTng-tools keeps a mapping of the file descriptors
between the sessiond and it's own file descriptors in a hash table.
The fd number is the key used for lookups in the hash table.
Since we can't send the fds to the sessiond on Cygwin, the consumer
fds mapping mechanism is broken.

To fix this, we generate a dummy file descriptor upon reception
of the file paths in the sessiond.

bf5ff35... by Christian Babeux <email address hidden>

Cygwin: Pass file paths instead of file descriptors over UNIX sockets

Cygwin doesn't support file descriptors passing over UNIX sockets [1].
LTTng-ust and LTTng-tools make extensive use of this feature to pass
the shm and the wakeup pipe file descriptor from the userspace tracer
to the session daemon. The sessiond then pass those file descriptors
to the consumer.

To workaround this limitation, we pass the file paths of the shm and the
named wakeup pipe. These paths are relayed by the sessiond to the
consumer. The consumer then needs to open these paths.

The files are created in /tmp/lttng-fds and have the following format:

SHM : ust-shm-<pid>-<uuid>
Wakeup pipe : ust-wait-<pid>-<uuid>

The libringbuffer has been modified to automatically create these files
on shm creation. Take note that the shm path is actually a symlink
to the shm in /dev/shm. Also, this change introduce an additional dependency
to libuuid in libringbuffer.

[1] - http://cygwin.com/ml/cygwin/2009-10/msg00403.html

cbd7f39... by Christian Babeux <email address hidden>

Disable build of libraries/tests that rely on the RTLD_NEXT GNU extension

The liblttng-ust-fork and liblttng-ust-libc-wrapper rely on the RTLD_NEXT
GNU extension of dlsym(3) to lookup/override symbols in libc. This extension
is not available on Cygwin. Disable building of these libraries for the
moment.

68f71a8... by Christian Babeux <email address hidden>

Missing defined(__CYGWIN__) around getprocname wrapper

c1e82f7... by Christian Babeux <email address hidden>

Typo: Conflict in lttng-context-vtid. not properly resolved

The conflict that appeared on commit d9ecffa9ad6203df66b5fa81e8d505c3a9779c16
was not properly resolved.