2007-05-11 Jonathan Chambers <joncham@gmail.com>
[mono.git] / mono / metadata / threads-types.h
index 07e80ac10d181102981e78445b88c6597da907f0..b407a35b708f90d040e0cc6e42787a80376a1fae 100644 (file)
@@ -29,7 +29,14 @@ typedef enum {
        ThreadState_Suspended = 0x00000040,
        ThreadState_AbortRequested = 0x00000080,
        ThreadState_Aborted = 0x00000100
-} MonoThreadState;
+} MonoThreadState; 
+
+/* This is a copy of System.Threading.ApartmentState */
+typedef enum {
+       ThreadApartmentState_STA = 0x00000000,
+       ThreadApartmentState_MTA = 0x00000001,
+       ThreadApartmentState_Unknown = 0x00000002
+} MonoThreadApartmentState;
 
 #define SPECIAL_STATIC_NONE 0
 #define SPECIAL_STATIC_THREAD 1
@@ -51,7 +58,7 @@ extern MonoArray* ves_icall_System_Threading_Thread_GetSerializedCurrentUICultur
 extern void ves_icall_System_Threading_Thread_SetCachedCurrentUICulture (MonoThread *this_obj, MonoObject *culture) MONO_INTERNAL;
 void ves_icall_System_Threading_Thread_SetSerializedCurrentUICulture (MonoThread *this_obj, MonoArray *arr) MONO_INTERNAL;
 extern HANDLE ves_icall_System_Threading_Mutex_CreateMutex_internal(MonoBoolean owned, MonoString *name, MonoBoolean *created) MONO_INTERNAL;
-extern void ves_icall_System_Threading_Mutex_ReleaseMutex_internal (HANDLE handle ) MONO_INTERNAL;
+extern MonoBoolean ves_icall_System_Threading_Mutex_ReleaseMutex_internal (HANDLE handle ) MONO_INTERNAL;
 extern HANDLE ves_icall_System_Threading_Mutex_OpenMutex_internal (MonoString *name, gint32 rights, gint32 *error) MONO_INTERNAL;
 extern HANDLE ves_icall_System_Threading_Semaphore_CreateSemaphore_internal (gint32 initialCount, gint32 maximumCount, MonoString *name, MonoBoolean *created) MONO_INTERNAL;
 extern gint32 ves_icall_System_Threading_Semaphore_ReleaseSemaphore_internal (HANDLE handle, gint32 releaseCount, MonoBoolean *fail) MONO_INTERNAL;
@@ -122,4 +129,7 @@ extern void ves_icall_System_Threading_Thread_SpinWait_internal (gint32) MONO_IN
 void mono_thread_free_local_slot_values (int slot, MonoBoolean thread_local) MONO_INTERNAL;
 extern void mono_thread_current_check_pending_interrupt (void) MONO_INTERNAL;
 
+extern void mono_thread_init_apartment_state (void) MONO_INTERNAL;
+extern void mono_thread_cleanup_apartment_state (void) MONO_INTERNAL;
+
 #endif /* _MONO_METADATA_THREADS_TYPES_H_ */