Hi Reinhard, On Wed, Jun 29, 2011 at 3:06 PM, Reinhard Meyer <u-b...@emk-elektronik.de> wrote: > Dear All, >> >> Well I know i have asked this before, but I feel I should ask again >> because I didn't like the answer much. >> >> Imagine we change this code to: >> >> ts = time_now_ms() + msec >> do { >> ... >> } while (time_since_ms(ts)< 0); >> >> That should be legal, right? But I don't think this can work since the >> 'since' functions return an unsigned. >> >> [aside: this provides for another idiom that I think we talked about: >> >> ts = time_future_ms(msec) >> do { >> ... >> } while (!time_passed(ts)) >> >> which I am not at all suggesting should be in the API :-) >> end aside] > > I still vouch for this concept, which is simple, clean, and easy to > understand.
It really is a matter of personal taste ;) I find u32 start = time_now_ms(); do { ...blah... } while(time_since_ms(start) < timeout); much easier to understand (Do whatever while time elapsed since I started is less than the timeout) u32 end = time_future_ms(timeout); do { ...blah... } while(time_now_ms() < end); to me is a bit more clunky. Yes, it is probably computationally more efficient, but it does not naturally support: u32 start = time_now_ms(); u32 duration; ...blah... duration = time_since_ms(start); /* or duration = time_max_since_ms(start); */ Which we want for profiling. Also there are a few instances where there are multiple cascaded timeouts u32 start = time_now_ms(); do { ...blah... } while(time_since_ms(start) < timeout_1); do { ...blah... } while(time_since_ms(start) < timeout_2); Which means setting up all your timeouts in advance Regards, Graeme _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot