#include <poll.h>
#include <regex.h>
-#include <urcu.h>
+#include <urcu-bp.h>
#include "marker.h"
#include "tracer.h"
/* volatile because shared between the listener and the main thread */
volatile sig_atomic_t buffers_to_export = 0;
-//struct listener_arg {
-// int pipe_fd;
-//};
-
struct trctl_msg {
/* size: the size of all the fields except size itself */
uint32_t size;
{
#ifdef USE_CLONE
static char listener_stack[16384];
+ int result;
#else
pthread_t thread;
#endif
- if(have_listener)
+ if(have_listener) {
+ WARN("not creating listener because we already had one");
return;
+ }
#ifdef USE_CLONE
- result = clone(listener_main, listener_stack+sizeof(listener_stack)-1, CLONE_FS | CLONE_FILES | CLONE_VM | CLONE_SIGHAND | CLONE_THREAD, NULL);
+ result = clone((int (*)(void *)) listener_main, listener_stack+sizeof(listener_stack)-1, CLONE_FS | CLONE_FILES | CLONE_VM | CLONE_SIGHAND | CLONE_THREAD, NULL);
if(result == -1) {
perror("clone");
return;
}
-static void __attribute__((constructor(1000))) init()
+static void __attribute__((constructor)) init()
{
int result;
char* autoprobe_val = NULL;
{
trace_mark(ust, potential_exec, MARK_NOARGS);
+ DBG("test");
+
keepalive();
}