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

Reply via email to