2002-04-30 Dick Porter <dick@ximian.com>
[mono.git] / mono / io-layer / timed-thread.h
1 #ifndef _WAPI_TIMED_THREAD_H_
2 #define _WAPI_TIMED_THREAD_H_
3
4 #include <config.h>
5 #include <glib.h>
6 #include <pthread.h>
7
8 #include "mono-mutex.h"
9
10 typedef struct
11 {
12         pthread_t id;
13         mono_mutex_t join_mutex;
14         pthread_cond_t exit_cond;
15         guint32 (*start_routine)(gpointer arg);
16         void (*exit_routine)(guint32 exitstatus, gpointer userdata);
17         gpointer arg;
18         gpointer exit_userdata;
19         guint32 exitstatus;
20         gboolean exiting;
21 } TimedThread;
22
23 extern void _wapi_timed_thread_exit(guint32 exitstatus) G_GNUC_NORETURN;
24 extern int _wapi_timed_thread_create(TimedThread **threadp,
25                                      const pthread_attr_t *attr,
26                                      guint32 (*start_routine)(gpointer),
27                                      void (*exit_routine)(guint32, gpointer),
28                                      gpointer arg, gpointer exit_userdata);
29 extern int _wapi_timed_thread_join(TimedThread *thread,
30                                    struct timespec *timeout,
31                                    guint32 *exitstatus);
32 extern void _wapi_timed_thread_destroy (TimedThread *thread);
33
34 #endif /* _WAPI_TIMED_THREAD_H_ */