[kaffe] CVS kaffe (robilad): fixes for pthreads under Cygwin

Kaffe CVS cvs-commits at kaffe.org
Wed Aug 8 18:25:59 PDT 2007


PatchSet 7528 
Date: 2007/08/09 01:24:56
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
fixes for pthreads under Cygwin

Members: 
	ChangeLog:1.5026->1.5027 
	kaffe/kaffevm/systems/unix-pthreads/signal.c:1.28->1.29 
	kaffe/kaffevm/systems/unix-pthreads/thread-impl.c:1.96->1.97 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.5026 kaffe/ChangeLog:1.5027
--- kaffe/ChangeLog:1.5026	Wed Aug  8 23:38:48 2007
+++ kaffe/ChangeLog	Thu Aug  9 01:24:56 2007
@@ -1,3 +1,17 @@
+2007-08-09  Kazuyuki Shudo  <2006 at shudo.net>
+
+	This brings pthreads failures on Cygwin down to 11 for intrp,
+	and 24 for jit.
+
+	* kaffe/kaffevm/unix-pthreads/signal.c 
+	(KaffePThread_detectStackBoundaries) Work around Cygwin 
+	getpagesize issue. [STACK_GROWS_UP] Add pagesize to 
+	guessPointer.
+
+	* kaffe/kaffevm/unix-pthreads/thread-impl.c 
+	(tInitSignals) Treat Cygwin like OLD_LINUXTHREADS.
+	[__CYGWIN__] Set sigInterrupt to SIGCONT.
+
 2007-08-09  Kiyo Inaba <inaba at src.ricoh.co.jp>
 
 	* config/arm/netbsd1/md.h: Added signal handler macro.
Index: kaffe/kaffe/kaffevm/systems/unix-pthreads/signal.c
diff -u kaffe/kaffe/kaffevm/systems/unix-pthreads/signal.c:1.28 kaffe/kaffe/kaffevm/systems/unix-pthreads/signal.c:1.29
--- kaffe/kaffe/kaffevm/systems/unix-pthreads/signal.c:1.28	Tue Aug  7 01:44:53 2007
+++ kaffe/kaffe/kaffevm/systems/unix-pthreads/signal.c	Thu Aug  9 01:24:56 2007
@@ -461,7 +461,12 @@
 	
 	if (JTHREAD_SETJMP(outOfLoop) == 0)
 	{
+#ifdef __CYGWIN__
+	  /* getpagesize() of Cygwin 1.5.19-4 returns 0x10000, not 0x1000 */
+	  uintp pageSize = 0x1000;
+#else
 	  uintp pageSize = getpagesize();
+#endif
 
 	  guessPointer = (char *)((uintp)(&jtid) & ~(pageSize-1));
 	  
@@ -474,6 +479,11 @@
 #endif
 	    kaffeNoopFunc(*guessPointer);
 	  }
+	}
+	else {
+#if defined(STACK_GROWS_UP)
+	  guessPointer += pageSize;
+#endif
 	}
 
 	/* Here we have detected one the boundary of the stack.
Index: kaffe/kaffe/kaffevm/systems/unix-pthreads/thread-impl.c
diff -u kaffe/kaffe/kaffevm/systems/unix-pthreads/thread-impl.c:1.96 kaffe/kaffe/kaffevm/systems/unix-pthreads/thread-impl.c:1.97
--- kaffe/kaffe/kaffevm/systems/unix-pthreads/thread-impl.c:1.96	Tue Aug  7 01:44:53 2007
+++ kaffe/kaffe/kaffevm/systems/unix-pthreads/thread-impl.c	Thu Aug  9 01:24:56 2007
@@ -451,7 +451,7 @@
 
   if (SIGRTMAX - SIGRTMIN < 7)
     {
-#if defined(OLD_LINUXTHREADS)
+#if defined(OLD_LINUXTHREADS) && !defined(__CYGWIN__)
       sigSuspend = SIGURG;
       sigResume  = SIGTSTP;
       sigDump    = SIGXCPU;
@@ -474,8 +474,7 @@
 
 #endif
 
-      if (SIGRTMIN < 0)
-	sigInterrupt = SIGCONT;
+      sigInterrupt = SIGCONT;
     }
   else
     {




More information about the kaffe mailing list