Date: Fri, 22 Feb 2002 11:34:48 -0800 (PST) From: Julian Elischer <julian@elischer.org> To: Matthew Dillon <dillon@apollo.backplane.com> Cc: John Baldwin <jhb@FreeBSD.ORG>, arch@FreeBSD.ORG Subject: Re: RE: that INVARIANT/ucred freeing stuff. Message-ID: <Pine.BSF.4.21.0202221133550.74100-100000@InterJet.elischer.org> In-Reply-To: <200202221929.g1MJTFI20465@apollo.backplane.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 22 Feb 2002, Matthew Dillon wrote:
> Sigh. Well, if you really want. I don't like the idea of
> the size of the thread structure changing just due to someone
> turning on or off DIAGNOSTIC though.
>
I'LL JUST THROW IN A DUMMY (Geez, bloody capslock)..
> -Matt
>
> :OK here is my suggestion:
> :
> :We add extra code under DIAGNOSTIC
> :the code does:
> :
> :in proc.h
> :
> :add a field to thread of:
> :#ifdef DIAGNOSTIC
> : td_ucred_cache
> :#endif /* DIAGNOSTIC */
> :
> :
> :on texiting the kernel:
> :
> :#ifdef DIAGNOSTIC
> : if (td->td_ucred_cache)
> : panic("thread already has cached ucred");
> : td->td_ucred_cache = td->td_ucred;
> : td->td_ucred = NULL;
> :#endif /* DIAGNOSTIC */
> :
> :
> :on entering the kernel we do:
> :
> :
> :#ifdef DIAGNOSTIC
> : if (td->td_ucred)
> : panic("thread got a cred form somewhere in userspace");
> : td->td_cred = td->td_ucred_cache;
> : td->td_ucred_cache = NULL;
> :#endif /* DIAGNOSTIC */
> : if (td->ucred != p->p_ucred)
> : cred_update_thread(td);
> :
> :we get good performance even when it it is optionned in and
> :still have a NULL ucred pointer when in user space when DIAGNOSTIC
> :is turned on. With no DIAGNOSTICS we get the best performance,
> :and don't even bother to shift the reference.
>
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-arch" in the body of the message
>
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" 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.0202221133550.74100-100000>
