summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/ptmalloc/sysdeps/solaris/malloc-machine.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/ptmalloc/sysdeps/solaris/malloc-machine.h')
-rw-r--r--src/3rdparty/ptmalloc/sysdeps/solaris/malloc-machine.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/3rdparty/ptmalloc/sysdeps/solaris/malloc-machine.h b/src/3rdparty/ptmalloc/sysdeps/solaris/malloc-machine.h
new file mode 100644
index 0000000000..00e33b0801
--- /dev/null
+++ b/src/3rdparty/ptmalloc/sysdeps/solaris/malloc-machine.h
@@ -0,0 +1,51 @@
+/* Basic platform-independent macro definitions for mutexes,
+ thread-specific data and parameters for malloc.
+ Solaris threads version.
+ Copyright (C) 2004 Wolfram Gloger <wg@malloc.de>.
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that (i) the above copyright notices and this permission
+notice appear in all copies of the software and related documentation,
+and (ii) the name of Wolfram Gloger may not be used in any advertising
+or publicity relating to the software.
+
+THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+IN NO EVENT SHALL WOLFRAM GLOGER BE LIABLE FOR ANY SPECIAL,
+INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY
+DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY
+OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#ifndef _SOLARIS_MALLOC_MACHINE_H
+#define _SOLARIS_MALLOC_MACHINE_H
+
+#include <thread.h>
+
+typedef thread_t thread_id;
+
+#define MUTEX_INITIALIZER { 0 }
+#define mutex_init(m) mutex_init(m, USYNC_THREAD, NULL)
+
+/*
+ * Hack for thread-specific data on Solaris. We can't use thr_setspecific
+ * because that function calls malloc() itself.
+ */
+typedef void *tsd_key_t[256];
+#define tsd_key_create(key, destr) do { \
+ int i; \
+ for(i=0; i<256; i++) (*key)[i] = 0; \
+} while(0)
+#define tsd_setspecific(key, data) (key[(unsigned)thr_self() % 256] = (data))
+#define tsd_getspecific(key, vptr) (vptr = key[(unsigned)thr_self() % 256])
+
+#define thread_atfork(prepare, parent, child) do {} while(0)
+
+#include <sysdeps/generic/malloc-machine.h>
+
+#endif /* !defined(_SOLARIS_MALLOC_MACHINE_H) */