On Wed, 1 Oct 2008, David Howells wrote:This is still wrong. There is no need for any kind of locking what so ever, period. That's the _point_ of the whole algorithm. The only constraint is that the code has to be executed at least once per half period of the 32 bit counter, which is typically once every couple minutes or so. Oh, that's a possibility. In that case __m_cnt_hi will be reverted to a previous state just like if cnt32_to_63() has not been called yet since the new half period. And a subsequent call will fix that again. I think this is excessive too. If you're preempted away for that long you still have a problem. And if that's a real concern because you run RT and have tasks frequently blocked for that long then don't use this interface for critical counters for which absolute correctness is essential, which is not the case for sched_clock() anyway. A sched_clock() implementation is meant to be as lightweight as possible even if it lacks in absolute precision, and the worst that could happen if you actually manage to cause a glitch in the returned value from sched_clock() is possibly the scheduling of the wrong task in a non RT scheduler, and we determined that a RT scheduler is needed to cause this glitch already. If you still feel paranoid about this then I can't stop you from adding extra locking in your own code. On machines I've created cnt32_to_63() for, the critical half period delay can be like 9 minutes and worrying about races that could last that long is really about ignoring a much worse problem. Nicolas --
| Greg KH | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Greg Kroah-Hartman | [PATCH 006/196] Chinese: add translation of oops-tracing.txt |
| Luciano Rocha | usb hdd problems with 2.6.27.2 |
| Roland Dreier | Re: Integration of SCST in the mainstream Linux kernel |
git: | |
| Gerrit Renker | [PATCH 15/37] dccp: Set per-connection CCIDs via socket options |
| David Miller | [GIT]: Networking |
| Natalie Protasevich | [BUG] New Kernel Bugs |
