repeat:
ret = READ_ONCE(s->seq); if (unlikely(ret & 1)) {
cpu_relax(); goto repeat;
}
smp_rmb(); /* Finish all reads before we return seq */ return ret;
}
staticinlineint vvar_read_retry(conststruct vvar_data *s, unsignedint start)
{
smp_rmb(); /* Finish all reads before checking the value of seq */ return unlikely(s->seq != start);
}
staticinlinevoid vvar_write_begin(struct vvar_data *s)
{
++s->seq;
smp_wmb(); /* Makes sure that increment of seq is reflected */
}
staticinlinevoid vvar_write_end(struct vvar_data *s)
{
smp_wmb(); /* Makes the value of seq current before we increment */
++s->seq;
}
#endif/* _ASM_SPARC_VVAR_DATA_H */
Messung V0.5
¤ Dauer der Verarbeitung: 0.24 Sekunden
(vorverarbeitet)
¤
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.