Files
haiku-beta6/headers/private/system/tls.h
T
Augustin Cavalier 69cb8e25ff libroot/posix: Add glue code, global caching logic, and integrate OpenBSD malloc.
* PagesAllocator: A process-global caching strategy for the allocator.
   It deals with allocating virtual addresses and memory, and gives us
   back some of the performance that's lost by having an actual
   decommitment strategy (which the hoard2 glue code doesn't.)

   It uses two SplayTrees to manage free lists, and resizes areas
   on allocate if they aren't next to a free chunk (which saves a lot of
   time for large reallocations.)

   There's still room for improvement here, see inline TODOs. But overall
   we get pretty good performance with it.

 * Add a TLS slot for the allocator glue to use. Right now it just puts
   integers in there (since thread IDs are not evenly distributed),
   but we could put a data structure pointer in there as well, potentially.

Change-Id: I56ddb0b022a468dc04275075ed7e174b339c8ca4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8335
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2025-02-13 22:43:57 +00:00

36 lines
774 B
C

/*
* Copyright 2003-2009, Axel Dörfler, [email protected].
* 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 *))
#define TLS_COMPAT_SIZE (TLS_MAX_KEYS * sizeof(uint32))
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,
TLS_MALLOC_SLOT,
TLS_LOCALE_SLOT,
// 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 */