Make kick_process public
PATCH 3/28 Make kick_process public
Make kick_process public
kick_process is common code; move it to scheduler.c
Signed-off-by Con Kolivas <[email protected]>
kernel/sched.c +0 -96
@@ -901,24 +901,6 @@ repeat:task_rq_unlock (rq, &flags); } -/*** -* kick_process - kick a running thread to enter/exit the kernel -* @p: the to-be-kicked thread -* -* Cause a process which is running on another CPU to enter -* kernel-mode, without any delay. (to get signals handled.) -*/ -void kick_process (task_t *p) -{ -int cpu; - -preempt_disable (); - cpu =task_cpu (p); -if ((cpu !=smp_processor_id ()) &&task_curr (p)) -smp_send_reschedule (cpu); -preempt_enable (); -} -/* * Return a low guess at the load of a migration-source cpu. *
@@ -2618,38 +2600,6 @@ static inline int dependent_sleeper(int }#endif -#if defined(CONFIG_PREEMPT ) && defined(CONFIG_DEBUG_PREEMPT ) - -void fastcall add_preempt_count(int val) -{ -/* -* Underflow? -*/ -BUG_ON (((int )preempt_count () <0 )); -preempt_count () += val; -/* -* Spinlock count overflowing soon? -*/ -BUG_ON ((preempt_count () &PREEMPT_MASK ) >=PREEMPT_MASK -10 ); -} -EXPORT_SYMBOL (add_preempt_count); - -void fastcall sub_preempt_count(int val) -{ -/* -* Underflow? -*/ -BUG_ON (val >preempt_count ()); -/* -* Is the spinlock portion underflowing? -*/ -BUG_ON ((val <PREEMPT_MASK ) && !(preempt_count () &PREEMPT_MASK )); -preempt_count () -= val; -} -EXPORT_SYMBOL (sub_preempt_count); - -#endif -/* * schedule() is the main scheduler function. */
@@ -2826,52 +2776,6 @@ switch_tasks: goto need_resched; } -#ifdef CONFIG_PREEMPT -/* -* this is is the entry point to schedule() from in-kernel preemption -* off of preempt_enable. Kernel preemptions off return from interrupt -* occur there and call schedule directly. -*/ -asmlinkage void __sched preempt_schedule(void) -{ -struct thread_info *ti =current_thread_info (); -#ifdef CONFIG_PREEMPT_BKL -struct task_struct *task = current; -int saved_lock_depth; -#endif -/* -* If there is a non-zero preempt_count or interrupts are disabled, -* we do not want to preempt the current task. Just return.. -*/ -if (unlikely (ti->preempt_count ||irqs_disabled ())) -return ; - -need_resched: -add_preempt_count (PREEMPT_ACTIVE ); -/* -* We keep the big kernel semaphore locked, but we -* clear ->lock_depth so that schedule() doesnt -* auto-release the semaphore: -*/ -#ifdef CONFIG_PREEMPT_BKL - saved_lock_depth = task->lock_depth; - task->lock_depth =-1 ; -#endif -schedule (); -#ifdef CONFIG_PREEMPT_BKL - task->lock_depth = saved_lock_depth; -#endif -sub_preempt_count (PREEMPT_ACTIVE ); - -/* we could miss a preemption opportunity between schedule and now */ -barrier (); -if (unlikely (test_thread_flag (TIF_NEED_RESCHED ))) - goto need_resched; -} - -EXPORT_SYMBOL (preempt_schedule); -#endif /* CONFIG_PREEMPT */ -int default_wake_function (wait_queue_t *curr,unsigned mode,int sync,void *key) {task_t *p = curr->task;
kernel/scheduler.c +20 -0
@@ -43,6 +43,26 @@ DEFINE_PER_CPU(struct kernel_stat, kstat);EXPORT_PER_CPU_SYMBOL (kstat); +#ifdef CONFIG_SMP +/*** +* kick_process - kick a running thread to enter/exit the kernel +* @p: the to-be-kicked thread +* +* Cause a process which is running on another CPU to enter +* kernel-mode, without any delay. (to get signals handled.) +*/ +void kick_process (task_t *p) +{ +int cpu; + +preempt_disable (); + cpu =task_cpu (p); +if ((cpu !=smp_processor_id ()) &&task_curr (p)) +smp_send_reschedule (cpu); +preempt_enable (); +} +#endif +extern struct sched_drv ingo_sched_drv;static const struct sched_drv *scheduler = &ingo_sched_drv;