bb5908058c24cd613dc4c53c4745f589b78873c6
[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 typedef struct
9 {
10         pthread_t id;
11         pthread_mutex_t join_mutex;
12         pthread_cond_t exit_cond;
13         guint32 (*start_routine)(gpointer arg);
14         void (*exit_routine)(guint32 exitstatus, gpointer userdata);
15         gpointer arg;
16         gpointer exit_userdata;
17         guint32 exitstatus;
18         gboolean exiting;
19 } TimedThread;
20
21 extern void _wapi_timed_thread_exit(guint32 exitstatus) G_GNUC_NORETURN;
22 extern int _wapi_timed_thread_create(TimedThread **threadp,
23                                      const pthread_attr_t *attr,
24                                      guint32 (*start_routine)(gpointer),
25                                      void (*exit_routine)(guint32, gpointer),
26                                      gpointer arg, gpointer exit_userdata);
27 extern int _wapi_timed_thread_join(TimedThread *thread,
28                                    struct timespec *timeout,
29                                    guint32 *exitstatus);
30
31 #endif /* _WAPI_TIMED_THREAD_H_ */