[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 3 of 4] xl: add support for vif rate limiting



On Tue, 2012-03-20 at 11:16 +0000, Stefano Stabellini wrote:
> On Tue, 20 Mar 2012, Mathieu Gagnà wrote:
[...]
> > +void xlu_vif_parse_rate(const char *rate, uint32_t *bytes_per_interval,
> > +                                          uint32_t *interval_usecs)
> > +{
> > +    uint32_t bytes_per_sec = 0;
> > +    uint64_t tmp_bytes_per_interval = 0;
> > +    char *tmprate, *ratetok;
> > +
> > +    tmprate = strdup(rate);
> > +
> > +    ratetok = strtok(tmprate, "@");
> > +    vif_parse_rate_bytes_per_sec(ratetok, &bytes_per_sec);
> > +
> > +    ratetok = strtok(NULL, "@");
> > +    if (ratetok != NULL)
> > +        vif_parse_rate_interval_usecs(ratetok, interval_usecs);
> > +    else
> > +        *interval_usecs = 50000; /* Default to 50ms */
> > +
> > +    free(tmprate);
> > +
> > +    tmp_bytes_per_interval =
> > +        (((uint64_t) bytes_per_sec * (uint64_t) *interval_usecs) / 
> > 1000000L);
> > +
> > +    /* overflow checking: default to unlimited rate */
> > +    if ((tmp_bytes_per_interval == 0) || (tmp_bytes_per_interval > 
> > UINT32_MAX)) {
> > +        tmp_bytes_per_interval = UINT32_MAX;
> > +        *interval_usecs = 0;
> > +    }
> > +    *bytes_per_interval = tmp_bytes_per_interval;
> > +}
> 
> wouldn't it make sense to just use a uint64_t for
> rate_bytes_per_interval and rate_interval_usecs?

It needn't be a barrier to this but FWIW Linux parses these into
"unsigned long", but it does at least appear to do proper overflow
checking.

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.