Have some code. This patch does not fix the lttng-agent so it works with UST, but it will let you compile it with no errors.
On 11-04-08 12:37 AM, Lu, Lianhao wrote: > Hi guys, > > I met an error in compiling the lttng-agent with ust-0.12, does anyone know > with which version of ust the lttng-agent can work? Thanks! > > $./configure --enable-kernel=no enable-ust=yes > $ make > CC lttctlusttransfer.lo > lttctlusttransfer.c: In function 'flush_thread': > lttctlusttransfer.c:81: error: too few arguments to function > 'ustctl_force_switch' > lttctlusttransfer.c: In function 'ltt_ust_new_ustconsumer_network_instance': > lttctlusttransfer.c:148: warning: ignoring return value of 'asprintf', > declared with attribute warn_unused_result > make: *** [lttctlusttransfer.lo] Error 1 > > It seems the ustctl_force_switch ustctl_force_switch() in ust-0.12 requires a > second parameter (const char *trace). > > Best Regards, > > ======================== > Lianhao Lu > OTC SSG, Intel APAC R&D Ltd. > _______________________________________________ > linuxtools-dev mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/linuxtools-dev
>From c609d97e76d123a510c6c052441abda465666913 Mon Sep 17 00:00:00 2001 From: Matthew Khouzam <[email protected]> Date: Fri, 8 Apr 2011 14:59:44 -0400 Subject: [PATCH] Temporary fix to get lttng-agent to compile w/ ust. * Fix to get flush thread to compile * Started work to get write network to work. Signed-off-by: Matthew Khouzam <[email protected]> --- agent/lttctlprovider.c | 3 ++- agent/lttctlustinterface.c | 14 +++++++------- agent/lttctlusttransfer.c | 25 ++++++++++++++++--------- agent/lttctlusttransfer.h | 2 +- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/agent/lttctlprovider.c b/agent/lttctlprovider.c index 377d5f4..e756107 100644 --- a/agent/lttctlprovider.c +++ b/agent/lttctlprovider.c @@ -152,10 +152,11 @@ LTTCTLInterface* ltt_provider_iterator_prev(LTTCTLProviderIterator* it){ LTTCTLInterface* ltt_get_provider(const char * providerName){ LTTCTLProviderIterator it = ltt_get_provider_iterator(); while(ltt_provider_iterator_next(&it)) + { if(strcmp(providerName, ltt_provider_iterator_get_current(&it)->name) == 0) return ltt_provider_iterator_get_current(&it); - + } return NULL; } diff --git a/agent/lttctlustinterface.c b/agent/lttctlustinterface.c index aaf57b2..d341015 100644 --- a/agent/lttctlustinterface.c +++ b/agent/lttctlustinterface.c @@ -118,6 +118,7 @@ int ltt_ust_destroy(void) { * @return 0 if successful, else _UST_ERR_GEN */ int ltt_ust_setup_trace(int sock, const char* name) { + printf( "setup trace ( %u, %s)\n" , sock, name ) ; if (ustctl_setup_and_start(sock, name)) { _u_setle("Could not setup & start trace"); @@ -516,7 +517,7 @@ int ltt_ust_get_targets(LTTCTLStringArray* array) { * * @param target Targeted PID * @param name Trace name - * @param dest Destination path - not used yet + * @param dest Destination path - experimentally used * @param threads Number of threads - not used yet * @param append Append to existing trace - not used yet * @param fr_only 1 to only write flight recorder channel, or 0 - unused @@ -531,9 +532,10 @@ int fr_only, int n_only) { return _UST_ERR_GEN; } - char* ustd_argv [] = {NULL}; + char* ustd_argv [2] = {NULL,NULL}; char* ustd_envp [] = {NULL}; - + ustd_argv[0] = (char*)malloc( strlen(dest) + 4 ) ; + sprintf( ustd_argv[0], "-o %s" , dest) ; pid_t pid = fork(); if (pid < 0) { _u_setle("Error while forking for ustd daemon"); @@ -566,7 +568,6 @@ static void *ltt_ust_write_thread(void *arg) ustctl_get_sock_path(args->sock, &sock_path); ustctl_set_sock_path(args->sock, args->instance->sock_path); - ustconsumer_init_instance(args->instance); ustconsumer_start_instance(args->instance); @@ -603,7 +604,7 @@ int ltt_ust_write_network(const char *target, const char* b, unsigned long c, args->pid = ltt_pid_from_str(target); /* Connect to application using the pid */ args->sock = ustctl_connect_pid(args->pid); - if (args->sock) { + if ((args->sock==-1) || (args->sock == 0)) { ret = -1; goto error; } @@ -616,8 +617,7 @@ int ltt_ust_write_network(const char *target, const char* b, unsigned long c, goto free_callbacks; } pthread_detach(tid); - - ltt_start_flush_thread(args->sock); + ltt_start_flush_thread(args); return 0; diff --git a/agent/lttctlusttransfer.c b/agent/lttctlusttransfer.c index 838b3cb..642c16f 100644 --- a/agent/lttctlusttransfer.c +++ b/agent/lttctlusttransfer.c @@ -44,6 +44,14 @@ #define SOCK_DIR "/tmp/ust-app-socks" + + +struct write_thread_args { + struct ustconsumer_instance *instance; + pid_t pid; + int sock; +}; + static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; static struct LTTCTLInstanceArray instance_array = { @@ -58,12 +66,12 @@ static int flush_thread_started = 0; static pthread_mutex_t flush_thread_mutex; static unsigned long flush_period = 5000; -static void *flush_thread(void *arg) +static void *flush_thread(void* args) { struct ltt_list_node * node; - pid_t pid; - + int sock =((struct write_thread_args *) args)->sock; for(;;) { + int nodeNum = 0; useconds_t usec_period = (useconds_t)flush_period * 1000; usleep(usec_period); pthread_mutex_lock(&ust_pid_list_mutex); @@ -77,9 +85,7 @@ static void *flush_thread(void *arg) } node = ust_pid_list; while(node) { - int sock = *((int*)arg); - pid = ltt_pid_from_str(node->data); - ustctl_force_switch(sock, pid); + ustctl_force_switch(sock, node->data); node = node->next; } pthread_mutex_unlock(&ust_pid_list_mutex); @@ -88,14 +94,15 @@ static void *flush_thread(void *arg) return 0; } -void ltt_start_flush_thread(int sock) +void ltt_start_flush_thread(void* args) { int ret; pthread_t tid; - + struct write_thread_args * arg = args; + printf( "Socket data %u\n" , arg->sock); pthread_mutex_lock(&flush_thread_mutex); if(!flush_thread_started) { - ret = pthread_create(&tid, NULL, flush_thread, (void*)(&sock)); + ret = pthread_create(&tid, NULL, flush_thread, args); if(ret) { fprintf(stderr, "error creating flush thread\n"); pthread_mutex_unlock(&flush_thread_mutex); diff --git a/agent/lttctlusttransfer.h b/agent/lttctlusttransfer.h index e901ae1..6117c58 100644 --- a/agent/lttctlusttransfer.h +++ b/agent/lttctlusttransfer.h @@ -56,7 +56,7 @@ int ltt_ust_stop_ustconsumer_instance(const char* target); /** * @brief Function to start the periodical flush thread if necessary */ -void ltt_start_flush_thread(int sock); +void ltt_start_flush_thread(void* args); /** * @brief Function to set the flush period -- 1.7.0.4
_______________________________________________ linuxtools-dev mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/linuxtools-dev
