/* 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;