haiku/headers/private/system/tls.h
Pawel Dziepak 44c0c4d3d0 runtime_loader: add support for ELF based TLS
This patch introduces support of ELF based TLS handling with lazy allocation
and initalization of TLS block for each DSO and thread. The implementation
generally follows the official ABI except that generation counter in dtv
is in fact a pointer to Generation object that contains both generation
counter and size of the dtv. That simplified the implementation a bit, but
could be changed later. The ABI requirements regariding in memory position
of TLS block is not honoured what results in static TLS model being
unsupported. However, that should not be a problem as long as
"executables" in Haiku are in fact shared objects and optimizations which
require specific TLS block in memory layout are not possible anyway.
2014-05-04 04:00:17 +02:00

33 lines
682 B
C

/*
* Copyright 2003-2009, Axel Dörfler, axeld@pinc-software.de.
* Distributed under the terms of the MIT License.
*/
#ifndef _KERNEL_TLS_H
#define _KERNEL_TLS_H
#include <support/TLS.h>
#define TLS_SIZE (TLS_MAX_KEYS * sizeof(void *))
enum {
TLS_BASE_ADDRESS_SLOT = 0,
// contains the address of the local storage space
TLS_THREAD_ID_SLOT,
TLS_ERRNO_SLOT,
TLS_ON_EXIT_THREAD_SLOT,
TLS_USER_THREAD_SLOT,
TLS_DYNAMIC_THREAD_VECTOR,
// Note: these entries can safely be changed between
// releases; 3rd party code always calls tls_allocate()
// to get a free slot
TLS_FIRST_FREE_SLOT
// the first free slot for user allocations
};
#endif /* _KERNEL_TLS_H */