* limitations under the License.
*/
+#include <errno.h>
+
#include "module.h"
#include "log.h"
+#include "common.h"
static struct list_head modules[FAULTD_MODULE_TYPE_MAX];
-static void init_heads()
+static void init_heads(void)
{
- int i;
+ unsigned i;
for (i = 0; i < ARRAY_SIZE(modules); ++i)
INIT_LIST_HEAD(modules + i);
if (!modules[0].next)
init_heads();
- list_add_tail(&module->node, modules[module->type]);
+ list_add_tail(&module->node, modules + module->type);
+
+ return 0;
}
void faultd_module_unregister(struct faultd_module *module)
if (!modules[0].next)
init_heads();
- for (i = 0; i < ARRAY_SIZE(modules); ++i) {
+ for (i = 0; i < (int)(ARRAY_SIZE(modules)); ++i) {
log_debug("Initializing modules category %d", i);
list_for_each_entry(module, modules + i, node) {
log_debug("Initializing %s module", module->name);
void faultd_modules_cleanup()
{
+ struct faultd_module *module;
int i;
for (i = FAULTD_MODULE_TYPE_MAX - 1; i >= 0; --i) {
list_for_each_entry(module, modules + i, node) {
log_debug("Cleaning up %s module", module->name);
- ret = module->cleanup(module);
- if (ret)
- goto err_cleanup;
-
+ module->cleanup(module);
+ }
}
}
#define FAULTD_MODULE_H
#include <time.h>
+#include <systemd/sd-event.h>
#include "list.h"
int faultd_module_register(struct faultd_module *module);
void faultd_module_unregister(struct faultd_module *module);
-int faultd_modules_init();
-void faultd_modules_cleanup();
+int faultd_modules_init(sd_event *event_loop);
+void faultd_modules_cleanup(void);
#ifndef __CONSTRUCTOR__
#define __CONSTRUCTOR__ __attribute__((constructor))
#define FAULTD_NOTIFY_QUEUE_H
#include <unistd.h>
+#include <stdint.h>
+#include "queue.h"
/*
* Simple queue with fd notification for use in main loop
return head->fd;
}
-#define NQUEUE_NODE_INIT QUEUE_INIT
+#define NQUEUE_NODE_INIT(node) QUEUE_INIT(node)
-#define INIT_NQUEUE_NODE INIT_QUEUE_HEAD
+#define INIT_NQUEUE_NODE(node) INIT_QUEUE_HEAD(node)
static inline int nqueue_append(struct nqueue_head *head,
struct nqueue_node *new)
#define queue_head list_head
-#define QUEUE_INIT LIST_INIT
+#define QUEUE_INIT(name) LIST_HEAD_INIT(name)
-#define INIT_QUEUE_HEAD INIT_LIST_HEAD;
+#define INIT_QUEUE_HEAD(head) INIT_LIST_HEAD(head);
#define queue_append(head, new) list_add_tail(new, head);