On 09-Jul-2002 John Baldwin wrote:
> On 09-Jul-2002 Julian Elischer wrote:
>> A question to those who know..
>> why is userret() called both at the end of trap() or syscall()
>> and also almost immediatly again (often) at the end of ast().
> ast() is really a special form of a trap that is triggered by doing
> a last-minute type check on return to userland to see if we still
> have work to do.
>> It seems that really there is no one place that one can put code that will
>> be called ONCE and ONLY ONCE as a thread progresses to userland.
> Sure there is.  When you want an action done, set a thread flag marking
> the request and set TDF_ASTPENDING.  Then handle it in ast() if the flag
> is set.

Or, if this needs to happen on every return and not conditionally,
then do it in userret() and use the state of a variable or some flag
to note when you've already done it.


John Baldwin <[EMAIL PROTECTED]>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to