Date: Tue, 6 Jun 2006 01:13:53 +0800 From: MingyanGuo <guomingyan@gmail.com> To: "Robert Watson" <rwatson@freebsd.org> Cc: delphij@gmail.com, freebsd-arch@freebsd.org Subject: Re: Why use `thread' as an argument of Syscalls? Message-ID: <1fa17f810606051013m38cf08d7i82b6b11c7b119686@mail.gmail.com> In-Reply-To: <20060605165355.L50057@fledge.watson.org> References: <1fa17f810606050044k2847e4a2i150eb934ed84006f@mail.gmail.com> <Pine.GSO.4.64.0606050744190.13542@sea.ntplx.net> <1fa17f810606050608l5bd2ec5ch37663375f6fa5b64@mail.gmail.com> <Pine.GSO.4.64.0606051118180.14745@sea.ntplx.net> <20060605163559.N50057@fledge.watson.org> <448450FD.4030709@FreeBSD.org> <20060605165355.L50057@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 6/5/06, Robert Watson <rwatson@freebsd.org> wrote: > > > On Mon, 5 Jun 2006, Suleiman Souhlal wrote: > > > Robert Watson wrote: > >> > >> On Mon, 5 Jun 2006, Daniel Eischen wrote: > >> > >>>> They are the same questions, I think ;-). Now would you please > explain > >>>> "why use `proc' as an argument of Syscalls" to me :)? I've read > some > >>>> source code of the kernel, but no comments about it found. > >>> > >>> I don't know. Convention? It makes sense to me. > >> > >> Certainly consistency. Most system calls do actually use the argument > at > >> some point -- be it to look up a file descriptor, access control, or > the > >> like, and the calling context has it for free and in-hand anyway. > > > > But couldn't they just use curthread/curproc? > > In the past, in micro-benchmarking, I've measured a small performance hit > from > using per-cpu variables over variables already in the stack. However, > that > was quite a while ago, and I'm not entirely convinced the test results > were > valid. In the general case, it's pretty helpful to be able to pass in, > for > example, explicit credential references, as it means you can do acess > control > checks, auditing, accounting, etc, against arbitrary credentials rather > than > always against curthread->td_ucred. In a number of places, we pass > threads > down the stack where we mean to pass credentials, such as at several spots > in > the network stack. There are also places where the process is passed > around > so it can become a later argument to lockmgr() locking primitives, and > since > those are decreasingly used, the references are increasingly unnecessary. > > Robert N M Watson > Thanks. MingyanGuo -- Three passions, simple but overwhelmingly strong, have governed my life: the longing for love, the search for knowledge, and unbearable pity for the suffering of mankind. ---------Bertrand Russell
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1fa17f810606051013m38cf08d7i82b6b11c7b119686>