[ovs-dev] [PATCH] stopwatch: Explicitly ignore write() return value.

Mark Michelson mmichels at redhat.com
Fri Apr 6 18:01:47 UTC 2018


Thanks Justin!

Acked-by: Mark Michelson <mmichels at redhat.com>

On 04/06/2018 12:16 PM, Justin Pettit wrote:
> In some environments, builds would fail with the following error:
> 
>    lib/stopwatch.c: In function ‘stopwatch_exit’:
>    lib/stopwatch.c:448:5: error: ignoring return value of ‘write’, declared
>    with attribute warn_unused_result [-Werror=unused-result]
>        write(stopwatch_pipe[1], &pkt, sizeof pkt);
> 
> This patch explicitly ignores the return value of write().
> 
> This also fixes some minor coding style issues.
> 
> Signed-off-by: Justin Pettit <jpettit at ovn.org>
> ---
>   lib/stopwatch.c | 25 +++++++++++++------------
>   lib/stopwatch.h |  8 +++++---
>   2 files changed, 18 insertions(+), 15 deletions(-)
> 
> diff --git a/lib/stopwatch.c b/lib/stopwatch.c
> index 80677d000030..a241433838b8 100644
> --- a/lib/stopwatch.c
> +++ b/lib/stopwatch.c
> @@ -24,6 +24,7 @@
>   #include "ovs-thread.h"
>   #include <unistd.h>
>   #include "socket-util.h"
> +#include "util.h"
>   
>   VLOG_DEFINE_THIS_MODULE(stopwatch);
>   
> @@ -236,7 +237,7 @@ add_sample(struct stopwatch *sw, unsigned long long new_sample)
>   
>   static bool
>   stopwatch_get_stats_protected(const char *name,
> -                                struct stopwatch_stats *stats)
> +                              struct stopwatch_stats *stats)
>   {
>       struct stopwatch *perf;
>   
> @@ -311,7 +312,7 @@ stopwatch_show_protected(int argc, const char *argv[], struct ds *s)
>   
>   static void
>   stopwatch_show(struct unixctl_conn *conn, int argc OVS_UNUSED,
> -        const char *argv[], void *ignore OVS_UNUSED)
> +               const char *argv[], void *ignore OVS_UNUSED)
>   {
>       struct ds s = DS_EMPTY_INITIALIZER;
>       bool success;
> @@ -330,15 +331,15 @@ stopwatch_show(struct unixctl_conn *conn, int argc OVS_UNUSED,
>   
>   static void
>   stopwatch_reset(struct unixctl_conn *conn, int argc OVS_UNUSED,
> -        const char *argv[], void *ignore OVS_UNUSED)
> +                const char *argv[], void *aux OVS_UNUSED)
>   {
>       struct stopwatch_packet pkt = {
>           .op = OP_RESET,
>       };
>       if (argc > 1) {
> -        ovs_strlcpy(pkt.name, argv[1], sizeof(pkt.name));
> +        ovs_strlcpy(pkt.name, argv[1], sizeof pkt.name);
>       }
> -    write(stopwatch_pipe[1], &pkt, sizeof(pkt));
> +    ignore(write(stopwatch_pipe[1], &pkt, sizeof pkt));
>       unixctl_command_reply(conn, "");
>   }
>   
> @@ -406,7 +407,7 @@ stopwatch_thread(void *ign OVS_UNUSED)
>   
>       while (!should_exit) {
>           struct stopwatch_packet pkt;
> -        while (read(stopwatch_pipe[0], &pkt, sizeof(pkt)) > 0) {
> +        while (read(stopwatch_pipe[0], &pkt, sizeof pkt) > 0) {
>               ovs_mutex_lock(&stopwatches_lock);
>               switch (pkt.op) {
>               case OP_START_SAMPLE:
> @@ -445,7 +446,7 @@ stopwatch_exit(void)
>           .op = OP_SHUTDOWN,
>       };
>   
> -    write(stopwatch_pipe[1], &pkt, sizeof pkt);
> +    ignore(write(stopwatch_pipe[1], &pkt, sizeof pkt));
>       xpthread_join(stopwatch_thread_id, NULL);
>   
>       /* Process is exiting and we have joined the only
> @@ -506,8 +507,8 @@ stopwatch_start(const char *name, unsigned long long ts)
>           .op = OP_START_SAMPLE,
>           .time = ts,
>       };
> -    ovs_strlcpy(pkt.name, name, sizeof(pkt.name));
> -    write(stopwatch_pipe[1], &pkt, sizeof(pkt));
> +    ovs_strlcpy(pkt.name, name, sizeof pkt.name);
> +    ignore(write(stopwatch_pipe[1], &pkt, sizeof pkt));
>   }
>   
>   void
> @@ -517,8 +518,8 @@ stopwatch_stop(const char *name, unsigned long long ts)
>           .op = OP_END_SAMPLE,
>           .time = ts,
>       };
> -    ovs_strlcpy(pkt.name, name, sizeof(pkt.name));
> -    write(stopwatch_pipe[1], &pkt, sizeof(pkt));
> +    ovs_strlcpy(pkt.name, name, sizeof pkt.name);
> +    ignore(write(stopwatch_pipe[1], &pkt, sizeof pkt));
>   }
>   
>   void
> @@ -529,7 +530,7 @@ stopwatch_sync(void)
>       };
>   
>       ovs_mutex_lock(&stopwatches_lock);
> -    write(stopwatch_pipe[1], &pkt, sizeof(pkt));
> +    ignore(write(stopwatch_pipe[1], &pkt, sizeof pkt));
>       ovs_mutex_cond_wait(&stopwatches_sync, &stopwatches_lock);
>       ovs_mutex_unlock(&stopwatches_lock);
>   }
> diff --git a/lib/stopwatch.h b/lib/stopwatch.h
> index 6ee7291d9230..91abd64e4c11 100644
> --- a/lib/stopwatch.h
> +++ b/lib/stopwatch.h
> @@ -26,12 +26,14 @@ enum stopwatch_units {
>   
>   struct stopwatch_stats {
>       unsigned long long count;    /* Total number of samples. */
> -    enum stopwatch_units unit; /* Unit of following values. */
> +    enum stopwatch_units unit;   /* Unit of following values. */
>       unsigned long long max;      /* Maximum value. */
>       unsigned long long min;      /* Minimum value. */
>       double pctl_95;              /* 95th percentile. */
> -    double ewma_50;              /* Exponentially weighted moving average (alpha 0.50). */
> -    double ewma_1;               /* Exponentially weighted moving average (alpha 0.01). */
> +    double ewma_50;              /* Exponentially weighted moving average
> +                                    (alpha 0.50). */
> +    double ewma_1;               /* Exponentially weighted moving average
> +                                    (alpha 0.01). */
>   };
>   
>   /* Create a new stopwatch.
> 



More information about the dev mailing list