Hi ,
I have a question about user preemption in Solaris.
As I known, user preemptions are happened when the kernel returns from a
trap, a interrupt handler or a system call.
Checking with openSolaris code, I can find preempt is called by
post_syscall as below:
http://cvs.opensolaris.org/source/xref/on/usr/src/uts/intel/ia32/os/syscall.c#712
438 /*
439 * Post-syscall processing. Perform abnormal system call completion
440 * actions such as /proc tracing, profiling, signals,
preemption, etc.
441 *
442 * This routine is called only if t_post_sys, t_sig_check, or
t_astflag is set.
443 * Any condition requiring pre-syscall handling must set one of
these.
444 * If the condition is persistent, this routine will repost
t_post_sys.
445 */
446 void
447 post_syscall(long rval1, long rval2)
448 {
...............................................................................
...............................................................................
712 if (CPU->cpu_runrun)
713 preempt();
I also can find preempt is called by trap.c, but I couldn't find it from
x86's interrupt.s :
http://cvs.opensolaris.org/source/xref/on/usr/src/uts/i86pc/ml/interrupt.s
Comparing with x86, I can find "call preempt" in interrupt.s code of
sparc:
http://cvs.opensolaris.org/source/xref/on/usr/src/uts/sun4/ml/interrupt.s#753
So my question is, what's wrong with x86's interrupt.s? Is it a bug?
--
Cheers,
----------------------------------------------------------------------
Oliver Yang | OPG Engineering Operation | [EMAIL PROTECTED] | x82229
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code