X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=hello%2Fhello.c;h=102b7db258ce566daff95bc2ce540c629a75d1f8;hb=270c6b98e626861fece078f57a85462fd6cb020c;hp=1a00d45f11c85434c50839e04d323cd85a4da051;hpb=8d938dbd14e689a294f8a251e4ac255985c65ad5;p=lttng-ust.git diff --git a/hello/hello.c b/hello/hello.c index 1a00d45f..102b7db2 100644 --- a/hello/hello.c +++ b/hello/hello.c @@ -1,34 +1,19 @@ #include #include #include +#include +#include +#include +#include +#include -#include "../libmarkers/marker.h" +#include "marker.h" #include "usterr.h" #include "tracer.h" +#include "marker-control.h" +#include "relay.h" +#include "tp.h" -void probe(const struct marker *mdata, - void *probe_private, void *call_private, - const char *fmt, va_list *args) -{ - printf("In probe\n"); -} - -//ust// void try_map() -//ust// { -//ust// char *m; -//ust// -//ust// /* maybe add MAP_LOCKED */ -//ust// m = mmap(NULL, 4096, PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_POPULATE , -1, 0); -//ust// if(m == (char*)-1) { -//ust// perror("mmap"); -//ust// return; -//ust// } -//ust// -//ust// printf("The mapping is at %p.\n", m); -//ust// strcpy(m, "Hello, Mapping!"); -//ust// } - -//sig_atomic_t must_quit; void inthandler(int sig) { @@ -62,143 +47,33 @@ int init_int_handler(void) return 0; } -DEFINE_MUTEX(probes_mutex); - -static LIST_HEAD(probes_registered_list); - -int ltt_marker_connect(const char *channel, const char *mname, - const char *pname) - -{ - int ret; - struct ltt_active_marker *pdata; - struct ltt_available_probe *probe; - - ltt_lock_traces(); - mutex_lock(&probes_mutex); - probe = get_probe_from_name(pname); - if (!probe) { - ret = -ENOENT; - goto end; - } - pdata = marker_get_private_data(channel, mname, probe->probe_func, 0); - if (pdata && !IS_ERR(pdata)) { - ret = -EEXIST; - goto end; - } - pdata = kmem_cache_zalloc(markers_loaded_cachep, GFP_KERNEL); - if (!pdata) { - ret = -ENOMEM; - goto end; - } - pdata->probe = probe; - /* - * ID has priority over channel in case of conflict. - */ - ret = marker_probe_register(channel, mname, NULL, - probe->probe_func, pdata); - if (ret) - kmem_cache_free(markers_loaded_cachep, pdata); - else - list_add(&pdata->node, &markers_loaded_list); -end: - mutex_unlock(&probes_mutex); - ltt_unlock_traces(); - return ret; -} - - -int ltt_probe_register(struct ltt_available_probe *pdata) -{ - int ret = 0; - int comparison; - struct ltt_available_probe *iter; - - mutex_lock(&probes_mutex); - list_for_each_entry_reverse(iter, &probes_registered_list, node) { - comparison = strcmp(pdata->name, iter->name); - if (!comparison) { - ret = -EBUSY; - goto end; - } else if (comparison > 0) { - /* We belong to the location right after iter. */ - list_add(&pdata->node, &iter->node); - goto end; - } - } - /* Should be added at the head of the list */ - list_add(&pdata->node, &probes_registered_list); -end: - mutex_unlock(&probes_mutex); - return ret; -} - - -struct ltt_available_probe default_probe = { - .name = "default", - .format = NULL, - .probe_func = ltt_vtrace, - .callbacks[0] = ltt_serialize_data, -}; - int main() { int result; + int i; init_int_handler(); - init_ustrelay_transport(); - - printf("page size is %d\n", sysconf(_SC_PAGE_SIZE)); - - char trace_name[] = "theusttrace"; - char trace_type[] = "ustrelay"; - - marker_probe_register("abc", "testmark", "", probe, NULL); - 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); - result = ltt_probe_register(&default_probe); - if(result) - ERR("ltt_probe_register"); - - result = ltt_marker_connect("abc", "testmark2", "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; - } + printf("Hello, World!\n"); - result = ltt_trace_start(trace_name); - if(result < 0) { - ERR("ltt_trace_start failed"); - return 1; + sleep(1); + for(i=0; i<50; i++) { + trace_mark(ust, bar, "str %s", "FOOBAZ"); + trace_mark(ust, bar2, "number1 %d number2 %d", 53, 9800); + trace_hello_tptest(i); + usleep(100000); } + scanf("%*s"); - printf("Hello, World!\n"); - - for(;;) { - trace_mark(abc, testmark, "", MARK_NOARGS); - trace_mark(abc, testmark2, "", MARK_NOARGS); - sleep(1); - } + ltt_trace_stop("auto"); + ltt_trace_destroy("auto"); + DBG("TRACE STOPPED"); scanf("%*s"); return 0; } + +MARKER_LIB; +TRACEPOINT_LIB;