net: u64_stats_sync improvements

- Add a comment about interrupts:

6) If counter might be written by an interrupt, readers should block
interrupts.

- Fix a typo in sample of use.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Eric Dumazet 2010-06-24 00:04:38 +00:00 committed by David S. Miller
parent a095cfc40e
commit b6b3ecc71a

View file

@ -23,6 +23,10 @@
* pure reads. But if they have to fetch many values, it's better to not allow * pure reads. But if they have to fetch many values, it's better to not allow
* preemptions/interruptions to avoid many retries. * preemptions/interruptions to avoid many retries.
* *
* 6) If counter might be written by an interrupt, readers should block interrupts.
* (On UP, there is no seqcount_t protection, a reader allowing interrupts could
* read partial values)
*
* Usage : * Usage :
* *
* Stats producer (writer) should use following template granted it already got * Stats producer (writer) should use following template granted it already got
@ -46,7 +50,7 @@
* start = u64_stats_fetch_begin(&stats->syncp); * start = u64_stats_fetch_begin(&stats->syncp);
* tbytes = stats->bytes64; // non atomic operation * tbytes = stats->bytes64; // non atomic operation
* tpackets = stats->packets64; // non atomic operation * tpackets = stats->packets64; // non atomic operation
* } while (u64_stats_fetch_retry(&stats->lock, syncp)); * } while (u64_stats_fetch_retry(&stats->syncp, start));
* *
* *
* Example of use in drivers/net/loopback.c, using per_cpu containers, * Example of use in drivers/net/loopback.c, using per_cpu containers,