Date: Tue, 9 Jul 2002 07:20:39 -0700 (PDT) From: David Xu <bsddiy@yahoo.com> To: John Baldwin <jhb@FreeBSD.ORG> Cc: FreeBSD current users <current@FreeBSD.ORG>, Julian Elischer <julian@elischer.org> Subject: Re: userret() , ast() and the end of syscalls Message-ID: <20020709142039.80050.qmail@web20904.mail.yahoo.com>
next in thread | raw e-mail | index | archive | help
----- Original Message ----- From: "John Baldwin" <jhb@FreeBSD.ORG> To: "John Baldwin" <jhb@FreeBSD.ORG> Cc: "FreeBSD current users" <current@FreeBSD.ORG>; "FreeBSD current users" <current@FreeBSD.ORG>; "Julian Elischer" <julian@elischer.org> Sent: Tuesday, July 09, 2002 8:40 PM Subject: RE: userret() , ast() and the end of syscalls > > 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 <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ > "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ hope this won't increase per-thread memory requirement, I would like to create more threads using same memory size. :) David Xu __________________________________________________ Do You Yahoo!? Sign up for SBC Yahoo! Dial - First Month Free http://sbc.yahoo.com To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020709142039.80050.qmail>