Date: Fri, 25 Jul 2003 06:08:08 +0800 From: "David Xu" <davidxu@freebsd.org> To: "Julian Elischer" <julian@elischer.org>, <deischen@freebsd.org> Cc: marcel@xcllnt.net Subject: Re: KSD/TSD take 2 (was: KSE critical regions) Message-ID: <002501c35230$1205be60$0701a8c0@tiger> References: <Pine.BSF.4.21.0307241229170.69488-100000@InterJet.elischer.org>
next in thread | previous in thread | raw e-mail | index | archive | help
----- Original Message -----=20 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. >=20 > 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). >=20 > Thus the struct kse_mailbox would have: >=20 > struct kse_mailbox {=20 > #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 */ > [...] >=20 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. David Xu
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?002501c35230$1205be60$0701a8c0>