> -----Original Message-----
> From: ext Ola Liljedahl [mailto:[email protected]]
> Sent: Wednesday, January 28, 2015 2:03 PM
> To: Savolainen, Petri (NSN - FI/Espoo)
> Cc: LNG ODP Mailman List
> Subject: Re: [lng-odp] odp_cpumask.h
> 
> On 28 January 2015 at 12:55, Savolainen, Petri (NSN - FI/Espoo)
> <[email protected]> wrote:
> >
> >
> >> -----Original Message-----
> >> From: ext Ola Liljedahl [mailto:[email protected]]
> >> Sent: Wednesday, January 28, 2015 1:29 PM
> >> To: Savolainen, Petri (NSN - FI/Espoo)
> >> Cc: LNG ODP Mailman List
> >> Subject: Re: [lng-odp] odp_cpumask.h
> >>
> >> On 28 January 2015 at 12:21, Savolainen, Petri (NSN - FI/Espoo)
> >> <[email protected]> wrote:
> >> >
> >> >
> >> >> -----Original Message-----
> >> >> From: [email protected] [mailto:lng-odp-
> >> >> [email protected]] On Behalf Of ext Ola Liljedahl
> >> >> Sent: Wednesday, January 28, 2015 12:48 PM
> >> >> To: LNG ODP Mailman List
> >> >> Subject: [lng-odp] odp_cpumask.h
> >> >>
> >> >>  * @param str    Output buffer
> >> >>  * @param len    Size of string length (incl. ending zero)
> >> >>  */
> >> >> void odp_cpumask_to_str(const odp_cpumask_t *mask, char *str, int
> len);
> >> >>
> >> >> Why don't we use size_t for the"len" parameter?
> >> >>
> >> >> -- Ola
> >> >
> >> >
> >> > It's an object size, so it can be changed to size_t (similar to e.g.
> >> snprintf()).
> >> >
> >> > Packet data len/offsets, buffer sizes, packet/bytes counts etc,
> should
> >> be uintxx_t - but object sizes should be size_t.
> >> >
> >> >
> >> > Answer to: What happens if len < output length? Maybe we copy the
> >> snprintf definition (except output also ending zero). Return number
> chars
> >> written (incl. str ending zero), otherwise return number of chars that
> >> would have been outputted (return >len and clip output).
> >> This is more complicated to check for and goes against the convention
> >> of returning <0 for errors.
> >> I would prefer my suggestion with returning -(minimum required buffer
> >> size), there's a clear separation between success and error.
> >>
> >> And that we add a define with a suggested buffer size which will be
> >> usable when the CPU mask is full (all bits set), this seems to be 128
> >> when using Linux cpu_set_t for the implementation. Of course ODP could
> >> use a smaller max size as well.
> >
> >
> > About error from functions that return len. I'd have input param and
> return type the same, so that compiler don't complain when comparing those
> (maybe your audio was breaking on call yesterday on that part).
> No I didn't hear, my wifi router stopped working and had to be reset...
> 
> >
> > e.g.
> >
> > size_t odp_cpumask_to_str(const odp_cpumask_t *mask, char *str, size_t
> len);
> Better to use ssize_t then?

The point is that the same type is used for "len" and return value. Explicitly 
signed type for len would not be intuitive.

> 
> >
> >
> > size_t len, out;
> > char str[SIZE];
> >
> > len = sizeof(str);
> >
> > out = odp_cpumask_to_str(mask, str, len);
> >
> > if (out > len) {
> Simple yes. But we just defined the convention that we use negative
> values to indicate failures. Why not follow that here?
> To use positive values to indicate both success and error conditions
> seems confusing to me. snprintf is not a good example here.

The same, unsigned type - so that compiler does not complain when comparing 
those two.

size_t a;
ssize_t b;

    if (a > b)

gcc -W -Wall ...

main.c:17:8: warning: comparison between signed and unsigned integer 
expressions [-Wsign-compare]
  if (a > b)


-Petri


_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to