/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright (c) 2016, Olivier MATZ <zer0@droids-corp.org>
+ * Copyright 2016, Olivier MATZ <zer0@droids-corp.org>
*/
#include <stdlib.h>
/* register an init function */
void ec_init_register(struct ec_init *init)
{
+ struct ec_init *cur;
+
+ if (TAILQ_EMPTY(&init_list)) {
+ TAILQ_INSERT_HEAD(&init_list, init, next);
+ return;
+ }
+
+
+ TAILQ_FOREACH(cur, &init_list, next) {
+ if (init->priority > cur->priority)
+ continue;
+
+ TAILQ_INSERT_BEFORE(cur, init, next);
+ return;
+ }
+
TAILQ_INSERT_TAIL(&init_list, init, next);
}
{
struct ec_init *init;
- /* XXX sort list by priority */
-
TAILQ_FOREACH(init, &init_list, next) {
if (init->init() < 0)
return -1;