X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=hello%2Fhello.c;h=0533173dee211171e320d5868eeb325240121643;hb=f99be40702e206d2cef5aa056623d7b07f21f942;hp=2e74505ce08e74290f0fa670057631a7268b48f2;hpb=9c67dc50afb2eaa1c3966ee73fac3ce55935556c;p=ust.git diff --git a/hello/hello.c b/hello/hello.c index 2e74505..0533173 100644 --- a/hello/hello.c +++ b/hello/hello.c @@ -13,94 +13,6 @@ #include "relay.h" -char consumer_stack[10000]; -char trace_name[] = "theusttrace"; -char trace_type[] = "ustrelay"; - -#define CPRINTF(fmt, args...) safe_printf(fmt "\n", ## args) - -int safe_printf(const char *fmt, ...) -{ - static char buf[500]; - va_list ap; - int n; - - va_start(ap, fmt); - - n = vsnprintf(buf, sizeof(buf), fmt, ap); - - write(STDOUT_FILENO, buf, n); - - va_end(ap); -} - -int consumer(void *arg) -{ - int result; - - int fd; - - char str[] = "Hello, this is the consumer.\n"; - - struct ltt_trace_struct *trace; - - ltt_lock_traces(); - trace = _ltt_trace_find(trace_name); - ltt_unlock_traces(); - - if(trace == NULL) { - CPRINTF("cannot find trace!"); - return 1; - } - - CPRINTF("consumer: got a trace: %s with %d channels\n", trace_name, trace->nr_channels); - - struct ltt_channel_struct *chan = &trace->channels[0]; - - CPRINTF("channel 1 (%s) active=%u", chan->channel_name, chan->active & 1); - - struct rchan *rchan = chan->trans_channel_data; - struct rchan_buf *rbuf = rchan->buf; - struct ltt_channel_buf_struct *lttbuf = chan->buf; - long consumed_old; - - result = fd = open("trace.out", O_WRONLY | O_CREAT | O_TRUNC, 00644); - if(result == -1) { - perror("open"); - return -1; - } - - for(;;) { - write(STDOUT_FILENO, str, sizeof(str)); - - result = ltt_do_get_subbuf(rbuf, lttbuf, &consumed_old); - if(result < 0) { - CPRINTF("ltt_do_get_subbuf: error: %s", strerror(-result)); - } - else { - CPRINTF("success!"); - - result = write(fd, rbuf->buf_data + (consumed_old & (2 * 4096-1)), 4096); - ltt_do_put_subbuf(rbuf, lttbuf, consumed_old); - } - - //CPRINTF("There seems to be %ld bytes available", SUBBUF_TRUNC(local_read(<tbuf->offset), rbuf->chan) - consumed_old); - CPRINTF("Commit count %ld", local_read(<tbuf->commit_count[0])); - - - sleep(1); - } -} - -void start_consumer(void) -{ - int result; - - result = clone(consumer, consumer_stack+sizeof(consumer_stack)-1, CLONE_FS | CLONE_FILES | CLONE_VM, NULL); - if(result == -1) { - perror("clone"); - } -} void probe(const struct marker *mdata, void *probe_private, void *call_private, @@ -144,68 +56,28 @@ int init_int_handler(void) int main() { int result; + int i; init_int_handler(); - init_ustrelay_transport(); - - printf("page size is %d\n", sysconf(_SC_PAGE_SIZE)); - - marker_control_init(); - - //marker_probe_register("abc", "testmark", "", probe, NULL); -//ust// marker_probe_register("metadata", "core_marker_id", "channel %s name %s event_id %hu int #1u%zu long #1u%zu pointer #1u%zu size_t #1u%zu alignment #1u%u", probe, NULL); -//ust// result = ltt_probe_register(&default_probe); -//ust// if(result) -//ust// ERR("ltt_probe_register"); - - //result = ltt_marker_connect("metadata", "testev", "default"); - //if(result) - // ERR("ltt_marker_connect"); - - - result = ltt_trace_setup(trace_name); - if(result < 0) { - ERR("ltt_trace_setup failed"); - return 1; - } - - result = ltt_trace_set_type(trace_name, trace_type); - if(result < 0) { - ERR("ltt_trace_set_type failed"); - return 1; - } - - result = ltt_trace_alloc(trace_name); - if(result < 0) { - ERR("ltt_trace_alloc failed"); - return 1; - } - - result = ltt_trace_start(trace_name); - if(result < 0) { - ERR("ltt_trace_start failed"); - return 1; - } - - start_consumer(); printf("Hello, World!\n"); sleep(1); - for(;;) { - //trace_mark(abc, testmark, "", MARK_NOARGS); - //trace_mark(metadata, testev, "", MARK_NOARGS); - trace_mark(metadata, core_marker_id, - "channel %s name %s event_id %hu " - "int #1u%zu long #1u%zu pointer #1u%zu " - "size_t #1u%zu alignment #1u%u", - "abc", "def", (unsigned short)1000, - sizeof(int), sizeof(long), sizeof(void *), - sizeof(size_t), ltt_get_alignment()); + for(i=0; i<50; i++) { + trace_mark(ust, bar, "str %s", "FOOBAZ"); + trace_mark(ust, bar2, "number1 %d number2 %d", 53, 9800); usleep(100000); } scanf("%*s"); + ltt_trace_stop("auto"); + ltt_trace_destroy("auto"); + + DBG("TRACE STOPPED"); + scanf("%*s"); + return 0; } + +MARKER_LIB