Skip site navigation (1)Skip section navigation (2)
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>