From: Mathieu Desnoyers Date: Wed, 30 Nov 2011 23:15:21 +0000 (-0500) Subject: Remove loglevel iter (will be performed by tracepoint iteration) X-Git-Tag: v1.9.1~43 X-Git-Url: https://git.lttng.org/?a=commitdiff_plain;h=20d630cf340f4a14f4d3340f50143ef551643a83;p=lttng-ust.git Remove loglevel iter (will be performed by tracepoint iteration) Signed-off-by: Mathieu Desnoyers --- diff --git a/include/lttng/ust-abi.h b/include/lttng/ust-abi.h index ae95af6b..f5dd2665 100644 --- a/include/lttng/ust-abi.h +++ b/include/lttng/ust-abi.h @@ -98,12 +98,6 @@ struct lttng_ust_channel_attr { enum lttng_ust_output output; /* splice, mmap */ }; -struct lttng_ust_loglevel { - char provider[LTTNG_UST_SYM_NAME_LEN]; - char loglevel[LTTNG_UST_SYM_NAME_LEN]; - int64_t value; -}; - struct lttng_ust_object_data { int handle; int shm_fd; @@ -127,7 +121,6 @@ struct lttng_ust_object_data { #define LTTNG_UST_TRACEPOINT_LIST _UST_CMD(0x42) #define LTTNG_UST_WAIT_QUIESCENT _UST_CMD(0x43) #define LTTNG_UST_REGISTER_DONE _UST_CMD(0x44) -#define LTTNG_UST_LOGLEVEL_LIST _UST_CMD(0x45) /* Session FD commands */ #define LTTNG_UST_METADATA \ @@ -155,9 +148,6 @@ struct lttng_ust_object_data { /* Tracepoint list commands */ #define LTTNG_UST_TRACEPOINT_LIST_GET _UST_CMD(0x90) -/* Loglevel list commands */ -#define LTTNG_UST_LOGLEVEL_LIST_GET _UST_CMD(0xA0) - #define LTTNG_UST_ROOT_HANDLE 0 struct lttng_ust_obj; diff --git a/include/lttng/ust-ctl.h b/include/lttng/ust-ctl.h index af76f267..0945e4ef 100644 --- a/include/lttng/ust-ctl.h +++ b/include/lttng/ust-ctl.h @@ -22,6 +22,12 @@ #include +struct ustctl_tracepoint_iter { + char name[LTTNG_UST_SYM_NAME_LEN]; /* provider:name */ + char loglevel[LTTNG_UST_SYM_NAME_LEN]; /* provider:loglevel */ + int64_t loglevel_value; +}; + int ustctl_register_done(int sock); int ustctl_create_session(int sock); int ustctl_open_metadata(int sock, int session_handle, @@ -54,7 +60,7 @@ int ustctl_tracepoint_list(int sock); * handle. End is iteration is reached when -ENOENT is returned. */ int ustctl_tracepoint_list_get(int sock, int tp_list_handle, - char iter[LTTNG_UST_SYM_NAME_LEN]); + struct ustctl_tracepoint_iter *iter); int ustctl_tracer_version(int sock, struct lttng_ust_tracer_version *v); int ustctl_wait_quiescent(int sock); diff --git a/include/ust-comm.h b/include/ust-comm.h index 64d91c98..deb0438b 100644 --- a/include/ust-comm.h +++ b/include/ust-comm.h @@ -130,7 +130,6 @@ struct ustcomm_ust_msg { struct lttng_ust_context context; struct lttng_ust_tracer_version version; char tracepoint_list_entry[LTTNG_UST_SYM_NAME_LEN]; - struct lttng_ust_loglevel loglevel_list_entry; } u; }; @@ -152,7 +151,6 @@ struct ustcomm_ust_reply { } stream; struct lttng_ust_tracer_version version; char tracepoint_list_entry[LTTNG_UST_SYM_NAME_LEN]; - struct lttng_ust_loglevel loglevel_list_entry; } u; }; diff --git a/liblttng-ust-ctl/ustctl.c b/liblttng-ust-ctl/ustctl.c index 30e408bc..6a902ef8 100644 --- a/liblttng-ust-ctl/ustctl.c +++ b/liblttng-ust-ctl/ustctl.c @@ -408,7 +408,7 @@ int ustctl_tracepoint_list(int sock) } int ustctl_tracepoint_list_get(int sock, int tp_list_handle, - char iter[LTTNG_UST_SYM_NAME_LEN]) + struct ustctl_tracepoint_iter *iter) { struct ustcomm_ust_msg lum; struct ustcomm_ust_reply lur; @@ -421,7 +421,7 @@ int ustctl_tracepoint_list_get(int sock, int tp_list_handle, if (ret) return ret; DBG("received tracepoint list entry %s", lur.u.tracepoint_list_entry); - memcpy(iter, lur.u.tracepoint_list_entry, LTTNG_UST_SYM_NAME_LEN); + memcpy(iter->name, lur.u.tracepoint_list_entry, LTTNG_UST_SYM_NAME_LEN); return 0; } diff --git a/liblttng-ust/lttng-ust-abi.c b/liblttng-ust/lttng-ust-abi.c index 6be716be..e6ffa41f 100644 --- a/liblttng-ust/lttng-ust-abi.c +++ b/liblttng-ust/lttng-ust-abi.c @@ -39,19 +39,11 @@ struct ltt_tracepoint_list { int got_first; }; -struct ltt_loglevel_list { - struct loglevel_iter *iter; - int got_first; -}; - static int lttng_ust_abi_close_in_progress; static int lttng_abi_tracepoint_list(void); -static -int lttng_abi_loglevel_list(void); - /* * Object descriptor table. Should be protected from concurrent access * by the caller. @@ -218,7 +210,6 @@ static const struct lttng_ust_objd_ops lttng_metadata_ops; static const struct lttng_ust_objd_ops lttng_event_ops; static const struct lttng_ust_objd_ops lib_ring_buffer_objd_ops; static const struct lttng_ust_objd_ops lttng_tracepoint_list_ops; -static const struct lttng_ust_objd_ops lttng_loglevel_list_ops; enum channel_type { PER_CPU_CHANNEL, @@ -303,8 +294,6 @@ long lttng_abi_add_context(int objd, * Returns a file descriptor listing available tracepoints * LTTNG_UST_WAIT_QUIESCENT * Returns after all previously running probes have completed - * LTTNG_UST_LOGLEVEL_LIST - * Returns a file descriptor listing available loglevels * * The returned session will be deleted when its file descriptor is closed. */ @@ -322,8 +311,6 @@ long lttng_cmd(int objd, unsigned int cmd, unsigned long arg) case LTTNG_UST_WAIT_QUIESCENT: synchronize_trace(); return 0; - case LTTNG_UST_LOGLEVEL_LIST: - return lttng_abi_loglevel_list(); default: return -EINVAL; } @@ -611,112 +598,6 @@ static const struct lttng_ust_objd_ops lttng_tracepoint_list_ops = { .cmd = lttng_tracepoint_list_cmd, }; -/* - * beware: we don't keep the mutex over the send, but we must walk the - * whole list each time we are called again. So sending one loglevel - * entry at a time means this is O(n^2). TODO: do as in the kernel and - * send multiple tracepoints for each call to amortize this cost. - */ -static -void ltt_loglevel_list_get(struct ltt_loglevel_list *list, - const char *loglevel_provider, - const char *loglevel, - long *value) -{ -#if 0 -next: - if (!list->got_first) { - //tp_loglevel_iter_start(&list->iter); - list->got_first = 1; - goto copy; - } - //tp_loglevel_iter_next(&list->iter); -copy: - if (!list->iter->desc.provider) { - loglevel_provider[0] = '\0'; /* end of list */ - } else { - memcpy(loglevel_provider, list->iter->desc.provider, - LTTNG_UST_SYM_NAME_LEN); - memcpy(loglevel, list->iter.loglevel, - LTTNG_UST_SYM_NAME_LEN); - *value = list->iter.value; - } -#endif -} - -static -long lttng_loglevel_list_cmd(int objd, unsigned int cmd, unsigned long arg) -{ - struct ltt_loglevel_list *list = objd_private(objd); - struct lttng_ust_loglevel *loglevel_list_entry = - (struct lttng_ust_loglevel *) arg; - - switch (cmd) { - case LTTNG_UST_LOGLEVEL_LIST_GET: -/* - ltt_tracepoint_list_get(list, - loglevel_list_entry->provider, - loglevel_list_entry->loglevel, - &loglevel_list_entry->value); - if (loglevel_list_entry->provider[0] == '\0') - return -ENOENT; -*/ - return 0; - default: - return -EINVAL; - } -} - -static -int lttng_abi_loglevel_list(void) -{ - int list_objd, ret; - struct ltt_loglevel_list *list; - - list_objd = objd_alloc(NULL, <tng_loglevel_list_ops); - if (list_objd < 0) { - ret = list_objd; - goto objd_error; - } - list = zmalloc(sizeof(*list)); - if (!list) { - ret = -ENOMEM; - goto alloc_error; - } - objd_set_private(list_objd, list); - - return list_objd; - -alloc_error: - { - int err; - - err = lttng_ust_objd_unref(list_objd); - assert(!err); - } -objd_error: - return ret; -} - -static -int lttng_release_loglevel_list(int objd) -{ - struct ltt_loglevel_list *list = objd_private(objd); - - if (list) { - //tp_loglevel_iter_stop(&list->iter); - free(list); - return 0; - } else { - return -EINVAL; - } -} - -static const struct lttng_ust_objd_ops lttng_loglevel_list_ops = { - .release = lttng_release_loglevel_list, - .cmd = lttng_loglevel_list_cmd, -}; - struct stream_priv_data { struct lttng_ust_lib_ring_buffer *buf; struct ltt_channel *ltt_chan;