mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
* ctype/ctype.h (__ctype_b, __ctype_toupper, __ctype_tolower):
Variable declarations removed. (__ctype_b_loc, __ctype_toupper_loc, __ctype_tolower_loc): Declare these functions to replace them. (__isctype, tolower, toupper, _tolower, _toupper): Use those accessor functions plus an indirection rather than the old global variables. * include/ctype.h (__isctype, tolower, _tolower, toupper, _toupper): Macros removed. (__ctype_b_loc, __ctype_toupper_loc, __ctype_tolower_loc): New extern inline functions. * ctype/ctype-info.c: Revert last reversion back the other way. Define tsd vars CTYPE_B, CTYPE_TOLOWER, CTYPE_TOUPPER. Define real function versions of include/ctype.h inlines here. * ctype/Versions (libc: GLIBC_2.3): Add __ctype_b_loc, __ctype_tolower_loc, __ctype_toupper_loc. * locale/lc-ctype.c: Revert last reversion back the other way. (_nl_postload_ctype): If current thread uses the global locale, update its tsd vars. * locale/uselocale.c (__uselocale): Update tsd vars from new locale. * hurd/hurd/threadvar.h (enum __hurd_threadvar_index): Add CTYPE_B, CTYPE_TOLOWER, CTYPE_TOUPPER. * sysdeps/generic/bits/libc-tsd.h (__libc_tsd_address): New macro. * sysdeps/mach/hurd/bits/libc-tsd.h (__libc_tsd_address): Renamed from __libc_tsd_threadvar_location. (__libc_tsd_set, __libc_tsd_get): Update uses.
This commit is contained in:
@ -25,6 +25,9 @@ enum __libc_tsd_key_t { _LIBC_TSD_KEY_MALLOC = 0,
|
||||
_LIBC_TSD_KEY_DL_ERROR,
|
||||
_LIBC_TSD_KEY_RPC_VARS,
|
||||
_LIBC_TSD_KEY_LOCALE,
|
||||
_LIBC_TSD_KEY_CTYPE_B,
|
||||
_LIBC_TSD_KEY_CTYPE_TOLOWER,
|
||||
_LIBC_TSD_KEY_CTYPE_TOUPPER,
|
||||
_LIBC_TSD_KEY_N };
|
||||
|
||||
#include <tls.h>
|
||||
@ -39,6 +42,13 @@ enum __libc_tsd_key_t { _LIBC_TSD_KEY_MALLOC = 0,
|
||||
extern void *(*__libc_internal_tsd_get) (enum __libc_tsd_key_t) __THROW;
|
||||
extern int (*__libc_internal_tsd_set) (enum __libc_tsd_key_t,
|
||||
__const void *) __THROW;
|
||||
extern void **(*const __libc_internal_tsd_address) (enum __libc_tsd_key_t)
|
||||
__THROW __attribute__ ((__const__));
|
||||
|
||||
#define __libc_tsd_address(KEY) \
|
||||
(__libc_internal_tsd_address != NULL \
|
||||
? __libc_internal_tsd_address (_LIBC_TSD_KEY_##KEY) \
|
||||
: &__libc_tsd_##KEY##_data)
|
||||
|
||||
#define __libc_tsd_define(CLASS, KEY) CLASS void *__libc_tsd_##KEY##_data;
|
||||
#define __libc_tsd_get(KEY) \
|
||||
|
Reference in New Issue
Block a user