Release 960405
Fri Apr 5 15:22:55 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [controls/button.c] [controls/static.c]
Changes to use WND * wherever possible.
* [debugger/dbg.y] [debugger/debug.l]
Added 'info module' and 'walk module' commands.
* [if1632/Makefile.in] [if1632/relay.c] [tools/build.c]
Added assembly code generation to call from Wine into 32-bit code.
Changed all 'call32' references in 'callfrom16' to avoid confusion
with Win32 routines.
* [include/callback.h]
Added prototypes for 32-bit callbacks.
* [loader/module.c] [if1632/relay32.c] [tools/build.c]
Unified 16- and 32-bit modules. The fake module for 32-bit DLLs is
now generated by the build program.
* [include/module.h]
Added extra info to NE_MODULE for Win32 modules to point to the PE
module data.
* [include/pe_image.h] [loader/pe_image.c] [win32/resource.c]
Removed the wine_files list. The PE data for a module can now be
accessed with the NE_WIN32_MODULE macro.
* [loader/signal.c] [miscemu/instr.c]
Don't start the BIOS timer at startup, but only after an access to
the 0x40 segment.
* [memory/local.c]
Changed LOCAL_Lock() to return a 32-bit pointer.
* [misc/main.c] [include/dlls.h]
Some built-in DLLs (like KERNEL) can no longer be disabled from
the command-line.
Thu Apr 4 19:54:39 1996 Keith Reynolds <keithr@sco.COM>
* [*/*]
A lot of small changes to support SCO OpenServer 5.
Thu Apr 4 15:38:13 1996 Frans van Dorsselaer <dorssel@rulhm1.leidenuniv.nl>
* [controls/edit.c]
Fixed GetKeyState() call to use 0x8000 convention.
* [include/windows.h]
Added undocumented messages EM_SCROLL and EM_GETTHUMB.
Thu Apr 4 09:52:52 1996 John Harvey <john@division.co.uk>
* [if1632/except.S]
Modified code to assemble on unixware.
Wed Apr 3 09:38:26 1996 Juergen Marquardt <marqu@lunar.advantest.de>
* [objects/font.c]
Implementation of a second font cache which will be updated
dynamically.
Mon Apr 1 16:47:40 1996 Robert Pouliot <krynos@qbc.clic.net>
* [resources/sysres_Cz.rc] [resources/sysres_Da.rc]
[resources/sysres_De.rc] [resources/sysres_Eo.rc]
[resources/sysres_Es.rc] [resources/sysres_Fi.rc]
[resources/sysres_No.rc] [resources/TODO]
Updated FIND_TEXT and REPLACE_TEXT to work like the English version.
diff --git a/loader/signal.c b/loader/signal.c
index 8ebc0b6..d9b72ab 100644
--- a/loader/signal.c
+++ b/loader/signal.c
@@ -10,8 +10,10 @@
#include <sys/time.h>
#include <sys/timeb.h>
-#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__svr4__)
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__svr4__) || defined(_SCO_DS)
+#ifndef _SCO_DS
#include <sys/syscall.h>
+#endif
#include <sys/param.h>
#else
#include <syscall.h>
@@ -76,7 +78,7 @@
static void win_fault(int signal, struct sigcontext_struct context_struct)
{
struct sigcontext_struct *context = &context_struct;
-#elif defined(__svr4__)
+#elif defined(__svr4__) || defined(_SCO_DS)
static void win_fault(int signal, void *siginfo, ucontext_t *context)
{
#else
@@ -128,7 +130,7 @@
#ifdef linux
sig_act.sa_handler = func;
- sig_act.sa_flags = SA_RESTART;
+ sig_act.sa_flags = SA_RESTART | SA_NOMASK;
/* Point to the top of the stack, minus 4 just in case, and make
it aligned */
sig_act.sa_restorer =
@@ -145,14 +147,14 @@
ret = sigaction( sig, &sig_act, NULL );
#endif /* __FreeBSD__ || __NetBSD__ */
-#if defined (__svr4__)
+#if defined (__svr4__) || defined(_SCO_DS)
sigset_t sig_mask;
sigemptyset(&sig_mask);
sig_act.sa_handler = func;
sig_act.sa_flags = SA_ONSTACK | SA_SIGINFO;
sig_act.sa_mask = sig_mask;
ret = sigaction( sig, &sig_act, NULL );
-#endif /* __svr4__ */
+#endif /* __svr4__ || _SCO_DS */
if (ret < 0)
{
@@ -189,7 +191,7 @@
}
#endif /* __FreeBSD__ || __NetBSD__ */
-#if defined (__svr4__)
+#if defined (__svr4__) || defined(_SCO_DS)
struct sigaltstack ss;
if ((ss.ss_sp = malloc(SIGSTKSZ) ) == NULL) {
@@ -203,7 +205,7 @@
perror("sigstack");
exit(1);
}
-#endif /* __svr4__ */
+#endif /* __svr4__ || _SCO_DS */
SIGNAL_SetHandler( SIGALRM, (void (*)())wine_timer );
SIGNAL_SetHandler( SIGSEGV, (void (*)())win_fault );
@@ -217,19 +219,21 @@
#ifdef CONFIG_IPC
SIGNAL_SetHandler( SIGUSR2, (void (*)())stop_wait ); /* For IPC */
#endif
- SIGNAL_StartBIOSTimer();
}
/**********************************************************************
- * SIGNAL_StartTimer
+ * SIGNAL_StartBIOSTimer
*
* Start the BIOS tick timer.
*/
void SIGNAL_StartBIOSTimer(void)
{
struct itimerval vt_timer;
+ static int timer_started = 0;
+ if (timer_started) return;
+ timer_started = 1;
vt_timer.it_interval.tv_sec = 0;
vt_timer.it_interval.tv_usec = 54929;
vt_timer.it_value = vt_timer.it_interval;