Remove __NO_TLS.
All supported platforms support thread-local vars and __thread. Reviewed by: emaste Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D28796
This commit is contained in:
parent
f695e96067
commit
3ae8d83d04
@ -88,7 +88,7 @@ typedef struct {
|
|||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
extern const _RuneLocale _DefaultRuneLocale;
|
extern const _RuneLocale _DefaultRuneLocale;
|
||||||
extern const _RuneLocale *_CurrentRuneLocale;
|
extern const _RuneLocale *_CurrentRuneLocale;
|
||||||
#if defined(__NO_TLS) || defined(__RUNETYPE_INTERNAL)
|
#ifdef __RUNETYPE_INTERNAL
|
||||||
extern const _RuneLocale *__getCurrentRuneLocale(void);
|
extern const _RuneLocale *__getCurrentRuneLocale(void);
|
||||||
#else
|
#else
|
||||||
extern _Thread_local const _RuneLocale *_ThreadRuneLocale;
|
extern _Thread_local const _RuneLocale *_ThreadRuneLocale;
|
||||||
@ -99,7 +99,7 @@ static __inline const _RuneLocale *__getCurrentRuneLocale(void)
|
|||||||
return _ThreadRuneLocale;
|
return _ThreadRuneLocale;
|
||||||
return _CurrentRuneLocale;
|
return _CurrentRuneLocale;
|
||||||
}
|
}
|
||||||
#endif /* __NO_TLS || __RUNETYPE_INTERNAL */
|
#endif /*__RUNETYPE_INTERNAL */
|
||||||
#define _CurrentRuneLocale (__getCurrentRuneLocale())
|
#define _CurrentRuneLocale (__getCurrentRuneLocale())
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
|
@ -40,13 +40,8 @@ __FBSDID("$FreeBSD$");
|
|||||||
#include "utxdb.h"
|
#include "utxdb.h"
|
||||||
#include "un-namespace.h"
|
#include "un-namespace.h"
|
||||||
|
|
||||||
#ifdef __NO_TLS
|
|
||||||
static FILE *uf = NULL;
|
|
||||||
static int udb;
|
|
||||||
#else
|
|
||||||
static _Thread_local FILE *uf = NULL;
|
static _Thread_local FILE *uf = NULL;
|
||||||
static _Thread_local int udb;
|
static _Thread_local int udb;
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
int
|
||||||
setutxdb(int db, const char *file)
|
setutxdb(int db, const char *file)
|
||||||
|
@ -128,11 +128,7 @@ utx_to_futx(const struct utmpx *ut, struct futx *fu)
|
|||||||
struct utmpx *
|
struct utmpx *
|
||||||
futx_to_utx(const struct futx *fu)
|
futx_to_utx(const struct futx *fu)
|
||||||
{
|
{
|
||||||
#ifdef __NO_TLS
|
|
||||||
static struct utmpx *ut;
|
|
||||||
#else
|
|
||||||
static _Thread_local struct utmpx *ut;
|
static _Thread_local struct utmpx *ut;
|
||||||
#endif
|
|
||||||
|
|
||||||
if (ut == NULL) {
|
if (ut == NULL) {
|
||||||
ut = calloc(1, sizeof *ut);
|
ut = calloc(1, sizeof *ut);
|
||||||
|
@ -56,12 +56,10 @@ __FBSDID("$FreeBSD$");
|
|||||||
|
|
||||||
#undef _CurrentRuneLocale
|
#undef _CurrentRuneLocale
|
||||||
extern _RuneLocale const *_CurrentRuneLocale;
|
extern _RuneLocale const *_CurrentRuneLocale;
|
||||||
#ifndef __NO_TLS
|
|
||||||
/*
|
/*
|
||||||
* A cached version of the runes for this thread. Used by ctype.h
|
* A cached version of the runes for this thread. Used by ctype.h
|
||||||
*/
|
*/
|
||||||
_Thread_local const _RuneLocale *_ThreadRuneLocale;
|
_Thread_local const _RuneLocale *_ThreadRuneLocale;
|
||||||
#endif
|
|
||||||
|
|
||||||
extern int __mb_sb_limit;
|
extern int __mb_sb_limit;
|
||||||
|
|
||||||
@ -199,7 +197,6 @@ __wrap_setrunelocale(const char *locale)
|
|||||||
return (_LDP_LOADED);
|
return (_LDP_LOADED);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef __NO_TLS
|
|
||||||
void
|
void
|
||||||
__set_thread_rune_locale(locale_t loc)
|
__set_thread_rune_locale(locale_t loc)
|
||||||
{
|
{
|
||||||
@ -212,7 +209,6 @@ __set_thread_rune_locale(locale_t loc)
|
|||||||
_ThreadRuneLocale = XLOCALE_CTYPE(loc)->runes;
|
_ThreadRuneLocale = XLOCALE_CTYPE(loc)->runes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void *
|
void *
|
||||||
__ctype_load(const char *locale, locale_t unused __unused)
|
__ctype_load(const char *locale, locale_t unused __unused)
|
||||||
|
@ -55,12 +55,11 @@ extern struct xlocale_component __xlocale_global_messages;
|
|||||||
extern struct xlocale_component __xlocale_C_collate;
|
extern struct xlocale_component __xlocale_C_collate;
|
||||||
extern struct xlocale_component __xlocale_C_ctype;
|
extern struct xlocale_component __xlocale_C_ctype;
|
||||||
|
|
||||||
#ifndef __NO_TLS
|
|
||||||
/*
|
/*
|
||||||
* The locale for this thread.
|
* The locale for this thread.
|
||||||
*/
|
*/
|
||||||
_Thread_local locale_t __thread_locale;
|
_Thread_local locale_t __thread_locale;
|
||||||
#endif
|
|
||||||
/*
|
/*
|
||||||
* Flag indicating that one or more per-thread locales exist.
|
* Flag indicating that one or more per-thread locales exist.
|
||||||
*/
|
*/
|
||||||
@ -143,16 +142,6 @@ get_thread_locale(void)
|
|||||||
pthread_getspecific(locale_info_key));
|
pthread_getspecific(locale_info_key));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __NO_TLS
|
|
||||||
locale_t
|
|
||||||
__get_locale(void)
|
|
||||||
{
|
|
||||||
locale_t l = get_thread_locale();
|
|
||||||
return (l ? l : &__xlocale_global_locale);
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_thread_locale(locale_t loc)
|
set_thread_locale(locale_t loc)
|
||||||
{
|
{
|
||||||
@ -172,10 +161,8 @@ set_thread_locale(locale_t loc)
|
|||||||
} else {
|
} else {
|
||||||
pthread_setspecific(locale_info_key, l);
|
pthread_setspecific(locale_info_key, l);
|
||||||
}
|
}
|
||||||
#ifndef __NO_TLS
|
|
||||||
__thread_locale = l;
|
__thread_locale = l;
|
||||||
__set_thread_rune_locale(loc);
|
__set_thread_rune_locale(loc);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -185,7 +185,7 @@ void __set_thread_rune_locale(locale_t loc);
|
|||||||
* locale has ever been set, then we always use the global locale.
|
* locale has ever been set, then we always use the global locale.
|
||||||
*/
|
*/
|
||||||
extern int __has_thread_locale;
|
extern int __has_thread_locale;
|
||||||
#ifndef __NO_TLS
|
|
||||||
/**
|
/**
|
||||||
* The per-thread locale. Avoids the need to use pthread lookup functions when
|
* The per-thread locale. Avoids the need to use pthread lookup functions when
|
||||||
* getting the per-thread locale.
|
* getting the per-thread locale.
|
||||||
@ -206,9 +206,6 @@ static inline locale_t __get_locale(void)
|
|||||||
}
|
}
|
||||||
return (__thread_locale ? __thread_locale : &__xlocale_global_locale);
|
return (__thread_locale ? __thread_locale : &__xlocale_global_locale);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
locale_t __get_locale(void);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Two magic values are allowed for locale_t objects. NULL and -1. This
|
* Two magic values are allowed for locale_t objects. NULL and -1. This
|
||||||
|
@ -128,16 +128,11 @@ strerror_r(int errnum, char *strerrbuf, size_t buflen)
|
|||||||
char *
|
char *
|
||||||
strerror_l(int num, locale_t locale)
|
strerror_l(int num, locale_t locale)
|
||||||
{
|
{
|
||||||
#ifndef __NO_TLS
|
|
||||||
static _Thread_local char ebuf[NL_TEXTMAX];
|
static _Thread_local char ebuf[NL_TEXTMAX];
|
||||||
|
|
||||||
if (strerror_rl(num, ebuf, sizeof(ebuf), locale) != 0)
|
if (strerror_rl(num, ebuf, sizeof(ebuf), locale) != 0)
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
return (ebuf);
|
return (ebuf);
|
||||||
#else
|
|
||||||
errno = ENOTSUP;
|
|
||||||
return (NULL);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
|
@ -174,16 +174,6 @@ supplementary_error(OM_uint32 v)
|
|||||||
return msgs[v];
|
return msgs[v];
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__NO_TLS)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* These platforms don't support TLS on FreeBSD - threads will just
|
|
||||||
* have to step on each other's error values for now.
|
|
||||||
*/
|
|
||||||
#define __thread
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct mg_thread_ctx {
|
struct mg_thread_ctx {
|
||||||
gss_OID mech;
|
gss_OID mech;
|
||||||
OM_uint32 maj_stat;
|
OM_uint32 maj_stat;
|
||||||
|
@ -768,10 +768,6 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif /* __STDC_WANT_LIB_EXT1__ */
|
#endif /* __STDC_WANT_LIB_EXT1__ */
|
||||||
|
|
||||||
#if defined(__powerpc64__) && (!defined(_CALL_ELF) || _CALL_ELF == 1)
|
|
||||||
#define __NO_TLS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Old versions of GCC use non-standard ARM arch symbols; acle-compat.h
|
* Old versions of GCC use non-standard ARM arch symbols; acle-compat.h
|
||||||
* translates them to __ARM_ARCH and the modern feature symbols defined by ARM.
|
* translates them to __ARM_ARCH and the modern feature symbols defined by ARM.
|
||||||
|
@ -133,7 +133,6 @@ def __COPYRIGHT(s): return __IDSTRING(__CONCAT(__copyright_,__LINE__),s)
|
|||||||
__XSI_VISIBLE = 700
|
__XSI_VISIBLE = 700
|
||||||
__BSD_VISIBLE = 1
|
__BSD_VISIBLE = 1
|
||||||
__ISO_C_VISIBLE = 2011
|
__ISO_C_VISIBLE = 2011
|
||||||
__NO_TLS = 1
|
|
||||||
CRYPTO_DRIVERS_INITIAL = 4
|
CRYPTO_DRIVERS_INITIAL = 4
|
||||||
CRYPTO_SW_SESSIONS = 32
|
CRYPTO_SW_SESSIONS = 32
|
||||||
NULL_HASH_LEN = 16
|
NULL_HASH_LEN = 16
|
||||||
|
Loading…
Reference in New Issue
Block a user