static tss_t tls_key;
static bool tls_key_valid;
-static void tls_key_init(void)
-{
- tls_key_valid = (tss_create(&tls_key, free) == thrd_success);
-}
+static void init_once_cb(void);
static void *tls_get(void)
{
{
return tss_set(tls_key, p) == thrd_success;
}
+
+static void init_once_with_tls(void)
+{
+ tls_key_valid = (tss_create(&tls_key, free) == thrd_success);
+ init_once_cb();
+}
+
+static int init_once(void)
+{
+ static once_flag flag;
+
+ call_once(&flag, init_once_with_tls);
+ return 1;
+}