mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 15:20:10 +01:00
Implementation is based of https://gist.github.com/2223710 with the following modifications: - inline implementatation - retain XP compatability - add temporary hack for static mutex initializers (as they are not part of the stack but still widely used internally) - make TIME_UTC a conditional macro (some system headers already define it, so this prevents conflict) - respect HAVE_PTHREAD macro Reviewed-by: Brian Paul <brianp@vmware.com> Acked-by: Ian Romanick <ian.d.romanick@intel.com> Acked-by: Chad Versace <chad.versace@linux.intel.com>
58 lines
1.2 KiB
C
58 lines
1.2 KiB
C
/*
|
|
* C11 <threads.h> emulation library
|
|
*
|
|
* (C) Copyright yohhoy 2012.
|
|
* Distributed under the Boost Software License, Version 1.0.
|
|
* (See copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
*/
|
|
#ifndef EMULATED_THREADS_H_INCLUDED_
|
|
#define EMULATED_THREADS_H_INCLUDED_
|
|
|
|
#include <time.h>
|
|
|
|
#ifndef TIME_UTC
|
|
#define TIME_UTC 1
|
|
#endif
|
|
|
|
#include "c99_compat.h" /* for `inline` */
|
|
|
|
/*---------------------------- types ----------------------------*/
|
|
typedef void (*tss_dtor_t)(void*);
|
|
typedef int (*thrd_start_t)(void*);
|
|
|
|
struct xtime {
|
|
time_t sec;
|
|
long nsec;
|
|
};
|
|
typedef struct xtime xtime;
|
|
|
|
|
|
/*-------------------- enumeration constants --------------------*/
|
|
enum {
|
|
mtx_plain = 0,
|
|
mtx_try = 1,
|
|
mtx_timed = 2,
|
|
mtx_recursive = 4
|
|
};
|
|
|
|
enum {
|
|
thrd_success = 0, // succeeded
|
|
thrd_timeout, // timeout
|
|
thrd_error, // failed
|
|
thrd_busy, // resource busy
|
|
thrd_nomem // out of memory
|
|
};
|
|
|
|
/*-------------------------- functions --------------------------*/
|
|
|
|
#if defined(_WIN32) && !defined(__CYGWIN__)
|
|
#include "threads_win32.h"
|
|
#elif defined(HAVE_PTHREAD)
|
|
#include "threads_posix.h"
|
|
#else
|
|
#error Not supported on this platform.
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* EMULATED_THREADS_H_INCLUDED_ */
|