[PATCH] sched: TASK_NONINTERACTIVE
This patch implements a task state bit (TASK_NONINTERACTIVE), which can be used by blocking points to mark the task's wait as "non-interactive". This does not mean the task will be considered a CPU-hog - the wait will simply not have an effect on the waiting task's priority - positive or negative alike. Right now only pipe_wait() will make use of it, because it's a common source of not-so-interactive waits (kernel compilation jobs, etc.). Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
		
				
					committed by
					
						
						Linus Torvalds
					
				
			
			
				
	
			
			
			
						parent
						
							95cdf3b799
						
					
				
				
					commit
					d79fc0fc66
				
			@@ -1260,6 +1260,16 @@ out_activate:
 | 
			
		||||
		p->activated = -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Tasks that have marked their sleep as noninteractive get
 | 
			
		||||
	 * woken up without updating their sleep average. (i.e. their
 | 
			
		||||
	 * sleep is handled in a priority-neutral manner, no priority
 | 
			
		||||
	 * boost and no penalty.)
 | 
			
		||||
	 */
 | 
			
		||||
	if (old_state & TASK_NONINTERACTIVE)
 | 
			
		||||
		__activate_task(p, rq);
 | 
			
		||||
	else
 | 
			
		||||
		activate_task(p, rq, cpu == this_cpu);
 | 
			
		||||
	/*
 | 
			
		||||
	 * Sync wakeups (i.e. those types of wakeups where the waker
 | 
			
		||||
	 * has indicated that it will leave the CPU in short order)
 | 
			
		||||
@@ -1268,7 +1278,6 @@ out_activate:
 | 
			
		||||
	 * the waker guarantees that the freshly woken up task is going
 | 
			
		||||
	 * to be considered on this CPU.)
 | 
			
		||||
	 */
 | 
			
		||||
	activate_task(p, rq, cpu == this_cpu);
 | 
			
		||||
	if (!sync || cpu != this_cpu) {
 | 
			
		||||
		if (TASK_PREEMPTS_CURR(p, rq))
 | 
			
		||||
			resched_task(rq->curr);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user