void fastcall wake_up_new_task(task_t * p, unsigned long clone_flags) 
void fastcall wake_up_new_task(task_t *p, unsigned long clone_flags) 
void fastcall wake_up_new_task(task_t * p, unsigned long clone_flags){	unsigned long flags;	int this_cpu, cpu;	runqueue_t *rq, *this_rq;	rq = task_rq_lock(p, &flags);	BUG_ON(p->state != TASK_RUNNING);	this_cpu = smp_processor_id();	cpu = task_cpu(p);	/*	 * We decrease the sleep average of forking parents	 * and children as well, to keep max-interactive tasks	 * from forking tasks that are max-interactive. The parent	 * (current) is done further down, under its lock.	 */	p->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(p) *		CHILD_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS);	p->prio = effective_prio(p);	if (likely(cpu == this_cpu)) {		if (!(clone_flags & CLONE_VM)) {			/*			 * The VM isn't cloned, so we're in a good position to			 * do child-runs-first in anticipation of an exec. This			 * usually avoids a lot of COW overhead.			 */			if (unlikely(!current->array))				__activate_task(p, rq);			else {				p->prio = current->prio;				list_add_tail(&p->run_list, &current->run_list);				p->array = current->array;				p->array->nr_active++;				rq->nr_running++;			}			set_need_resched();		} else			/* Run child last */			__activate_task(p, rq);		/*		 * We skip the following code due to cpu == this_cpu	 	 *		 *   task_rq_unlock(rq, &flags);		 *   this_rq = task_rq_lock(current, &flags);		 */		this_rq = rq;	} else {		this_rq = cpu_rq(this_cpu);		/*		 * Not the local CPU - must adjust timestamp. This should		 * get optimised away in the !CONFIG_SMP case.		 */		p->timestamp = (p->timestamp - this_rq->timestamp_last_tick)					+ rq->timestamp_last_tick;		__activate_task(p, rq);		if (TASK_PREEMPTS_CURR(p, rq))			resched_task(rq->curr);		/*		 * Parent and child are on different CPUs, now get the		 * parent runqueue to update the parent's ->sleep_avg:		 */		task_rq_unlock(rq, &flags);		this_rq = task_rq_lock(current, &flags);	}	current->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(current) *		PARENT_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS);	task_rq_unlock(this_rq, &flags);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/95cdf3b799a481969a48d69a1a52916ad5da6694/sched.c/clean/kernel/sched.c