On Tue, 22 Jan 2008, Oliver Neukum wrote:

> Am Montag, 21. Januar 2008 22:43:25 schrieb Sarah Sharp:
> > +       dev->connect_time = jiffies;
> > +       dev->active_duration = -jiffies;
> >  #endif
> >         if (root_hub)   /* Root hub always ok [and always wired] */
> >                 dev->authorized = 1;
> > diff --git a/include/linux/usb.h b/include/linux/usb.h
> > index 5fc8ff7..b031455 100644
> > --- a/include/linux/usb.h
> > +++ b/include/linux/usb.h
> > @@ -419,12 +419,15 @@ struct usb_device {
> >         u32 quirks;                     /* quirks of the whole device */
> >         atomic_t urbnum;                /* number of URBs submitted for the 
> > whole device */
> >  
> > +       unsigned long active_duration;  /* total time device is not 
> > suspended */
> > +
> 
> Somehow assigning -jiffies to an unsigned variable doesn't appeal to me.

I agree.  In fact, reading through the patch I got the distinct
impression that the value stored in active_duration was the negative of
the value I would have used.  Thus, I would have called the field
something like active_start_or_duration.  The idea is that while the
device is active it stores an effective start time, and while the
device is suspended it stores a duration.

If the device is active then the total active duration is calculated as

                jiffies - udev->active_start_or_duration

If the device is suspended then the total active duration
is simply

                udev->active_start_or_duration

When suspending or resuming the device you set

        udev->active_start_or_duration = jiffies -
                        udev->active_start_or_duration;

which converts between an effective start time and a duration.

This may not be quite as clean as your approach, but IMO it is more 
easily understandable.

Alan Stern

-
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to