From b84968566f2f36e2914002aaec9b1b4b84247b38 Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Wed, 22 Nov 2017 14:09:44 -0500 Subject: [PATCH] Include lttng-ctl apps for liblttng-ctl testing Signed-off-by: Jonathan Rajotte --- .../apps/lttng-ctl/channels_ctl/Makefile | 26 ++++ lttng_ivc/apps/lttng-ctl/channels_ctl/app | Bin 0 -> 13424 bytes lttng_ivc/apps/lttng-ctl/channels_ctl/app.c | 143 ++++++++++++++++++ lttng_ivc/apps/lttng-ctl/events_ctl/Makefile | 26 ++++ lttng_ivc/apps/lttng-ctl/events_ctl/app | Bin 0 -> 13264 bytes lttng_ivc/apps/lttng-ctl/events_ctl/app.c | 142 +++++++++++++++++ 6 files changed, 337 insertions(+) create mode 100644 lttng_ivc/apps/lttng-ctl/channels_ctl/Makefile create mode 100755 lttng_ivc/apps/lttng-ctl/channels_ctl/app create mode 100644 lttng_ivc/apps/lttng-ctl/channels_ctl/app.c create mode 100644 lttng_ivc/apps/lttng-ctl/events_ctl/Makefile create mode 100755 lttng_ivc/apps/lttng-ctl/events_ctl/app create mode 100644 lttng_ivc/apps/lttng-ctl/events_ctl/app.c diff --git a/lttng_ivc/apps/lttng-ctl/channels_ctl/Makefile b/lttng_ivc/apps/lttng-ctl/channels_ctl/Makefile new file mode 100644 index 0000000..2cbe921 --- /dev/null +++ b/lttng_ivc/apps/lttng-ctl/channels_ctl/Makefile @@ -0,0 +1,26 @@ +# Copyright (C) 2017 Jonathan Rajotte +# +# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED +# OR IMPLIED. ANY USE IS AT YOUR OWN RISK. +# +# Permission is hereby granted to use or copy this program for any +# purpose, provided the above notices are retained on all copies. +# Permission to modify the code and to distribute modified code is +# granted, provided the above notices are retained, and a notice that +# the code was modified is included with the above copyright notice. + +LIBS = -llttng-ctl +LOCAL_CPPFLAGS += -I. + +all: app + +.PHONY: app + +app: app.o + $(CC) -o $@ $(LDFLAGS) $(CFLAGS) $^ $(LIBS) + +app.o: app.c + $(CC) $(CPPFLAGS) $(LOCAL_CPPFLAGS) $(LTTNG_CPPFLAGS) $(CFLAGS) -c -o $@ $< + + + diff --git a/lttng_ivc/apps/lttng-ctl/channels_ctl/app b/lttng_ivc/apps/lttng-ctl/channels_ctl/app new file mode 100755 index 0000000000000000000000000000000000000000..18aa4a8c984898fd8388aed6ca1d795d81d57739 GIT binary patch literal 13424 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 n4=%f +#include +#include +#include +#include +#include +#include + +static enum lttng_domain_type get_domain_type(const char *domain) +{ + if (!strcmp("UST", domain)) { + return LTTNG_DOMAIN_UST; + } else if (!strcmp("KERNEL", domain)) { + return LTTNG_DOMAIN_KERNEL; + } else { + printf("Domain not supported\n"); + assert(0); + } +} + +static int process_channel(struct lttng_channel *channel) +{ + int ret; + uint64_t uint64 = 0; + int64_t int64 = 0; + + + ret = lttng_channel_get_discarded_event_count(channel, &uint64); + if (ret < 0) { + ret = 1; + goto end; + } + printf("discarded_event_count: %" PRIu64 "\n", uint64); + + ret = lttng_channel_get_lost_packet_count(channel, &uint64); + if (ret < 0) { + ret = 1; + goto end; + } + printf("lost packet: %" PRIu64 "\n", uint64); + +#ifdef LTTNG_2_10 + ret = lttng_channel_get_monitor_timer_interval(channel, &uint64); + if (ret < 0) { + ret = 1; + goto end; + } + printf("monitor timer interval: %" PRIu64 "\n", uint64); + + ret = lttng_channel_get_blocking_timeout(channel, &int64); + if (ret < 0) { + ret = 1; + goto end; + } + printf("blocking timeout: %" PRId64 "\n", int64); + + /* Setter */ + ret = lttng_channel_set_blocking_timeout(channel, 100); + if (ret < 0) { + ret = 1; + goto end; + } + + ret = lttng_channel_set_monitor_timer_interval(channel, 100); + if (ret < 0) { + ret = 1; + goto end; + } +#endif /* LTTNG_2_10 */ + +end: + return ret; +} + +int main(int argc, char **argv) +{ +int ret; +bool found; + +if (argc < 4) { +printf("missing parameters, session name, channel name, domain type\n"); +return 1; +} + +const char *session_name = argv[1]; +const char *channel_name = argv[2]; +const char *domain_str = argv[3]; + +/* Domain related variables */ +enum lttng_domain_type domain_type = LTTNG_DOMAIN_NONE; +struct lttng_domain *domains = NULL; +struct lttng_domain domain; +int domain_index = -1; + +/* Channel related variables */ +struct lttng_channel *channels = NULL; +int channel_index = -1; + +struct lttng_handle *handle = NULL; + +/* Find the domain we are interested in */ +domain_type = get_domain_type(domain_str); +ret = lttng_list_domains(session_name, &domains); +for (int i = 0; i < ret; i++) { + if (domains[i].type == domain_type) { + domain_index = i; + } + } + + if (domain_index < 0) { + printf("domain not found for session %s\n", session_name); + ret = 1; + goto end; + } + + /* Get the handle */ + + handle = lttng_create_handle(session_name, &domains[domain_index]); + + /* Find the channel we are interested in */ + ret = lttng_list_channels(handle, &channels); + for (int i = 0; i < ret; i++) { + if (!strcmp(channels[i].name, channel_name)) { + channel_index = i; + } + } + + if (channel_index < 0) { + printf("channel not found for session %s\n", session_name); + ret = 1; + goto end; + } + + ret = process_channel(&channels[channel_index]); + +end: + free(channels); + free(domains); + if (handle) { + lttng_destroy_handle(handle); + } + return 0; +} diff --git a/lttng_ivc/apps/lttng-ctl/events_ctl/Makefile b/lttng_ivc/apps/lttng-ctl/events_ctl/Makefile new file mode 100644 index 0000000..2cbe921 --- /dev/null +++ b/lttng_ivc/apps/lttng-ctl/events_ctl/Makefile @@ -0,0 +1,26 @@ +# Copyright (C) 2017 Jonathan Rajotte +# +# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED +# OR IMPLIED. ANY USE IS AT YOUR OWN RISK. +# +# Permission is hereby granted to use or copy this program for any +# purpose, provided the above notices are retained on all copies. +# Permission to modify the code and to distribute modified code is +# granted, provided the above notices are retained, and a notice that +# the code was modified is included with the above copyright notice. + +LIBS = -llttng-ctl +LOCAL_CPPFLAGS += -I. + +all: app + +.PHONY: app + +app: app.o + $(CC) -o $@ $(LDFLAGS) $(CFLAGS) $^ $(LIBS) + +app.o: app.c + $(CC) $(CPPFLAGS) $(LOCAL_CPPFLAGS) $(LTTNG_CPPFLAGS) $(CFLAGS) -c -o $@ $< + + + diff --git a/lttng_ivc/apps/lttng-ctl/events_ctl/app b/lttng_ivc/apps/lttng-ctl/events_ctl/app new file mode 100755 index 0000000000000000000000000000000000000000..087336499221a441aefa02dcefe0dbbea5f72478 GIT binary patch literal 13264 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 literal 0 HcmV?d00001 diff --git a/lttng_ivc/apps/lttng-ctl/events_ctl/app.c b/lttng_ivc/apps/lttng-ctl/events_ctl/app.c new file mode 100644 index 0000000..563fa65 --- /dev/null +++ b/lttng_ivc/apps/lttng-ctl/events_ctl/app.c @@ -0,0 +1,142 @@ +#include +#include +#include +#include +#include +#include + +static enum lttng_domain_type get_domain_type(const char *domain) +{ + if (!strcmp("UST", domain)) { + return LTTNG_DOMAIN_UST; + } else if (!strcmp("KERNEL", domain)) { + return LTTNG_DOMAIN_KERNEL; + } else { + printf("Domain not supported\n"); + assert(0); + } +} + +static int process_event(struct lttng_event *event) +{ + int ret = -1; + + /* Exclusion related lttng-ctl call */ + ret = lttng_event_get_exclusion_name_count(event); + if (ret < 0) { + ret = 1; + goto end; + } + if (ret > 0) { + int count = ret; + for (int i = 0; i < count ; i++) { + const char *name; + ret = lttng_event_get_exclusion_name(event, i , &name); + if (ret) { + ret = 1; + goto end; + } + printf("exclusion name: %s\n", name); + } + } + + /* Filet expression related lttng-ctl call */ + const char *filter_str; + ret = lttng_event_get_filter_expression(event, &filter_str); + if (ret) { + ret = 1; + goto end; + } + + printf("filter expression: %s\n", filter_str); +end: + return ret; +} + +int main(int argc, char **argv) +{ + int ret; + bool found; + + if (argc < 4) { + printf("missing parameters, session name, channel name, domain type\n"); + return 1; + } + + const char *session_name = argv[1]; + const char *channel_name = argv[2]; + const char *domain_str = argv[3]; + + /* Domain related variables */ + enum lttng_domain_type domain_type = LTTNG_DOMAIN_NONE; + struct lttng_domain *domains = NULL; + struct lttng_domain domain; + int domain_index = -1; + + /* Channel related variables */ + struct lttng_channel *channels = NULL; + int channel_index = -1; + + /* Event related variables */ + struct lttng_event *events = NULL; + + + struct lttng_handle *handle = NULL; + + /* Find the domain we are interested in */ + domain_type = get_domain_type(domain_str); + ret = lttng_list_domains(session_name, &domains); + for (int i = 0; i < ret; i++) { + if (domains[i].type == domain_type) { + domain_index = i; + } + } + + if (domain_index < 0) { + printf("domain not found for session %s\n", session_name); + ret = 1; + goto end; + } + + /* Get the handle */ + + handle = lttng_create_handle(session_name, &domains[domain_index]); + + /* Find the channel we are interested in */ + ret = lttng_list_channels(handle, &channels); + for (int i = 0; i < ret; i++) { + if (!strcmp(channels[i].name, channel_name)) { + channel_index = i; + } + } + + if (channel_index < 0) { + printf("channel not found for session %s\n", session_name); + ret = 1; + goto end; + } + + /* List events */ + ret = lttng_list_events(handle, channel_name, &events); + if (ret <= 0) { + printf("No events found for channel %s in session %s\n", channel_name, session_name); + } + + for (int i = 0; i < ret; i++) { + ret = process_event(&events[i]); + if (ret) { + printf("Error while processing event \n"); + ret = 1; + goto end; + } + } + +end: + free(events); + free(channels); + free(domains); + if (handle) { + lttng_destroy_handle(handle); + } + return 0; +} -- 2.34.1