Date: Fri, 22 Feb 2002 11:29:15 -0800 (PST) From: Matthew Dillon <dillon@apollo.backplane.com> To: Julian Elischer <julian@elischer.org> Cc: John Baldwin <jhb@FreeBSD.ORG>, arch@FreeBSD.ORG Subject: Re: RE: that INVARIANT/ucred freeing stuff. Message-ID: <200202221929.g1MJTFI20465@apollo.backplane.com> References: <Pine.BSF.4.21.0202221109330.74100-100000@InterJet.elischer.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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.
-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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200202221929.g1MJTFI20465>
