Why use `thread' as an argument of Syscalls?

MingyanGuo guomingyan at gmail.com
Mon Jun 5 10:14:19 PDT 2006


On 6/5/06, Robert Watson <rwatson at 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


More information about the freebsd-arch mailing list