Re: [PATCH] CPU time clock support in clock_* syscalls

From: Nick Piggin
Date: Tue Oct 05 2004 - 19:52:13 EST


Roland McGrath wrote:
It seemed like a syscall could read the values from a task currently
running on another CPU. If not, great.


Indeed it can. And yes, there is no locking against updates for this. For
sched_time on 32-bit platforms, there is the possibility it could be read
during an update and give a bogus value if the high half is updated before
the low half. Since there are no guarantees about accuracy, period, I
decided not to worry about such an anomaly. Perhaps it would be better to
do something about this, but AFAIK nothing perfect can be done without
adding more words to task_struct (e.g. seqcount). I don't know if the
nature of SMP cache behavior makes something like:

do {
sample = p->sched_time;
} while (p->sched_time != sample);

sufficient. That would certainly be easy to do.


I don't think that will be quite sufficient.

A seqcount would probably be the way to go.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/