configure.ac (libgcj_ld_export_all): Set for windows native targets to export-all...
[gcc.git] / libjava / include / win32-threads.h
index 4b3068331565ad12800ec9c9f409b39924a2ded5..b8f70f5cba90a009ffe6f7a471938d0ef9431383 100644 (file)
@@ -47,7 +47,7 @@ typedef struct
 
 } _Jv_Mutex_t;
 
-typedef struct
+typedef struct _Jv_Thread_t
 {
   int flags;            // Flags are defined in implementation.
   HANDLE handle;        // Actual handle to the thread
@@ -193,6 +193,28 @@ void _Jv_ThreadInterrupt (_Jv_Thread_t *data);
 // See java/lang/natWin32Process.cc (waitFor) for an example.
 HANDLE _Jv_Win32GetInterruptEvent (void);
 
+// park() / unpark() support
+
+struct ParkHelper
+{
+  // We use LONG instead of obj_addr_t to avoid pulling in locks.h,
+  // which depends on size_t, ...
+  volatile LONG permit;
+
+  // The critical section is used for lazy initialization of our event
+  CRITICAL_SECTION cs;
+  HANDLE event;
+  
+  void init ();
+  void deactivate ();
+  void destroy ();
+  void park (jboolean isAbsolute, jlong time);
+  void unpark ();
+  
+private:
+  void init_event();
+};
+
 // Remove defines from <windows.h> that conflict with various things in libgcj code
 
 #undef TRUE
@@ -204,5 +226,7 @@ HANDLE _Jv_Win32GetInterruptEvent (void);
 #undef interface
 #undef STRICT
 #undef VOID
+#undef TEXT
+#undef OUT
 
 #endif /* __JV_WIN32_THREADS__ */