]> Savannah Git Hosting - gnulib.git/commit
windows-tls: Implement TLS key destructors for native Windows.
authorBruno Haible <bruno@clisp.org>
Wed, 26 Jun 2019 01:32:46 +0000 (03:32 +0200)
committerBruno Haible <bruno@clisp.org>
Wed, 26 Jun 2019 01:32:46 +0000 (03:32 +0200)
commitd6bfe479691b16501375442865e328f7b0449279
tree03a5d0604ef7257157f1d2b5deafb45b1919f950
parent14b8ae17a2695e342c8c7af21629abdb0408157a
windows-tls: Implement TLS key destructors for native Windows.

* lib/windows-tls.h (glwthread_tls_process_destructors): New
declaration.
(GLWTHREAD_DESTRUCTOR_ITERATIONS): New macro.
* lib/windows-tls.c: Include <limits.h>, windows-once.h.
(dtor_table_init_once, dtor_table_lock: New variables.
(struct dtor): New type.
(dtor_table, dtors_count, dtors_used, dtors_allocated,
dtor_processing_threads): New variables.
(dtor_table_initialize, dtor_table_ensure_initialized,
dtor_table_shrink_used, glwthread_tls_process_destructors): New
functions.
(glwthread_tls_key_create, glwthread_tls_key_delete): Rewritten to
handle non-NULL destructors.
* modules/windows-tls (Depends-on): Add windows-once.
* lib/glthread/tls.h (glthread_tls_key_init, glthread_tls_key_destroy):
Use the functions declared in windows-tls.h.
* lib/threads.in.h (TSS_DTOR_ITERATIONS): Define using
GLWTHREAD_DESTRUCTOR_ITERATIONS.
* lib/windows-thread.c: Include windows-tls.h.
(wrapper_func, glwthread_thread_exit): Invoke
glwthread_tls_process_destructors.
* modules/windows-thread (Depends-on): Add windows-tls.
ChangeLog
lib/glthread/tls.h
lib/threads.in.h
lib/windows-thread.c
lib/windows-tls.c
lib/windows-tls.h
modules/windows-thread
modules/windows-tls