On Tue, Jun 28, 2016 at 02:55:28PM +0100, Chris Wilson wrote: > On Tue, Jun 28, 2016 at 02:29:33PM +0100, Tvrtko Ursulin wrote: > > How would you implement it with cpu_clock? What would you do when > > re-scheduled? > > unsigned long base; > int cpu; > int ret; > > preempt_disable(); > cpu = smp_processor_id(); > base = local_clock() >> 10; > for (;;) { > u64 now = local_clock() >> 10; > preempt_enable(); > > if (COND) { > ret = 0; > break; > } > > if (now - base >= timeout) { > ret = -ETIMEOUT; > break; > } > > cpu_relax(); > > preempt_disable(); > if (unlikely(cpu != smp_processor_id()) { > timeout -= now - base; For this, we should scale everything to ns (u64). -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx