[Vm-dev] version and sigaction in SqueakVM classic 4.16.7

David T. Lewis lewis at mail.msen.com
Wed Apr 8 00:01:43 UTC 2020


Hi David Stes,

On Tue, Apr 07, 2020 at 11:32:32AM -0500, stes wrote:
>  
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
> 
> 
> Hi,
> 
> To come back to my previous post on __VERSION__ in SqueakVM classic 4.16.7
> (from the "subversion" repository).
> 
> Reminder: __VERSION__ is not working for me, but CMAKE has
>  ${CMAKE_C_COMPILER_VERSION}
> which is a good alternative.

The CMAKE_C_COMPILER_VERSION change seems to be good on all platforms, so
this is the right fix. I was able to test this on a Mac OS X with llvm
compiler (just today as luck would have it), and it worked without problems,
so I am confident that your original suggestion of replacing __VERSION__
with ${CMAKE_C_COMPILER_VERSION} is the correct fix.


> 
> I don't know whether patches are still being accepted for SqueakVM classic,
> but here below are my patches

Thank you. I am keeping track of your updates and will commit them to the
repository as soon as I am able. I am currently having trouble reaching Ian
Piumarta to correct a technical glitch in the repository access, but I'll
catch up with it as soon as I am able. Ian (https://www.piumarta.com/cv/)
is author of the original Unix VM platform sources and much of the early
VM work and is the long-time maintainer and supporter (financially and
otherwise) of the the squeakvm.org site.

Support for the classic VM is rather minimal these days, but your contributions
are noted and appreciated.

Dave



>   
>   - __VERSION__ made conditional at CMAKE level via ifdef SunPro 
>   - use sigaction() instead of signal() in aio.c 
>     this is the case in SqueakVM 5.3 (4.3 is using sigaction )
>     and that is better to avoid the SIGIO handler being reset to the default
>   - vm-sound-pulse compilation fix
> 
> David Stes
> 
> Here's the diff:
> 
> Index: unix/vm/aio.c
> ===================================================================
> - --- unix/vm/aio.c	(revision 3775)
> +++ unix/vm/aio.c	(working copy)
> @@ -82,7 +82,7 @@
>  #   define FASYNC O_ASYNC
>  # endif
>  
> - -#else /* !HAVE_CONFIG_H -- assume lowest common demoninator */
> +#else /* !HAVE_CONFIG_H -- assume lowest common denominator */
>  
>  # include <stdio.h>
>  # include <stdlib.h>
> @@ -95,9 +95,13 @@
>  # include <sys/ioctl.h>
>  # include <fcntl.h>
>  
> +#ifdef __sun
> +#include <sys/file.h>  /* include FASYNC so that code defined(FASYNC) works
> */
>  #endif
>  
> +#endif
>  
> +
>  #undef	DEBUG
>  #undef	DEBUG_TICKER
>  
> @@ -162,6 +166,10 @@
>  
>  void aioInit(void)
>  {
> +#ifdef __sun__
> +  struct sigaction sigio_action;
> +#endif
> +
>    extern void forceInterruptCheck(int);	/* not really, but hey */
>  
>    FD_ZERO(&fdMask);
> @@ -171,7 +179,18 @@
>    FD_ZERO(&xdMask);
>    maxFd= 0;
>    signal(SIGPIPE, SIG_IGN);
> +
> +#ifdef __sun__
> +  sigio_action.sa_sigaction = forceInterruptCheck;
> +  sigio_action.sa_flags = SA_RESTART | SA_SIGINFO;
> +  sigemptyset(&sigio_action.sa_mask);
> +  if (sigaction(SIGIO, &sigio_action, 0)) {
> +    perror("aioInit sigaction SIGIO");
> +    exit(1);
> +  }
> +#else
>    signal(SIGIO,   forceInterruptCheck);
> +#endif
>  }
>  
>  
> Index: unix/vm/config.cmake
> ===================================================================
> - --- unix/vm/config.cmake	(revision 3775)
> +++ unix/vm/config.cmake	(working copy)
> @@ -202,7 +202,11 @@
>  
>  # sqUnixMain.c
>  
> - -SET (VM_BUILD_STRING "\"Unix built on \"__DATE__ \" \"__TIME__\"
> Compiler: \"
> __VERSION__")
> +IF (CMAKE_C_COMPILER_ID MATCHES "SunPro") 
> +  SET (VM_BUILD_STRING "\"Unix built on \"__DATE__ \" \"__TIME__\"
> Compiler: ${
> CMAKE_C_COMPILER_VERSION}\"") 
> +ELSE ()
> +  SET (VM_BUILD_STRING "\"Unix built on \"__DATE__ \" \"__TIME__\"
> Compiler: \"
> __VERSION__")
> +ENDIF (CMAKE_C_COMPILER_ID MATHCES "SunPro")
>  
>  CONFIG_DEFINE (VM_BUILD_STRING)
>  
> Index: unix/vm-sound-Sun/sqUnixSoundSun.c
> ===================================================================
> - --- unix/vm-sound-Sun/sqUnixSoundSun.c	(revision 3775)
> +++ unix/vm-sound-Sun/sqUnixSoundSun.c	(working copy)
> @@ -72,7 +72,7 @@
>  #endif
>  
>  static sqInt sound_Stop(void);
> - -static int sound_AvailableSpace(void);
> +static sqInt sound_AvailableSpace(void);
>  
>  static int auFd=	       -1;   /* open on /dev/audio */
>  static int auCtlFd=	       -1;   /* open on /dev/audioctl */
> Index: unix/vm-sound-pulse/sqUnixSoundPulseAudio.c
> ===================================================================
> - --- unix/vm-sound-pulse/sqUnixSoundPulseAudio.c	(revision 3775)
> +++ unix/vm-sound-pulse/sqUnixSoundPulseAudio.c	(working copy)
> @@ -276,6 +276,12 @@
>  
>  /* ================================== UTILS */
>  
> +#ifdef __SUNPRO_C
> +/* MIN is not C stdlib - perhaps <sys/param.h> is defining it on Linux */
> +static int MIN(int a,int b) { return (a<b)?a:b; }
> +static int MAX(int a,int b) { return (a<b)?b:a; }
> +#endif
> +
>  /* RATE CONVERSION: from dsp code but not used (yet). Maybe not needed at
> all w
> ith AlSA */
>  /* RATE CONVERSION: fixed preset rates are used. TBD: choose nearest to
> request
> ed */
>  /*
> 
> 
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2
> 
> iQEcBAEBCAAGBQJejKrKAAoJEAwpOKXMq1MaGNcH/0g8kk+GVHIdZW48nT2EbAJf
> z8HjIc520LPdtn/U1qBcO/L21dchKZQV1t/gUacDnXFA4W2CC5q52eWMBfaWecmn
> BOdiKTGovzVTCAGL5CHlKZdJA0oqJKDVMuaiDp6kP28mNFZiRynwXSGledC0qpq2
> 0/eAtNxpOFP6HCjl7INdm5F5ghArhYrTzpaAJfze8CZlHREls2g+2Ct0tUY1gllJ
> SVCtnyhPCWD7Tmbvs+xElfj8GVfRKvPX+mWrq0TkWk6Be+NHM0b/7Z5y4y7SpTrY
> qko5iRq+LUelgMtlnpUnh8kmyqbVlYT5d3XL4Qrozg7oFVUcBb7uNukNySE696k=
> =9GTB
> -----END PGP SIGNATURE-----
> 
> 
> 
> 
> --
> Sent from: http://forum.world.st/Squeak-VM-f104410.html


More information about the Vm-dev mailing list