bool __do_once_start(bool *done, unsignedlong *flags)
__acquires(once_lock)
{
spin_lock_irqsave(&once_lock, *flags); if (*done) {
spin_unlock_irqrestore(&once_lock, *flags); /* Keep sparse happy by restoring an even lock count on * this lock. In case we return here, we don't call into * __do_once_done but return early in the DO_ONCE() macro.
*/
__acquire(once_lock); returnfalse;
}
bool __do_once_sleepable_start(bool *done)
__acquires(once_mutex)
{
mutex_lock(&once_mutex); if (*done) {
mutex_unlock(&once_mutex); /* Keep sparse happy by restoring an even lock count on * this mutex. In case we return here, we don't call into * __do_once_done but return early in the DO_ONCE_SLEEPABLE() macro.
*/
__acquire(once_mutex); returnfalse;
}
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.