From 56fb1b9cba53f2357179ea4ce7482722cb84e074 Mon Sep 17 00:00:00 2001 From: Benau Date: Fri, 28 Feb 2020 09:35:07 +0800 Subject: [PATCH] Add header helper for thread local storage --- src/utils/tls.hpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/utils/tls.hpp diff --git a/src/utils/tls.hpp b/src/utils/tls.hpp new file mode 100644 index 000000000..6b7720701 --- /dev/null +++ b/src/utils/tls.hpp @@ -0,0 +1,42 @@ +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2020 SuperTuxKart-Team +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_TLS_HPP +#define HEADER_TLS_HPP + +#include + +#ifndef thread_local +# if __STDC_VERSION__ >= 201112 && !defined __STDC_NO_THREADS__ +# define thread_local _Thread_local +# elif defined _WIN32 && ( \ + defined _MSC_VER || \ + defined __ICL || \ + defined __DMC__ || \ + defined __BORLANDC__ ) +# define thread_local __declspec(thread) +/* note that ICC (linux) and Clang are covered by __GNUC__ */ +# elif defined __GNUC__ || \ + defined __SUNPRO_C || \ + defined __xlC__ +# define thread_local __thread +# else +# error "Cannot define thread_local" +# endif +#endif + +#endif