o = list_entry(tmp, struct unwinder, list); if (o == ops) return -EBUSY; /* Keep track of the place, where to insert */ if (o->rating >= ops->rating)
entry = tmp;
}
list_add(&ops->list, entry);
return0;
}
/** *unwinder_register-Usedtoinstallnewstackunwinder *@u:unwindertoberegistered * *Installthenewstackunwinderontheunwinderlist,whichissorted *byrating. * *Returns-EBUSYifregistrationfails,zerootherwise.
*/ int unwinder_register(struct unwinder *u)
{ unsignedlong flags; int ret;
spin_lock_irqsave(&unwinder_lock, flags);
ret = unwinder_enqueue(u); if (!ret)
curr_unwinder = select_unwinder();
spin_unlock_irqrestore(&unwinder_lock, flags);
/* Make sure no one beat us to changing the unwinder */ if (unwinder_faulted && !list_is_singular(&unwinder_list)) {
list_del(&curr_unwinder->list);
curr_unwinder = select_unwinder();
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.