* e.g.:
*
* struct ovs_mutex mutex;
- * struct list queue OVS_GUARDED_BY(mutex);
+ * struct ovs_list queue OVS_GUARDED_BY(mutex);
* struct seq nonempty_seq;
*
* To add an element to the queue:
* Thread-safety
* =============
*
- * Fully thread safe.
+ * Fully thread safe. seq_change() synchronizes with seq_read() and
+ * seq_wait() on the same variable in release-acquire fashion. That
+ * is, all effects of the memory accesses performed by a thread prior
+ * to seq_change() are visible to the threads returning from
+ * seq_read() or seq_wait() observing that change.
*/
#include <stdint.h>
uint64_t seq_read(const struct seq *);
void seq_wait_at(const struct seq *, uint64_t value, const char *where);
-#define seq_wait(seq, value) seq_wait_at(seq, value, SOURCE_LOCATOR)
+#define seq_wait(seq, value) seq_wait_at(seq, value, OVS_SOURCE_LOCATOR)
/* For poll_block() internal use. */
void seq_woke(void);