Fix linking warning

lttng_static_ctx should be extern in this header to avoid getting a
warning when --warn-common is used.

PS: Thanks to Yannick Brosseau for his help.

Signed-off-by: Mohamad Gebai <mohamad.gebai@polymtl.ca>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Store the callsites into the library callsite list

Fix the issue where the callsites are registered but never
properly unregistered.

[ Edit by Mathieu Desnoyers: minor coding style fix: remove parenthesis. ]

Signed-off-by: Ikaheimonen, JP <jp_ikaheimonen@mentor.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
tracepoint.c: Move add_callsite/remove_callsite further down in file

In preparation for calling disable_tracepoint() from those functions.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Add usage reference count for tracepoints

Keep track of how many libraries use a tracepoint, and disable the
tracepoint when the number of users drops to zero.

A new reference counter is added to tracepoint_entry. This keeps track
of how many callsites use that tracepoint.

When you have libraries and/or executables sharing tracepoints, you
cannot just disable your tracepoints when the library is unregistered.
You must check that the tracepoint is not used by any other libraries
before you disable it.

Function lib_disable_tracepoints becomes unnecessary, and is removed.

Signed-off-by: Ikaheimonen, JP <jp_ikaheimonen@mentor.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
gcc warning fix: -Wextra

For the "ordered comparison of pointer with integer zero" warning, fix
this by comparing (type) -1 against (type) 0 instead of just 0, so if
"type" is a pointer type, this pointer type will be applied to the right
operand too, thus fixing the warning.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fix: ust-comm recvmsg should handle partial receive

Handles cases where unix socket buffer is full. Without this fix, the
session daemon kicks out application that happen to have their
registration message split into multiple recvmsg on the sessiond side.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cleanup: fix typo

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fix: socket connect hang on heavy loads

We need to perform both connect and sending registration message before
doing the next connect otherwise we may reach unix socket connect queue
max limits and block on the 2nd connect while the session daemon is
awaiting the first connect registration message.

This happens in scenarios where unix socket connect queues are nearly
full.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Warning cleanup: add missing padding initializer

Reported-by: Marcus Tomlinson <themarcustomlinson@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Documentation cleanup: Overhaul of the lttng-gen-tp man page

Fix a couple of typos, mistakes and out-of date informations.

[Mathieu: added extra fix recommended by Daniel Thibault]

Acked-by: Yannick Brosseau <yannick.brosseau@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fix: Minor corrections to the lttng-ust man page

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fix: application SIGBUS when starting in parallel with sessiond

There is a race between application startup and sessiond startup, where
there is an intermediate state where applications can SIGBUS if they see
a zero-sized shm, if the shm has been created, but not ftruncated yet.

On the UST side, fix this by ensuring that UST can read the shared
memory file descriptor with a read() system call before they try
accessing it through a memory map (which triggers the SIGBUS if the
access goes beyond the file size).

On the sessiond side, another commit needs to ensure that the shared
memory is writeable by applications as long as its size is 0, which
allow applications to perform ftruncate and extend its size.

Fixes #623

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Add liblttng-ust-jul for JUL support

The build system creates a jar file named liblttng-ust-jul.jar to be
linked with the Java application. A public library named
liblttng-ust-jul.so is also created and must be in the library path of
the Java application in order for the LTTngAgent to use it for the
tracer's JNI call.

A unit test is also added and integrated with the "make check" command.

Signed-off-by: David Goulet <dgoulet@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fix: java library to use user define JDK at compile time

Signed-off-by: David Goulet <dgoulet@efficios.com>
Fix: check for java .class in package subfolders

Signed-off-by: Michael Jeanson <mjeanson@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fix: package of LTTngUst.h was renamed without renaming target in makefile

Signed-off-by: Michael Jeanson <mjeanson@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Define a new command LTTNG_UST_EXCLUSION

Define a new command id for attaching exclusions to enablers.
Define the structure for passing the command.

Signed-off-by: JP Ikaheimonen <jp_ikaheimonen@mentor.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Define exclusion structure for UST ABI

Define a structure for holding exception data. The last data item
is a flexible array that contains a variable number of
exclusions names.

Signed-off-by: JP Ikaheimonen <jp_ikaheimonen@mentor.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Send exclusion data through ustcomm

Define a function ustctl_set_exclusion that sends the
exclusion data through ustcomm with the LTTNG_UST_EXCLUSION
command message.

Signed-off-by: JP Ikaheimonen <jp_ikaheimonen@mentor.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Add excluders to enabler structure

Define a structure that holds excluders and can be used in lists.
Add a list holding these structures to the enabler structure.
Initialize and destroy the list when the enabler is initialized
and destroyed.

Signed-off-by: JP Ikaheimonen <jp_ikaheimonen@mentor.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>