[ovs-dev] [PATCH 3/3] ovs-benchmark: New utility.

Ben Pfaff blp at nicira.com
Wed Jul 27 23:16:03 UTC 2011


On Wed, Jul 27, 2011 at 01:09:42PM -0700, Ethan Jackson wrote:
> There is some trailing whitespace in the man page.

Oops, deleted.

> I find it marginally easier to read do-while loops when they are
> followed by a newline.  If you disagree then leave it.

The ones in ovs-benchmark.c look OK to me.  The code just after the loop
is closely related to the code inside it.

> > + ? ?fds = xmalloc((local_max_port - local_min_port) * sizeof *fds);
> 
> I think you want (1 + local_max_port - local_min_port).

Thanks.

> > + ? ? ? ? ? ? ? ?if (newfd >= 0) {
> > + ? ? ? ? ? ? ? ? ? ?close(newfd);
> > + ? ? ? ? ? ? ? ?} else if (errno != EAGAIN) {
> > + ? ? ? ? ? ? ? ? ? ?ovs_fatal(errno, "accept failed");
> > + ? ? ? ? ? ? ? ?}
> > +
> Redundant newline.

Thanks, I deleted it.

> > +static void
> > +next_ports(unsigned short int *local_port, unsigned short int *remote_port)
> > +{
> > + ? ?if ((*local_port)++ == local_max_port) {
> > + ? ? ? ?*local_port = local_min_port;
> > + ? ? ? ?if ((*remote_port)++ == remote_max_port) {
> > + ? ? ? ? ? ?*remote_port = remote_min_port;
> > + ? ? ? ?}
> > + ? ?}
> > +}
> 
> I found this function difficult to read.  Maybe something like this
> would be more obviously correct?
> static void
> next_ports(unsigned short int *local_port, unsigned short int *remote_port)
> {
>     if (*local_port >= local_max_port) {
>         *local_port = local_min_port;
>         if (*remote_port >= remote_max_port) {
>             *remote_port = remote_min_port;
>         } else {
>             (*remote_port)++;
>         }
>     } else {
>         (*local_port)++;
>     }
> }

I changed it to the following:

    /* Increments '*value' within the range 'min...max' inclusive.  Returns true
     * if '*value' wraps around to 'min', otherwise false. */
    static bool
    increment(unsigned short int *value,
              unsigned short int min, unsigned short int max)
    {
        if (*value < max) {
            ++*value;
            return false;
        } else {
            *value = min;
            return true;
        }
    }

    static void
    next_ports(unsigned short int *local_port, unsigned short int *remote_port)
    {
        if (increment(local_port, local_min_port, local_max_port)) {
            increment(remote_port, remote_min_port, remote_max_port);
        }
    }





More information about the dev mailing list