HEADSUP usb2/usb4bsd to become default in GENERIC

Hans Petter Selasky hselasky at c2i.net
Mon Feb 9 07:06:11 PST 2009


On Monday 09 February 2009, Christoph Mallon wrote:
> Hans Petter Selasky schrieb:
> > On Monday 09 February 2009, Christoph Mallon wrote:
> >> Hans Petter Selasky schrieb:
> >>> On Monday 09 February 2009, Christoph Mallon wrote:
> >>>> Christoph Mallon schrieb:
> >>>>> are named "err" or "error". This should be investigated, so here's
> >>>>> the complete list:
> >>>>
> >>>> Sorry, my MUA seems to have damaged the list. You can get the list
> >>>> here: http://tron.homeunix.org/usb2.unread.log
> >>>
> >>> I think some of these errors depend if you have USB debugging compiled
> >>> or not. At least GCC does not warn?
> >>
> >> No, it does not depend on USB debugging.
> >> GCC has no warning at all for variables which are only assigned to.
> >> It only can warn about variables, which are only initialised.
> >>
> >> {
> >>    int x = 23; // GCC warns here ...
> >>    int y;      // ... but not here - cparser does
> >>    y = 42;
> >>    y++;
> >> }
> >>
> >> cparser has an analysis, which can warn about "y", too.
> >>
> >> I manually verified all 40 warnings and I cannot find any users (i.e.
> >> readers) for these variables.
> >
> > What is the correct way to discard the return argument of a function?
> > That's basically what most of the warnings are about.
> >
> > 1) (void)my_fn() cast
> > 2) if (my_fn()) { }
> > 3) err = my_fn();
> > 4) my_fn();
>
> Just to understand this correctly: You want to discard error codes?
>
>
> Basically I see four categories:
>
> 1) Getting the softc and not using it.
> This can be removed completely.
> Example:
>    sc = ATMEGA_BUS2SC(xfer->xroot->bus);
>
> 2) calling mtx_owned() and discarding the return value.
> Can be removed, too, after checking that the value is really unnecessary.
> Example:
>    use_polling = mtx_owned(xfer->xroot->xfer_mtx) ? 1 : 0;
>
> 3) Getting some value and not using it.
> Can be removed, too, after checking that the value is really unnecessary.
> Example:
>    ep_no = (xfer->endpoint & UE_ADDR);
>
> 4) The rest are return values of functions, which contain error codes.
> Discarding them is questionable at best.
> Example: (err is not read)
>      if (udev->flags.suspended) {
>        err = DEVICE_SUSPEND(iface->subdev);
>        device_printf(iface->subdev, "Suspend failed\n");
>      }
>      return (0);   /* success */

Hi,

Can you wait some days and re-run the analysis on -current, because there is a 
bulk of patches going in to some of the code you have analysed, so the line 
numbers are likely to not match. Then we fix those warnings!

--HPS


More information about the freebsd-current mailing list