[ILUG] [OT] C time_elapsed function
padraig at antefacto.com
Wed Nov 7 15:20:42 GMT 2001
Kenn Humborg wrote:
>>kevin lyda wrote:
>>>On Tue, Nov 06, 2001 at 06:47:03PM +0000, Padraig Brady wrote:
>>>>Feck that. It would be easier to write a simple kernel module
>>>>to export /proc/seconds_since_boot
>>>again, what is the problem you're trying to solve?
>>>you seem to want a number that increments. a thread could supply that.
>>>if it needs to cross process instances, you could use a sequence file.
>>Yes within process is trivial.
>>Across process a sequence file will not do as I need the correct
>>number of seconds since boot, not just a unique monotonically
>>increasing number (I'm writing a scheduling app).
>>doze had GetTickCount in 3.1!
> ... but GetTickCount() wrapped after 49.7 days.
LOL, shame on me for thinking doze would use a sensible size for this.
> Anyway, if you can guarantee that you will read the
> 32-bit jiffies counter at least once every 497 days,
> then simply watch for the new reading being less
> that the old and increment another 32-bit count.
But what if my app isn't running on the wrap around?
Hmm, I could write current BOOT_TIME & jiffies to file on startup,
and each startup check:
if (curr_BOOT_TIME == saved_BOOT_TIME && curr_jiffies <= saved_JIFFIES)
messy, but not too bad.
> Note that, (at least in earlier versions of linux
> development kernels and maybe even now), Linus often
> preloads jiffies with a very high value (rather than
> zero) to force jiffy wraparound to happen much sooner,
> to force other kernel developers and driver writers
> to deal with wraparound properly.
> So you probably can't trust the raw jiffies value anyway,
> only the delta between two readings. Which is not much good
> if you need the "correct number of seconds since boot".
Delta is all that's required.
> Would the "correct number of seconds since the start of your
> scheduling app" be enough?
No this is trivial, and can be just implemented within my app.
More information about the ILUG