um: pull interrupt_end() into userspace()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
parent
1bfa2317b2
commit
b8a4209523
@ -151,12 +151,10 @@ void new_thread_handler(void)
|
|||||||
* 0 if it just exits
|
* 0 if it just exits
|
||||||
*/
|
*/
|
||||||
n = run_kernel_thread(fn, arg, ¤t->thread.exec_buf);
|
n = run_kernel_thread(fn, arg, ¤t->thread.exec_buf);
|
||||||
if (n == 1) {
|
if (n == 1)
|
||||||
/* Handle any immediate reschedules or signals */
|
|
||||||
interrupt_end();
|
|
||||||
userspace(¤t->thread.regs.regs);
|
userspace(¤t->thread.regs.regs);
|
||||||
}
|
else
|
||||||
else do_exit(0);
|
do_exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Called magically, see new_thread_handler above */
|
/* Called magically, see new_thread_handler above */
|
||||||
@ -175,9 +173,6 @@ void fork_handler(void)
|
|||||||
|
|
||||||
current->thread.prev_sched = NULL;
|
current->thread.prev_sched = NULL;
|
||||||
|
|
||||||
/* Handle any immediate reschedules or signals */
|
|
||||||
interrupt_end();
|
|
||||||
|
|
||||||
userspace(¤t->thread.regs.regs);
|
userspace(¤t->thread.regs.regs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -347,6 +347,9 @@ void userspace(struct uml_pt_regs *regs)
|
|||||||
/* To prevent races if using_sysemu changes under us.*/
|
/* To prevent races if using_sysemu changes under us.*/
|
||||||
int local_using_sysemu;
|
int local_using_sysemu;
|
||||||
|
|
||||||
|
/* Handle any immediate reschedules or signals */
|
||||||
|
interrupt_end();
|
||||||
|
|
||||||
if (getitimer(ITIMER_VIRTUAL, &timer))
|
if (getitimer(ITIMER_VIRTUAL, &timer))
|
||||||
printk(UM_KERN_ERR "Failed to get itimer, errno = %d\n", errno);
|
printk(UM_KERN_ERR "Failed to get itimer, errno = %d\n", errno);
|
||||||
nsecs = timer.it_value.tv_sec * UM_NSEC_PER_SEC +
|
nsecs = timer.it_value.tv_sec * UM_NSEC_PER_SEC +
|
||||||
|
Loading…
Reference in New Issue
Block a user