Merge pull request #1668 from alexanderkyte/bug1856
[mono.git] / mono / metadata / threadpool.h
1 #ifndef _MONO_THREADPOOL_H_
2 #define _MONO_THREADPOOL_H_
3
4 #include <mono/metadata/object-internals.h>
5 #include <mono/metadata/reflection.h>
6 #include <mono/metadata/socket-io.h>
7
8 /* No managed code here */
9 void mono_thread_pool_init (void);
10 void mono_thread_pool_init_tls (void);
11
12 void icall_append_job (MonoObject *ar);
13 void icall_append_io_job (MonoObject *target, MonoSocketAsyncResult *state);
14
15 MonoAsyncResult *
16 mono_thread_pool_begin_invoke (MonoDomain *domain, MonoObject *target, MonoMethod *method, gpointer *params);
17
18 MonoObject *
19 mono_thread_pool_end_invoke (MonoAsyncResult *ares, MonoArray **out_args, MonoObject **exc);
20
21 void mono_thread_pool_cleanup (void);
22
23 gboolean mono_thread_pool_remove_domain_jobs (MonoDomain *domain, int timeout);
24
25 void mono_thread_pool_suspend (void);
26 void mono_thread_pool_resume (void);
27
28 void
29 ves_icall_System_Threading_ThreadPool_GetAvailableThreads (int *workerThreads,
30                                                            int *completionPortThreads);
31
32 void
33 ves_icall_System_Threading_ThreadPool_GetMaxThreads (int *workerThreads,
34                                                      int *completionPortThreads);
35
36 void
37 ves_icall_System_Threading_ThreadPool_GetMinThreads (gint *workerThreads, 
38                                                                 gint *completionPortThreads);
39
40 MonoBoolean
41 ves_icall_System_Threading_ThreadPool_SetMinThreads (gint workerThreads, 
42                                                                 gint completionPortThreads);
43
44 MonoBoolean
45 ves_icall_System_Threading_ThreadPool_SetMaxThreads (gint workerThreads, 
46                                                                 gint completionPortThreads);
47
48 typedef void  (*MonoThreadPoolFunc) (gpointer user_data);
49 MONO_API void mono_install_threadpool_thread_hooks (MonoThreadPoolFunc start_func, MonoThreadPoolFunc finish_func, gpointer user_data);
50
51 typedef void  (*MonoThreadPoolItemFunc) (gpointer user_data);
52 MONO_API void mono_install_threadpool_item_hooks (MonoThreadPoolItemFunc begin_func, MonoThreadPoolItemFunc end_func, gpointer user_data);
53
54 #endif
55