typedef int perl_mutex;
typedef int perl_key;
typedef struct perl_thread *perl_os_thread;
#define dTHR extern int errno
struct perl_wait_queue {
struct perl_thread * thread;
struct perl_wait_queue * next;
};
typedef struct perl_wait_queue *perl_cond;
#define HAVE_THREAD_INTERN
struct thread_intern {
perl_os_thread next_run, prev_run;
perl_cond wait_queue;
IV private;
I32 savemark;
};
#define init_thread_intern(t) \
STMT_START { \
t->self = (t); \
(t)->i.next_run = (t)->i.prev_run = (t); \
(t)->i.wait_queue = 0; \
(t)->i.private = 0; \
} STMT_END
#define SCHEDULE() return schedule(), PL_op
#define MUTEX_LOCK(m)
#define MUTEX_UNLOCK(m)
#define MUTEX_INIT(m)
#define MUTEX_DESTROY(m)
#define COND_INIT(c) perl_cond_init(c)
#define COND_SIGNAL(c) perl_cond_signal(c)
#define COND_BROADCAST(c) perl_cond_broadcast(c)
#define COND_WAIT(c, m) \
STMT_START { \
perl_cond_wait(c); \
SCHEDULE(); \
} STMT_END
#define COND_DESTROY(c)
#define THREAD_CREATE(t, f) f((t))
#define THREAD_POST_CREATE(t) NOOP
#define YIELD NOOP