#define MSG_NOTIF 1
#define MSG_REGISTER_NOTIF 2
-char consumer_stack[10000];
-
/* This should only be accessed by the constructor, before the creation
* of the listener, and then only by the listener.
*/
static int init_socket(void);
-int fd_notif = -1;
-void notif_cb(void)
-{
- int result;
- struct trctl_msg msg;
-
- /* FIXME: fd_notif should probably be protected by a spinlock */
-
- if(fd_notif == -1)
- return;
-
- msg.type = MSG_NOTIF;
- msg.size = sizeof(msg.type);
-
- /* FIXME: don't block here */
- result = write(fd_notif, &msg, msg.size+sizeof(msg.size));
- if(result == -1) {
- PERROR("write");
- return;
- }
-}
-
/* Ask the daemon to collect a trace called trace_name and being
* produced by this pid.
*
DBG("put_subbuf");
- channel_and_cpu = strdup_malloc(nth_token(recvbuf, 1));
+ channel_and_cpu = strdup(nth_token(recvbuf, 1));
if(channel_and_cpu == NULL) {
ERR("cannot parse channel");
retval = -1;
goto end;
}
- consumed_old_str = strdup_malloc(nth_token(recvbuf, 2));
+ consumed_old_str = strdup(nth_token(recvbuf, 2));
if(consumed_old_str == NULL) {
ERR("cannot parse consumed_old");
retval = -1;
free(reply);
}
-// else if(nth_token_is(recvbuf, "get_notifications", 0) == 1) {
-// struct ust_trace *trace;
-// char trace_name[] = "auto";
-// int i;
-// char *channel_name;
-//
-// DBG("get_notifications");
-//
-// channel_name = strdup_malloc(nth_token(recvbuf, 1));
-// if(channel_name == NULL) {
-// ERR("put_subbuf_size: cannot parse channel");
-// goto next_cmd;
-// }
-//
-// ltt_lock_traces();
-// trace = _ltt_trace_find(trace_name);
-// ltt_unlock_traces();
-//
-// if(trace == NULL) {
-// ERR("cannot find trace!");
-// return (void *)1;
-// }
-//
-// for(i=0; i<trace->nr_channels; i++) {
-// struct rchan *rchan = trace->channels[i].trans_channel_data;
-// int fd;
-//
-// if(!strcmp(trace->channels[i].channel_name, channel_name)) {
-// struct rchan_buf *rbuf = rchan->buf;
-// struct ltt_channel_buf_struct *lttbuf = trace->channels[i].buf;
-//
-// result = fd = ustcomm_app_detach_client(&ustcomm_app, src);
-// if(result == -1) {
-// ERR("ustcomm_app_detach_client failed");
-// goto next_cmd;
-// }
-//
-// lttbuf->wake_consumer_arg = (void *) fd;
-//
-// smp_wmb();
-//
-// lttbuf->call_wake_consumer = 1;
-//
-// break;
-// }
-// }
-//
-// free(channel_name);
-// }
else {
ERR("unable to parse message: %s", recvbuf);
}
int result;
result = pthread_cancel(listener_thread);
- if(result == -1) {
- PERROR("pthread_cancel");
+ if(result != 0) {
+ ERR("pthread_cancel: %s", strerror(result));
}
result = pthread_join(listener_thread, NULL);
- if(result == -1) {
- PERROR("pthread_join");
+ if(result != 0) {
+ ERR("pthread_join: %s", strerror(result));
}
}