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