From 114c540b4d83b2afe6bd1343e50318af571bcb1f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michal=20Mal=C3=BD?= <madcatxster@devoid-pointer.net> Date: Fri, 25 Jul 2014 21:12:12 +0200 Subject: [PATCH] Implement rudimentary deinitialization --- klgd.c | 17 +++++++++++++++++ klgd.h | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/klgd.c b/klgd.c index 86c9f53..7de26a3 100644 --- a/klgd.c +++ b/klgd.c @@ -82,6 +82,23 @@ void klgd_free_stream(struct klgd_command_stream *s) } } +void klgd_deinit(struct klgd_main *ctx) +{ + struct klgd_main_private *priv = ctx->private; + size_t idx; + + for (idx = 0; idx < priv->plugin_count; idx++) { + struct klgd_plugin *plugin = priv->plugins[idx]; + + plugin->deinit(plugin); + kfree(plugin); + } + kfree(priv->plugins); + + kfree(priv); + kfree(ctx); +} + int klgd_init(struct klgd_main *ctx, void *dev_ctx, int (*callback)(void *, struct klgd_command_stream *), const size_t plugin_count) { struct klgd_main_private *priv = ctx->private; diff --git a/klgd.h b/klgd.h index 4eaef24..b9ee33c 100644 --- a/klgd.h +++ b/klgd.h @@ -15,7 +15,7 @@ struct klgd_main { struct klgd_plugin { struct klgd_plugin_private *private; - void (*deinit)(struct klgd_plugin *ctx, void *data); + void (*deinit)(struct klgd_plugin *ctx); struct klgd_command_stream *(*get_commands)(struct klgd_plugin *ctx, const unsigned long now); bool (*get_update_time)(struct klgd_plugin *ctx, const unsigned long now, unsigned long *t); int (*init)(struct klgd_plugin *ctx, void *data); @@ -23,7 +23,7 @@ struct klgd_plugin { int (*post_event)(struct klgd_plugin *ctx, void *data); }; -void klgd_deinit(struct klgd_main *ctx, void *data); +void klgd_deinit(struct klgd_main *ctx); int klgd_init(struct klgd_main *ctx, void *dev_ctx, int (*callback)(void *, struct klgd_command_stream *), const unsigned long plugin_count); void klgd_notify_commands_sent(struct klgd_main *ctx); int klgd_post_event(struct klgd_main *ctx, const size_t idx, void *data); -- 2.43.5