Date: Fri, 18 Jul 2003 16:06:33 -0400 (EDT) From: Daniel Eischen <eischen@vigrid.com> To: Julian Elischer <julian@elischer.org> Cc: threads@freebsd.org Subject: Re: Rearranging kse mailbox Message-ID: <Pine.GSO.4.10.10307181556270.21549-100000@pcnet5.pcnet.com> In-Reply-To: <Pine.BSF.4.21.0307181248390.14696-100000@InterJet.elischer.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 18 Jul 2003, Julian Elischer wrote: > for TLS we need to ensure that the first few (actually, 1 but a couple > more can't hurt) entry in the KSE mailbox is available as a pointer to > the TLS. (on 386 at least). Marcel probablyt has more to say on the > topic. OK. We really want the version as the first field, but if it can't be that way, we'll have to move it down a tad. This also reminds me. We need to add the per-KSE storage and size to the KSE mailbox so the kernel can do the LDT allocation (for i386 and amd64). > Also, in the latest version I assume there is still a KSE mailbox for > 1:1 threads, as it'll be needed for TLS. (is there still a pair of > mailboxen for bound, NON-SA threads?) (even if not used..?) Yes, there is. Both the thread and KSE mailbox are used for bound threads. > > > > On Fri, 18 Jul 2003, Daniel Eischen wrote: > > > Before we switch from libkse to libpthread, let's take a look > > at the mailboxes and see if we want to reorder them for better > > alignment. > > > > I took a cut at it. I moved the context from the beginning > > of the thread mailbox to the end since it was the largest > > field and most likely to change (for non-i386 archs). > > > > struct kse_thr_mailbox { > > struct kse_thr_mailbox *tm_next; /* Next thread in list */ > > void *tm_udata; /* For use by the UTS */ > > uint32_t tm_flags; /* Thread flags */ > > uint32_t tm_uticks; > > uint32_t tm_sticks; > > uint32_t tm_spare2[9]; > > siginfo_t tm_syncsig; > > ucontext_t tm_context; /* User and machine context */ > > }; > > > > struct kse_mailbox { > > uint32_t km_version; /* Mailbox version */ > > uint32_t km_flags; /* KSE flags */ > > struct kse_thr_mailbox *km_curthread; /* Currently running thread */ > > struct kse_thr_mailbox *km_completed; /* Threads back from kernel */ > > sigset_t km_sigscaught; /* Caught signals */ > > kse_func_t *km_func; /* UTS function */ > > stack_t km_stack; /* UTS context */ > > void *km_udata; /* For use by the UTS */ > > struct timespec km_timeofday; /* Time of day */ > > int32_t km_quantum; /* Upcall quantum in msecs */ > > uint32_t km_spare[8]; > > }; struct kse_mailbox { void *km_spare1[4]; /* Allocated for TLS */ uint32_t km_version; /* Mailbox version */ uint32_t km_flags; /* KSE flags */ struct kse_thr_mailbox *km_curthread; /* Currently running thread */ struct kse_thr_mailbox *km_completed; /* Threads back from kernel */ sigset_t km_sigscaught; /* Caught signals */ kse_func_t *km_func; /* UTS function */ stack_t km_stack; /* UTS context */ void *km_udata; /* For use by the UTS */ struct timespec km_timeofday; /* Time of day */ void *km_ksdaddr; /* KSE specific data address */ uint32_t km_ksdsize; /* KSE specific data size */ int32_t km_quantum; /* Upcall quantum in msecs */ uint32_t km_spare[8]; }; -- Dan Eischen
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.10.10307181556270.21549-100000>