[Vm-dev] [commit] r2363 - Merge Levente's linux UUIDPlugin fix. Fix tickerSleepCycle decl in heartbeat.

Levente Uzonyi leves at elte.hu
Sun Mar 6 18:50:51 UTC 2011


On Sun, 6 Mar 2011, Levente Uzonyi wrote:

>
> This version depends on variables defined by the CMake scripts, so it doesn't 
> work with autotools.

There's another problem with the file. Some distributions, like Ubuntu 
have uuid/uuid.h instead of uuid.h.


Levente

>
>
> Levente
>
> On Wed, 2 Mar 2011, commits at squeakvm.org wrote:
>
>> 
>> Author: eliot
>> Date: 2011-03-02 09:29:55 -0800 (Wed, 02 Mar 2011)
>> New Revision: 2363
>> 
>> Modified:
>>   branches/Cog/platforms/unix/plugins/UUIDPlugin/sqUnixUUID.c
>>   branches/Cog/platforms/unix/vm/Makefile.in
>>   branches/Cog/platforms/unix/vm/sqUnixHeartbeat.c
>> Log:
>> Merge Levente's linux UUIDPlugin fix.  Fix tickerSleepCycle decl in 
>> heartbeat.
>> Restore -O2 optimization for the interpreter.
>> 
>> 
>> Modified: branches/Cog/platforms/unix/plugins/UUIDPlugin/sqUnixUUID.c
>> ===================================================================
>> --- branches/Cog/platforms/unix/plugins/UUIDPlugin/sqUnixUUID.c 
>> 2011-02-16 05:52:50 UTC (rev 2362)
>> +++ branches/Cog/platforms/unix/plugins/UUIDPlugin/sqUnixUUID.c 
>> 2011-03-02 17:29:55 UTC (rev 2363)
>> @@ -1,18 +1,80 @@
>> -#include <uuid/uuid.h>
>> +#include "config.h"
>> +
>> +#if defined(HAVE_SYS_UUID_H)
>> +# include <sys/types.h>
>> +# include <sys/uuid.h>
>> +#endif
>> +#if defined(HAVE_UUID_H)
>> +  #include <uuid.h>
>> +#endif
>> +
>> #include "sq.h"
>> 
>> -int sqUUIDInit(void) { return 1; }
>> 
>> -int sqUUIDShutdown(void) { return 1; }
>> -
>> int MakeUUID(char *location)
>> {
>>   uuid_t uuid;
>> -#if defined(__NetBSD__)
>> +
>> +#if defined(HAVE_UUIDGEN)
>>   uuidgen(&uuid, 1);
>> -#else
>> +#elif defined(HAVE_UUID_GENERATE)
>>   uuid_generate(uuid);
>> #endif
>> +
>>   memcpy((void *)location, (void *)&uuid, sizeof(uuid));
>>   return 1;
>> }
>> +
>> +
>> +#if defined(__linux__)
>> +
>> +# include <setjmp.h>
>> +# include <signal.h>
>> +
>> +static sigjmp_buf env;
>> +
>> +static void sigsegvHandler(int signal)
>> +{
>> +  siglongjmp(env, 1);
>> +}
>> +
>> +int sqUUIDInit(void)
>> +{
>> +  /* check if we get a segmentation fault when using libuuid */
>> +  int pluginAvailable= 0;
>> +  struct sigaction originalAction;
>> +  uuid_t uuid;
>> +
>> +  if (!sigsetjmp(env, 1))
>> +    {
>> +      struct sigaction newAction;
>> +      newAction.sa_handler= sigsegvHandler;
>> +      newAction.sa_flags= 0;
>> +      sigemptyset(&newAction.sa_mask);
>> +
>> +      if (sigaction(SIGSEGV, &newAction, &originalAction))
>> +	/* couldn't change the signal handler: give up now */
>> +	return 0;
>> +      else
>> +	pluginAvailable= MakeUUID((char *)&uuid);
>> +    }
>> +
>> +  sigaction(SIGSEGV, &originalAction, NULL);
>> +
>> +  return pluginAvailable;
>> +}
>> +
>> +#else /* !__linux__ */
>> +
>> +int sqUUIDInit(void)
>> +{
>> +  return 1;
>> +}
>> +
>> +#endif /* !__linux__ */
>> +
>> +
>> +int sqUUIDShutdown(void)
>> +{
>> +  return 1;
>> +}
>> 
>> Modified: branches/Cog/platforms/unix/vm/Makefile.in
>> ===================================================================
>> --- branches/Cog/platforms/unix/vm/Makefile.in	2011-02-16 05:52:50 
>> UTC (rev 2362)
>> +++ branches/Cog/platforms/unix/vm/Makefile.in	2011-03-02 17:29:55 
>> UTC (rev 2363)
>> @@ -71,13 +71,13 @@
>> # Ensure the heartbeat is compiled with less aggressive optimization.  At
>> # least with gcc 4.1.2 compiling with -O2 results in an apparently flakey 
>> VM;
>> # so flakey the Squeak4.2-10856-beta.image image won't even start-up.
>> -sqUnixHeartbeat$o : $(topdir)/platforms/unix/vm/sqUnixHeartbeat.c
>> -	$(COMPILE) sqUnixHeartbeat$o -O1 -fno-omit-frame-pointer -mno-rtd 
>> -mno-accumulate-outgoing-args $(topdir)/platforms/unix/vm/sqUnixHeartbeat.c
>> +#sqUnixHeartbeat$o : $(topdir)/platforms/unix/vm/sqUnixHeartbeat.c
>> +#	$(COMPILE) sqUnixHeartbeat$o -O1 -fno-omit-frame-pointer -mno-rtd 
>> -mno-accumulate-outgoing-args $(topdir)/platforms/unix/vm/sqUnixHeartbeat.c
>> 
>> # Ensure the cointerpreter is compiled with less aggressive optimization. 
>> At
>> # least with gcc 4.1.2 compiling with -O2 results in an apparently flakey 
>> VM.
>> -gcc3x-cointerp$o : $(srcdir)/vm/gcc3x-cointerp.c
>> -	$(COMPILE) gcc3x-cointerp$o -O1 -fno-omit-frame-pointer 
>> -momit-leaf-frame-pointer -mno-rtd -mno-accumulate-outgoing-args 
>> $(srcdir)/vm/gcc3x-cointerp.c
>> +#gcc3x-cointerp$o : $(srcdir)/vm/gcc3x-cointerp.c
>> +#	$(COMPILE) gcc3x-cointerp$o -O1 -fno-omit-frame-pointer 
>> -momit-leaf-frame-pointer -mno-rtd -mno-accumulate-outgoing-args 
>> $(srcdir)/vm/gcc3x-cointerp.c
>> 
>> # Ensure the cogit is compiled with less aggressive optimization.  The 
>> cogit
>> # contains a function that does two alloca's which is miscompiled by a 
>> number of
>> 
>> Modified: branches/Cog/platforms/unix/vm/sqUnixHeartbeat.c
>> ===================================================================
>> --- branches/Cog/platforms/unix/vm/sqUnixHeartbeat.c	2011-02-16 05:52:50 
>> UTC (rev 2362)
>> +++ branches/Cog/platforms/unix/vm/sqUnixHeartbeat.c	2011-03-02 17:29:55 
>> UTC (rev 2363)
>> @@ -377,7 +377,7 @@
>> 	tickCheckInProgress = 0;
>> }
>> 
>> -static void
>> +static void *
>> tickerSleepCycle(void *ignored)
>> {
>> 	struct timespec naptime;
>> @@ -387,6 +387,7 @@
>>
>> 	while (1)
>> 		(void)nanosleep(&naptime, 0);
>> +	return 0;
>> }
>> 
>> /* We require the error check because we're lazy in preventing multiple
>> 
>> 
>


More information about the Vm-dev mailing list