CURRENT_TIME is a struct timespec. (How is it updated? May a read turn out to actually be compiled into a special instruction that reads a high-accuracy clock on the CPU?) It's absolute time (unix time, since the start of 1970). jiffies is lower-resolution (depends on kernel version, architecture, but roughly milliseconds or tens of) and isn't absolute time. It could also wrap around every now and then; if you depend on comparing jiffies values, you may still do so over a short period of time (a few minutes?) but you should do it by casting to signed long, subtracting, and comparing to zero, to avoid problems around wrap-around time. (Well, no, actually, you should just use time_before() and time_after(), which already do this for you.) (Actually, if jiffies is milliseconds and 32 bits, that'd be 40-some days to wrap around.) TSC: time stamp counter: http://en.wikipedia.org/wiki/Time_Stamp_Counter HPET: high precision event timer: http://en.wikipedia.org/wiki/HPET