static struct object_data channel_data;
static struct object_data stream_data[MAX_NR_STREAMS];
static int event_handle[MAX_NR_EVENTS];
+static int context_handle;
static int apps_socket = -1;
static char apps_sock_path[PATH_MAX];
struct cmsghdr *cmsg;
char recv_fd[CMSG_SPACE(sizeof(int))];
struct msghdr msg = { 0 };
+ union {
+ unsigned char vc[4];
+ int vi;
+ } tmp;
+ int i;
/* Prepare to receive the structures */
iov[0].iov_base = &data_fd;
goto end;
}
/* this is our fd */
- ret = ((int *) CMSG_DATA(cmsg))[0];
+ for (i = 0; i < sizeof(int); i++)
+ tmp.vc[i] = CMSG_DATA(cmsg)[i];
+ ret = tmp.vi;
printf("received fd %d\n", ret);
end:
return ret;
printf("received event handle %u\n", event_handle[k]);
}
+ /* Attach vtid context */
+ memset(&lum, 0, sizeof(lum));
+ lum.handle = channel_data.handle;
+ lum.cmd = LTTNG_UST_CONTEXT;
+ lum.u.context.ctx = LTTNG_UST_CONTEXT_VTID;
+ //lum.u.context.ctx = LTTNG_UST_CONTEXT_PTHREAD_ID;
+ //lum.u.context.ctx = LTTNG_UST_CONTEXT_VPID;
+ //lum.u.context.ctx = LTTNG_UST_CONTEXT_PROCNAME;
+ ret = send_app_cmd(sock, &lum, &lur);
+ if (ret)
+ return ret;
+ context_handle = lur.ret_val;
+ printf("received context handle %u\n", context_handle);
+
/* Get references to channel streams */
ret = open_streams(sock, channel_data.handle,
stream_data, MAX_NR_STREAMS);
if (ret)
return ret;
+ /* Release context */
+ memset(&lum, 0, sizeof(lum));
+ lum.handle = context_handle;
+ lum.cmd = LTTNG_UST_RELEASE;
+ ret = send_app_cmd(sock, &lum, &lur);
+ if (ret)
+ return ret;
+
/* Release events */
for (k = 0; k < nr_events; k++) {
memset(&lum, 0, sizeof(lum));
const char *home_dir;
int ret, wait_shm_fd;
struct sigaction act;
- mode_t old_umask;
+ mode_t old_umask = 0;
const char *outputpath;
const char **event_names;
unsigned int nr_events;