mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-31 22:10:34 +03:00 
			
		
		
		
	This patch adds the tss_* definitions from C11 threads (ISO/IEC 9899:2011),
more specifically tss_create, tss_delete, tss_get, tss_set, and required
types.
Mostly of the definitions are composed based on POSIX conterparts, including
tss_t (pthread_key_t).
Checked with a build for all major ABI (aarch64-linux-gnu, alpha-linux-gnu,
arm-linux-gnueabi, i386-linux-gnu, ia64-linux-gnu, m68k-linux-gnu,
microblaze-linux-gnu [1], mips{64}-linux-gnu, nios2-linux-gnu,
powerpc{64le}-linux-gnu, s390{x}-linux-gnu, sparc{64}-linux-gnu,
and x86_64-linux-gnu).
Also ran a full check on aarch64-linux-gnu, x86_64-linux-gnu, i686-linux-gnu,
arm-linux-gnueabhf, and powerpc64le-linux-gnu.
	[BZ #14092]
	* conform/data/threads.h-data (thread_local): New macro.
	(TSS_DTOR_ITERATIONS): Likewise.
	(tss_t): New type.
	(tss_dtor_t): Likewise.
	(tss_create): New function.
	(tss_get): Likewise.
	(tss_set): Likewise.
	(tss_delete): Likewise.
	* nptl/Makefile (libpthread-routines): Add tss_create, tss_delete,
	tss_get, and tss_set objects.
	* nptl/Versions (libpthread) [GLIBC_2.28]: Likewise.
	* nptl/tss_create.c: New file.
	* nptl/tss_delete.c: Likewise.
	* nptl/tss_get.c: Likewise.
	* nptl/tss_set.c: Likewise.
	* sysdeps/nptl/threads.h (thread_local): New define.
	(TSS_DTOR_ITERATIONS): Likewise.
	(tss_t): New typedef.
	(tss_dtor_t): Likewise.
	(tss_create): New prototype.
	(tss_get): Likewise.
	(tss_set): Likewise.
	(tss_delete): Likewise.
		
	
		
			
				
	
	
		
			289 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			289 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| libc {
 | |
|   GLIBC_2.0 {
 | |
|     pthread_attr_destroy; pthread_attr_init;
 | |
|     pthread_attr_getdetachstate; pthread_attr_setdetachstate;
 | |
|     pthread_attr_getinheritsched; pthread_attr_setinheritsched;
 | |
|     pthread_attr_getschedparam; pthread_attr_setschedparam;
 | |
|     pthread_attr_getschedpolicy;  pthread_attr_setschedpolicy;
 | |
|     pthread_attr_getscope; pthread_attr_setscope;
 | |
|     pthread_condattr_destroy; pthread_condattr_init;
 | |
|     pthread_cond_broadcast; pthread_cond_destroy;
 | |
|     pthread_cond_init; pthread_cond_signal; pthread_cond_wait;
 | |
|     pthread_cond_timedwait;
 | |
|     pthread_equal; pthread_exit;
 | |
|     pthread_getschedparam; pthread_setschedparam;
 | |
|     pthread_mutex_destroy; pthread_mutex_init;
 | |
|     pthread_mutex_lock; pthread_mutex_unlock;
 | |
|     pthread_self;
 | |
|     pthread_setcancelstate; pthread_setcanceltype;
 | |
|   }
 | |
|   GLIBC_2.1 {
 | |
|     pthread_attr_init;
 | |
|   }
 | |
|   GLIBC_2.3.2 {
 | |
|     __register_atfork;
 | |
| 
 | |
|     # Changed pthread_cond_t.
 | |
|     pthread_cond_init; pthread_cond_destroy;
 | |
|     pthread_cond_wait; pthread_cond_signal;
 | |
|     pthread_cond_broadcast; pthread_cond_timedwait;
 | |
|   }
 | |
|   # C11 thread symbols.
 | |
|   GLIBC_2.28 {
 | |
|     thrd_current; thrd_equal; thrd_sleep; thrd_yield;
 | |
|   }
 | |
|   GLIBC_PRIVATE {
 | |
|     __libc_alloca_cutoff;
 | |
|     # Internal libc interface to libpthread
 | |
|     __libc_dl_error_tsd;
 | |
|     __libc_vfork;
 | |
|     __libc_pthread_init;
 | |
|     __libc_current_sigrtmin_private; __libc_current_sigrtmax_private;
 | |
|     __libc_allocate_rtsig_private;
 | |
|   }
 | |
| }
 | |
| 
 | |
| libpthread {
 | |
|   GLIBC_2.0 {
 | |
|     pthread_create; pthread_join; pthread_self; pthread_equal;
 | |
|     pthread_exit; pthread_detach;
 | |
| 
 | |
|     pthread_getschedparam; pthread_setschedparam;
 | |
| 
 | |
|     pthread_attr_init; pthread_attr_destroy;
 | |
|     pthread_attr_getdetachstate; pthread_attr_setdetachstate;
 | |
|     pthread_attr_getschedparam; pthread_attr_setschedparam;
 | |
|     pthread_attr_getschedpolicy; pthread_attr_setschedpolicy;
 | |
|     pthread_attr_getinheritsched; pthread_attr_setinheritsched;
 | |
|     pthread_attr_getscope; pthread_attr_setscope;
 | |
| 
 | |
|     pthread_mutex_init; pthread_mutex_destroy;
 | |
|     pthread_mutex_lock; pthread_mutex_trylock; pthread_mutex_unlock;
 | |
| 
 | |
|     pthread_mutexattr_init; pthread_mutexattr_destroy;
 | |
| 
 | |
|     pthread_cond_init; pthread_cond_destroy;
 | |
|     pthread_cond_wait; pthread_cond_timedwait;
 | |
|     pthread_cond_signal; pthread_cond_broadcast;
 | |
| 
 | |
|     pthread_condattr_destroy; pthread_condattr_init;
 | |
| 
 | |
|     pthread_cancel; pthread_testcancel;
 | |
|     pthread_setcancelstate; pthread_setcanceltype;
 | |
| 
 | |
|     pthread_sigmask; pthread_kill;
 | |
| 
 | |
|     pthread_key_create; pthread_key_delete;
 | |
|     pthread_getspecific; pthread_setspecific;
 | |
| 
 | |
|     pthread_once;
 | |
| 
 | |
|     pthread_atfork;
 | |
| 
 | |
|     flockfile; funlockfile; ftrylockfile;
 | |
| 
 | |
|     # Non-standard POSIX1.x functions.
 | |
|     pthread_mutexattr_getkind_np; pthread_mutexattr_setkind_np;
 | |
| 
 | |
|     # Protected names for functions used in other shared objects.
 | |
|     __pthread_mutex_init; __pthread_mutex_destroy;
 | |
|     __pthread_mutex_lock; __pthread_mutex_trylock; __pthread_mutex_unlock;
 | |
|     __pthread_mutexattr_init; __pthread_mutexattr_destroy;
 | |
|     __pthread_mutexattr_settype;
 | |
|     __pthread_key_create; __pthread_getspecific; __pthread_setspecific;
 | |
|     __pthread_once; __pthread_atfork;
 | |
|     _IO_flockfile; _IO_ftrylockfile; _IO_funlockfile;
 | |
| 
 | |
|     # Semaphores.
 | |
|     sem_destroy; sem_getvalue; sem_init; sem_post; sem_trywait; sem_wait;
 | |
| 
 | |
|     # Special fork handling.
 | |
|     fork; __fork; vfork;
 | |
| 
 | |
|     # Cancellation points.
 | |
|     close; __close; fcntl; __fcntl; read; __read; write; __write; accept;
 | |
|     connect; __connect; recv; recvfrom; recvmsg; send; __send; sendmsg; sendto;
 | |
|     fsync; lseek; __lseek; msync; nanosleep; open; __open; pause; tcdrain;
 | |
|     system; wait; __wait; waitpid;
 | |
| 
 | |
|     # Hidden entry point (through macros).
 | |
|     _pthread_cleanup_push; _pthread_cleanup_pop;
 | |
|     _pthread_cleanup_push_defer; _pthread_cleanup_pop_restore;
 | |
| 
 | |
|     pthread_kill_other_threads_np;
 | |
| 
 | |
|     # The error functions.
 | |
|     __errno_location; __h_errno_location;
 | |
| 
 | |
|     # Functions which previously have been overwritten.
 | |
|     sigwait; sigaction; __sigaction; _exit; _Exit; longjmp; siglongjmp;
 | |
|     raise;
 | |
|   }
 | |
| 
 | |
|   GLIBC_2.1 {
 | |
|     pthread_create;
 | |
|     pthread_attr_init;
 | |
| 
 | |
|     pthread_attr_getguardsize; pthread_attr_setguardsize;
 | |
|     pthread_attr_getstackaddr; pthread_attr_setstackaddr;
 | |
|     pthread_attr_getstacksize; pthread_attr_setstacksize;
 | |
| 
 | |
|     pthread_mutexattr_gettype; pthread_mutexattr_settype;
 | |
| 
 | |
|     pthread_rwlock_init; pthread_rwlock_destroy;
 | |
|     pthread_rwlock_rdlock; pthread_rwlock_wrlock; pthread_rwlock_unlock;
 | |
|     pthread_rwlock_tryrdlock; pthread_rwlock_trywrlock;
 | |
| 
 | |
|     pthread_rwlockattr_init; pthread_rwlockattr_destroy;
 | |
|     pthread_rwlockattr_getpshared; pthread_rwlockattr_setpshared;
 | |
|     pthread_rwlockattr_getkind_np; pthread_rwlockattr_setkind_np;
 | |
| 
 | |
|     pthread_getconcurrency; pthread_setconcurrency;
 | |
| 
 | |
|     # Semaphores.
 | |
|     sem_destroy; sem_getvalue; sem_init; sem_post; sem_trywait; sem_wait;
 | |
| 
 | |
|     __libc_current_sigrtmin; __libc_current_sigrtmax;
 | |
|     __libc_allocate_rtsig;
 | |
|   }
 | |
| 
 | |
|   GLIBC_2.1.1 {
 | |
|     sem_close; sem_open; sem_unlink;
 | |
|   }
 | |
| 
 | |
|   GLIBC_2.1.2 {
 | |
|     __vfork;
 | |
|   }
 | |
| 
 | |
|   GLIBC_2.2 {
 | |
|     pthread_mutexattr_getpshared; pthread_mutexattr_setpshared;
 | |
| 
 | |
|     pthread_condattr_getpshared; pthread_condattr_setpshared;
 | |
| 
 | |
|     # New functions from IEEE Std. 1003.1-2001.
 | |
|     pthread_mutex_timedlock;
 | |
| 
 | |
|     pthread_rwlock_timedrdlock; pthread_rwlock_timedwrlock;
 | |
| 
 | |
|     pthread_attr_getstack; pthread_attr_setstack;
 | |
| 
 | |
|     pthread_spin_destroy; pthread_spin_init; pthread_spin_lock;
 | |
|     pthread_spin_trylock; pthread_spin_unlock;
 | |
| 
 | |
|     pthread_barrier_init; pthread_barrier_destroy; pthread_barrier_wait;
 | |
|     pthread_barrierattr_destroy; pthread_barrierattr_init;
 | |
|     pthread_barrierattr_setpshared;
 | |
| 
 | |
|     sem_timedwait;
 | |
| 
 | |
|     pthread_yield;
 | |
| 
 | |
|     pthread_getcpuclockid;
 | |
| 
 | |
|     # Cancellation points.
 | |
|     lseek64; open64; __open64; pread; pread64; __pread64; pwrite; pwrite64;
 | |
|     __pwrite64;
 | |
| 
 | |
|     # Names used internally.
 | |
|     __pthread_rwlock_init; __pthread_rwlock_destroy;
 | |
|     __pthread_rwlock_rdlock; __pthread_rwlock_tryrdlock;
 | |
|     __pthread_rwlock_wrlock; __pthread_rwlock_trywrlock;
 | |
|     __pthread_rwlock_unlock;
 | |
| 
 | |
|     __res_state;
 | |
|   }
 | |
| 
 | |
|   GLIBC_2.2.3 {
 | |
|     # Extensions.
 | |
|     pthread_getattr_np;
 | |
|   }
 | |
| 
 | |
|   GLIBC_2.2.6 {
 | |
|     # Cancellation wrapper
 | |
|     __nanosleep;
 | |
|   }
 | |
| 
 | |
|   GLIBC_2.3.2 {
 | |
|     # Changed pthread_cond_t.
 | |
|     pthread_cond_init; pthread_cond_destroy;
 | |
|     pthread_cond_wait; pthread_cond_timedwait;
 | |
|     pthread_cond_signal; pthread_cond_broadcast;
 | |
|   }
 | |
| 
 | |
|   GLIBC_2.3.3 {
 | |
|     # 1003.1-2001 function accidentally left out in 2.2.
 | |
|     pthread_barrierattr_getpshared;
 | |
| 
 | |
|     # Unix CS option.
 | |
|     pthread_condattr_getclock; pthread_condattr_setclock;
 | |
| 
 | |
|     # Proposed API extensions.
 | |
|     pthread_tryjoin_np; pthread_timedjoin_np;
 | |
| 
 | |
|     # New cancellation cleanup handling.
 | |
|     __pthread_register_cancel; __pthread_unregister_cancel;
 | |
|     __pthread_register_cancel_defer; __pthread_unregister_cancel_restore;
 | |
|     __pthread_unwind_next;
 | |
|     __pthread_cleanup_routine;
 | |
| 
 | |
|     # affinity interfaces without size parameter
 | |
|     pthread_getaffinity_np; pthread_setaffinity_np;
 | |
|     pthread_attr_getaffinity_np; pthread_attr_setaffinity_np;
 | |
|   }
 | |
| 
 | |
|   GLIBC_2.3.4 {
 | |
|     # New affinity interfaces.
 | |
|     pthread_getaffinity_np; pthread_setaffinity_np;
 | |
|     pthread_attr_getaffinity_np; pthread_attr_setaffinity_np;
 | |
| 
 | |
|     pthread_setschedprio;
 | |
|   }
 | |
| 
 | |
|   GLIBC_2.4 {
 | |
|     pthread_mutexattr_getrobust_np; pthread_mutexattr_setrobust_np;
 | |
|     pthread_mutex_consistent_np;
 | |
|     pthread_mutexattr_getprotocol; pthread_mutexattr_setprotocol;
 | |
|     pthread_mutexattr_getprioceiling; pthread_mutexattr_setprioceiling;
 | |
|     pthread_mutex_getprioceiling; pthread_mutex_setprioceiling;
 | |
|   };
 | |
| 
 | |
|   GLIBC_2.11 {
 | |
|     pthread_sigqueue;
 | |
|   };
 | |
| 
 | |
|   GLIBC_2.12 {
 | |
|     pthread_mutex_consistent; pthread_mutexattr_getrobust;
 | |
|     pthread_mutexattr_setrobust;
 | |
| 
 | |
|     pthread_setname_np; pthread_getname_np;
 | |
|   };
 | |
| 
 | |
|   GLIBC_2.18 {
 | |
|     pthread_getattr_default_np;
 | |
|     pthread_setattr_default_np;
 | |
|   }
 | |
| 
 | |
|   GLIBC_2.20 {
 | |
|   }
 | |
| 
 | |
|   GLIBC_2.22 {
 | |
|   }
 | |
| 
 | |
|   # C11 thread symbols.
 | |
|   GLIBC_2.28 {
 | |
|     thrd_create; thrd_detach; thrd_exit; thrd_join;
 | |
|     mtx_init; mtx_lock; mtx_timedlock; mtx_trylock; mtx_unlock; mtx_destroy;
 | |
|     call_once; cnd_broadcast; cnd_destroy; cnd_init; cnd_signal;
 | |
|     cnd_timedwait; cnd_wait; tss_create; tss_delete; tss_get; tss_set;
 | |
|   }
 | |
| 
 | |
|   GLIBC_PRIVATE {
 | |
|     __pthread_initialize_minimal;
 | |
|     __pthread_clock_gettime; __pthread_clock_settime;
 | |
|     __pthread_unwind; __pthread_get_minstack;
 | |
|     __pthread_barrier_init; __pthread_barrier_wait;
 | |
|     __shm_directory;
 | |
|     __libpthread_freeres;
 | |
|   }
 | |
| }
 |