Skip to content
  • Peter Zijlstra's avatar
    relay: Use irq_work instead of plain timer for deferred wakeup · 26b5679e
    Peter Zijlstra authored
    Relay avoids calling wake_up_interruptible() for doing the wakeup of
    readers/consumers, waiting for the generation of new data, from the
    context of a process which produced the data.  This is apparently done to
    prevent the possibility of a deadlock in case Scheduler itself is is
    generating data for the relay, after acquiring rq->lock.
    
    The following patch used a timer (to be scheduled at next jiffy), for
    delegating the wakeup to another context.
    	commit 7c9cb383
    	Author: Tom Zanussi <zanussi@comcast.net>
    	Date:   Wed May 9 02:34:01 2007 -0700
    
    	relay: use plain timer instead of delayed work
    
    	relay doesn't need to use schedule_delayed_work() for waking readers
    	when a simple timer will do.
    
    Scheduling a plain timer, at next jiffies boundary, to do the wakeup
    causes a significant wakeup latency for the Userspace client, which makes
    relay less suitable for the high-frequency low-payload use cases where the
    data ge...
    26b5679e