On 07/30/2010 08:01 PM, Hans-Peter Diettrich wrote:
The only question is, whether you want the (absolute, flat) address of
the threadvar of an *specific* thread, or the address of the threadvar
in the *current* thread. Since the current thread can change, the
offset of the threadvar record will change accordingly, and must be
determined by the appropriate means (via segment or other address
register).
This is what threadvars are all about,. Of course the effective address
needs to be different for different threads (otherwise this would be
just static/global variables, as the virtual address mapping is defined
to be identical for all threads of an application).
The difference between the systems I checked seems to be that the
non-flat address (disregarding the Selector to be used) (this seems to
be what is stored in a pointer, assuming DS: in FPC) of the threadvars
in different threads is identical with X86/Linux and different with all
other systems. C can handle this by defining the pointer type
appropriately (with "__thread") while FPC does not seem to have this
ability.
-Michael
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel