Add macro to easy define event type
authorKrzysztof Opasiak <k.opasiak@samsung.com>
Tue, 25 Apr 2017 16:01:30 +0000 (18:01 +0200)
committerKrzysztof Opasiak <k.opasiak@samsung.com>
Tue, 25 Apr 2017 16:01:30 +0000 (18:01 +0200)
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
src/core/module.h
src/event.h

index ee37deabdcc3c631ab22e393e2843458dce97fc0..eae36acb0cfa4cbc433672e29dcdd6f185da8fe0 100644 (file)
@@ -30,6 +30,7 @@ enum faultd_module_type {
         FAULTD_MODULE_TYPE_MIN = 0,
         FAULTD_MODULE_TYPE_UNCATEGORIZED = FAULTD_MODULE_TYPE_MIN,
         FAULTD_MODULE_TYPE_CORE,
+        FAULTD_MODULE_TYPE_EVENT,
         FAULTD_MODULE_TYPE_ACTION_EXECUTOR,
         FAULTD_MODULE_TYPE_DECISION_MAKER,
         FAULTD_MODULE_TYPE_LISTENER,
index ec84e82aefd4059309f8c9324969355f5d8e797e..63bf1f87c4ba261baa936cc4cf36a6934ec3dc6f 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "uref.h"
 #include "list.h"
+#include "module.h"
 
 struct faultd_event;
 
@@ -64,6 +65,27 @@ struct faultd_event {
 int faultd_event_type_register(struct faultd_event_type *type);
 void faultd_event_type_unregister(struct faultd_event_type *type);
 
+#define FAULTD_EVENT_TYPE_REGISTER(EVENT_TYPE)                          \
+static int event_type_init(struct faultd_module *module, sd_event *event_loop) \
+{                                                                       \
+        return faultd_event_type_register(&EVENT_TYPE);                 \
+}                                                                       \
+                                                                        \
+static void event_type_cleanup(struct faultd_module *module)            \
+{                                                                       \
+        faultd_event_type_unregister(&EVENT_TYPE);                      \
+}                                                                       \
+                                                                        \
+static struct faultd_module event_type_module = {                       \
+        .name = EVENT_TYPE.name,                                        \
+        .type = FAULTD_MODULE_TYPE_EVENT,                               \
+        .init = event_type_init,                                        \
+        .cleanup = event_type_cleanup,                                  \
+        .node = LIST_HEAD_INIT(event_type_module.node),                 \
+};                                                                      \
+                                                                        \
+FAULTD_MODULE_REGISTER(&event_type_module)
+
 int faultd_event_create(const char *type, void *data, struct faultd_event **ev);
 
 static inline void faultd_event_get(struct faultd_event *ev)
@@ -85,4 +107,6 @@ static inline int faultd_event_is_of_type(struct faultd_event *ev,
 int faultd_event_init(struct faultd_event_type *ev_type,
                       struct faultd_event *ev);
 
+void faultd_event_cleanup(struct faultd_event *ev) {}
+
 #endif /* FAULTD_EVENT_H */