Date: Fri, 29 Mar 2002 12:28:59 -0800 (PST) From: Julian Elischer <julian@elischer.org> To: John Baldwin <jhb@FreeBSD.org> Cc: Robert Watson <rwatson@FreeBSD.ORG>, smp@FreeBSD.ORG, Bruce Evans <bde@zeta.org.au> Subject: Re: suser() API change patch Message-ID: <Pine.BSF.4.21.0203291219230.726-100000@InterJet.elischer.org> In-Reply-To: <XFMail.20020329113356.jhb@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 29 Mar 2002, John Baldwin wrote: > > On 29-Mar-2002 Robert Watson wrote: > > > > On Thu, 28 Mar 2002, Julian Elischer wrote: > > > >> On Thu, 28 Mar 2002, Bruce Evans wrote: > >> > suser(thread, flag) could still exist (named somthing like suser_flag()) > >> > if it is used enough to justify it. My main point is that the flag is > >> > rarely used, so the interface shouldn't be bloated to pass it. > >> > > >> > Another point: td->td_ucred can only be safely used without locking > >> > if td is curthread. Our current code mostly assumes this. suser(td) > >> > can easily check that td is curthread, but this is a silly reason to > >> > use a bloated interface. It is just bug for bug compatible with passing > >> > thread pointers around a lot. > >> > >> Bruce does have a point.. > > > > I'll be the first to admit that. It actually suggests the API should be: > > > > int suser(void); /* implicitly curthread */ > > int suser_flags(int flags); /* implicitly curthread */ > > int suser_cred(struct ucred *cred, int flags); > > Well, is this what everyone wants then? I can change it if this is what > everyone agrees to. In a similar vein, should I get rid of the first argument > for all the p_canfoo() functions when I change that API as well? I think that Bruce is right.. td->td_ucred is only defined for td == curthread. By removing the argument we stop it being misused.. unless of course you add a KASSERT() instead.. Which is better? To get curthread in the function or to pass it in as an argument? Peter said that the former is quite a bit slower, but I have no information on that. There is nothing to stop people using suser_cred() to do the wrong thing.. e.g. suser_cred(other_thread->td_ucred, ....) I like that interface if it can be shown to be efficient.. > > -- > > John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ > "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-smp" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0203291219230.726-100000>