Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Jul 2003 15:34:40 -0700 (PDT)
From:      Julian Elischer <julian@elischer.org>
To:        David Xu <davidxu@freebsd.org>
Cc:        marcel@xcllnt.net
Subject:   Re: KSD/TSD take 2 (was: KSE critical regions)
Message-ID:  <Pine.BSF.4.21.0307241514510.69488-100000@InterJet.elischer.org>
In-Reply-To: <002501c35230$1205be60$0701a8c0@tiger>

next in thread | previous in thread | raw e-mail | index | archive | help


On Fri, 25 Jul 2003, David Xu wrote:

> 
> ----- Original Message ----- 
> From: "Julian Elischer" <julian@elischer.org>
> To: <deischen@freebsd.org>
> Cc: <threads@freebsd.org>; "David Xu" <davidxu@freebsd.org>; <marcel@xcllnt.net>
> Sent: Friday, July 25, 2003 4:59 AM
> Subject: Re: KSD/TSD take 2 (was: KSE critical regions)
>  to the kernel.
> > 
> > In the i386 case, (and only the i386 case (unless the amd-64 case is the
> > same)) the KSE MAILBOX is what we are pointing %gs:0 at, and in that
> > case, the pointer to the TCB (not the thread mailbox) is stored there.
> > (and set there by the UTS when scheduling a thread).
> > 
> > Thus the struct kse_mailbox would have:
> > 
> > struct kse_mailbox { 
> > #ifdef __i386__
> >        void                    *TLS_tcb;       /* current TCB for TLS  */
> > #endif
> >        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 */
> >        [...]
> > 
> 
> userland can always adapt the layout by:
> 
>     struct lib_kse_mailbox {
>         void *TLS_tcb;
>         struct kse_mailbox kmbx;
>     };
> 
> and set base address to lib_kse_mailbox, userland can
> do whatever it wants to do. same thing can be done for
> thread mailbox.
> 
> I don't think too many fields not related to interaction
> between kernel and userland should be pushed into mailbox,
> it is too ugly.

I was hoping to optimise by making the kse_create(mboxaddr)
call allocate the LDT entry and set the gs register to point to the 
mailbox. making the two things differnt makes it less likely that
making that optimisation makes sense.

presently it requires special code to do the segments..
(in teh library)


> 
> David Xu
> 
> 
> 
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0307241514510.69488-100000>