2007-05-11 Jonathan Chambers <joncham@gmail.com>
[mono.git] / mono / metadata / threads-types.h
index 2bc60b8e1d19170594dd5715404371b89507dc12..b407a35b708f90d040e0cc6e42787a80376a1fae 100644 (file)
@@ -6,6 +6,7 @@
  *     Dick Porter (dick@ximian.com)
  *
  * (C) 2001 Ximian, Inc
+ * (C) Copyright 2002-2006 Novell, Inc
  */
 
 #ifndef _MONO_METADATA_THREADS_TYPES_H_
@@ -28,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
@@ -50,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;
@@ -115,7 +123,13 @@ void ves_icall_System_Threading_Thread_VolatileWrite8 (void *ptr, gint64) MONO_I
 void ves_icall_System_Threading_Thread_VolatileWriteIntPtr (void *ptr, void *) MONO_INTERNAL;
 
 void ves_icall_System_Threading_Thread_MemoryBarrier (void) MONO_INTERNAL;
+extern void ves_icall_System_Threading_Thread_Interrupt_internal (MonoThread *this_obj) MONO_INTERNAL;
+extern void ves_icall_System_Threading_Thread_SpinWait_internal (gint32) MONO_INTERNAL;
 
 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_ */