/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ /* * Copyright 2010-2011 Andrea Canciani * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * Author(s): Andrea Canciani */ #ifndef SIMPLEOPS_TLS_INTERNAL_PTHREAD_H #define SIMPLEOPS_TLS_INTERNAL_PTHREAD_H #ifndef SIMPLEOPS_TLS_INTERNAL_H #error Private header used directly #endif #if ! SIMPLEOPS_HAVE_TLS_INTERNAL && \ SIMPLEOPS_HAVE_TLS_IMPL_PTHREAD #define SIMPLEOPS_HAVE_TLS_INTERNAL 1 simpleops_private pthread_key_t _SIMPLEOPS_TLS_PTHREAD_KEY; static simpleops_always_inline void _simpleops_tls_init (void) { _SIMPLEOPS_TLS_INITIALIZED = ! pthread_key_create (&_SIMPLEOPS_TLS_PTHREAD_KEY, _simpleops_tls_destroy); } static simpleops_always_inline void _simpleops_tls_fini (void) { if (SIMPLEOPS_LIKELY (_SIMPLEOPS_TLS_INITIALIZED)) pthread_key_delete (_SIMPLEOPS_TLS_PTHREAD_KEY); } #endif #endif