[ovs-dev] [warp v2 1/3] timeval: Add Clang thread-safety annotations, fix unimportant violation.
Ethan Jackson
ethan at nicira.com
Fri Sep 13 20:28:35 UTC 2013
Acked-by: Ethan Jackson <ethan at nicira.com>
On Fri, Sep 13, 2013 at 1:01 PM, Ben Pfaff <blp at nicira.com> wrote:
> Signed-off-by: Ben Pfaff <blp at nicira.com>
> ---
> lib/timeval.c | 23 ++++++++++++++++-------
> 1 file changed, 16 insertions(+), 7 deletions(-)
>
> diff --git a/lib/timeval.c b/lib/timeval.c
> index c24788a..64d65ea 100644
> --- a/lib/timeval.c
> +++ b/lib/timeval.c
> @@ -44,10 +44,9 @@ struct clock {
>
> /* Features for use by unit tests. Protected by 'rwlock'. */
> struct ovs_rwlock rwlock;
> - struct timespec warp; /* Offset added for unit tests. */
> - bool stopped; /* Disables real-time updates if true. */
> -
> - struct timespec cache; /* Last time read from kernel. */
> + struct timespec warp OVS_GUARDED; /* Offset added for unit tests. */
> + bool stopped OVS_GUARDED; /* Disable real-time updates if true. */
> + struct timespec cache OVS_GUARDED; /* Last time read from kernel. */
> };
>
> /* Our clocks. */
> @@ -320,14 +319,24 @@ timespec_add(struct timespec *sum,
> *sum = tmp;
> }
>
> +static bool
> +is_warped(const struct clock *c)
> +{
> + bool warped;
> +
> + ovs_rwlock_rdlock(&c->rwlock);
> + warped = monotonic_clock.warp.tv_sec || monotonic_clock.warp.tv_nsec;
> + ovs_rwlock_unlock(&c->rwlock);
> +
> + return warped;
> +}
> +
> static void
> log_poll_interval(long long int last_wakeup)
> {
> long long int interval = time_msec() - last_wakeup;
>
> - if (interval >= 1000
> - && !monotonic_clock.warp.tv_sec
> - && !monotonic_clock.warp.tv_nsec) {
> + if (interval >= 1000 && !is_warped(&monotonic_clock)) {
> const struct rusage *last_rusage = get_recent_rusage();
> struct rusage rusage;
>
> --
> 1.7.10.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
More information about the dev
mailing list