26.07.2010 13:04, Michael Schnell:
On 07/24/2010 06:55 PM, Nikolai Zhubr wrote:
I think only FS selector (and/or descriptor) varies across threads.
Seemingly not the selector value (the FS content seems to stay constant
among the threads), but the table entry it selects.
You are right. Just verified here too. Seems a bit illogical, especially
as 3B is a GDT (not LDT) selector, therefore it's not subject to
automatic substitution upon task switch. The scheduler patching GDT
entry on every task switch is IMHO too crazy. It might be that FS's
(descriptor) base points to some non-shared region of linear address
space, so that different threads have different paging tables (It might
be alpha's relict, whatever)
Anyway. MS designed it in those ancient times when they still cared that
their NT OS was technically good. Both delphi and gcc use this
mechanism. Therefore, I'd suppose it probably makes some sense. (I don't
have time to get deep into it right now myself, and not that I'm going
to push anyone, especially developers, but I still don't see a reason
why it couldn't be employed in FPC eventually)
Nikolai
-Michael
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel