From 760051fa35b387a5d6090440a2daa58524283130 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Tue, 30 Aug 2016 16:33:17 -0400 Subject: [PATCH] Add ctf fs iterator initialization MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérémie Galarneau --- include/babeltrace/plugin/plugin-system.h | 4 +- lib/plugin-system/component.c | 2 +- plugins/ctf/fs/fs-internal.h | 4 ++ plugins/ctf/fs/fs.c | 81 +++++++++++++++++++++-- 4 files changed, 82 insertions(+), 9 deletions(-) diff --git a/include/babeltrace/plugin/plugin-system.h b/include/babeltrace/plugin/plugin-system.h index 959feab8..0c3618c2 100644 --- a/include/babeltrace/plugin/plugin-system.h +++ b/include/babeltrace/plugin/plugin-system.h @@ -49,9 +49,9 @@ typedef void (*bt_plugin_exit_func)(void); /** * Component private data deallocation function type. * - * @param data Component private data + * @param component Component instance */ -typedef void (*bt_component_destroy_cb)(void *data); +typedef void (*bt_component_destroy_cb)(struct bt_component *component); /** * Component initialization function type. diff --git a/lib/plugin-system/component.c b/lib/plugin-system/component.c index 85935079..b580bb5d 100644 --- a/lib/plugin-system/component.c +++ b/lib/plugin-system/component.c @@ -66,7 +66,7 @@ void bt_component_destroy(struct bt_object *obj) * instance. */ if (component->user_destroy) { - component->user_destroy(component->user_data); + component->user_destroy(component); } if (component->destroy) { diff --git a/plugins/ctf/fs/fs-internal.h b/plugins/ctf/fs/fs-internal.h index 448fff2a..d0a9f760 100644 --- a/plugins/ctf/fs/fs-internal.h +++ b/plugins/ctf/fs/fs-internal.h @@ -34,6 +34,10 @@ #define CTF_FS_COMPONENT_DESCRIPTION \ "Component used to read a CTF trace located on a file system." +struct ctf_fs_iterator { + int dummy; +}; + struct ctf_fs_component_options { bool opt_dummy : 1; }; diff --git a/plugins/ctf/fs/fs.c b/plugins/ctf/fs/fs.c index 6f0a3c0a..cd58753a 100644 --- a/plugins/ctf/fs/fs.c +++ b/plugins/ctf/fs/fs.c @@ -27,6 +27,7 @@ */ #include +#include #include #include #include "fs-internal.h" @@ -34,25 +35,93 @@ static bool ctf_fs_debug; static -struct ctf_fs_component *ctf_fs_create(struct bt_value *params) +struct bt_notification *ctf_fs_iterator_get( + struct bt_notification_iterator *iterator) { - return g_new0(struct ctf_fs_component, 1); + return NULL; } static -void ctf_fs_destroy(void *data) +enum bt_notification_iterator_status ctf_fs_iterator_next( + struct bt_notification_iterator *iterator) { - g_free(data); + return BT_NOTIFICATION_ITERATOR_STATUS_UNSUPPORTED; } -BT_HIDDEN +static +void ctf_fs_iterator_destroy_data(struct ctf_fs_iterator *ctf_it) +{ + g_free(ctf_it); +} + +static +void ctf_fs_iterator_destroy(struct bt_notification_iterator *it) +{ + void *data = bt_notification_iterator_get_private_data(it); + + ctf_fs_iterator_destroy_data(data); +} + +static enum bt_component_status ctf_fs_iterator_init(struct bt_component *source, struct bt_notification_iterator *it) { enum bt_component_status ret = BT_COMPONENT_STATUS_OK; + struct ctf_fs_iterator *ctf_it; assert(source && it); + ctf_it = g_new0(struct ctf_fs_iterator, 1); + if (!ctf_it) { + ret = BT_COMPONENT_STATUS_NOMEM; + goto end; + } + + ret = bt_notification_iterator_set_get_cb(it, ctf_fs_iterator_get); + if (ret) { + goto error; + } + + ret = bt_notification_iterator_set_next_cb(it, ctf_fs_iterator_next); + if (ret) { + goto error; + } + + ret = bt_notification_iterator_set_destroy_cb(it, + ctf_fs_iterator_destroy); + if (ret) { + goto error; + } + + ret = bt_notification_iterator_set_private_data(it, ctf_it); + if (ret) { + goto error; + } +end: return ret; +error: + (void) bt_notification_iterator_set_private_data(it, NULL); + ctf_fs_iterator_destroy_data(ctf_it); + return ret; +} + +static +struct ctf_fs_component *ctf_fs_create(struct bt_value *params) +{ + return g_new0(struct ctf_fs_component, 1); +} + +static +void ctf_fs_destroy_data(struct ctf_fs_component *component) +{ + g_free(component); +} + +static +void ctf_fs_destroy(struct bt_component *component) +{ + void *data = bt_component_get_private_data(component); + + ctf_fs_destroy_data(data); } BT_HIDDEN @@ -89,6 +158,6 @@ end: return ret; error: (void) bt_component_set_private_data(source, NULL); - ctf_fs_destroy(ctf_fs); + ctf_fs_destroy_data(ctf_fs); return ret; } -- 2.34.1