]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
adapted SV module to the new svideo library.
authorSjoerd Mullender <sjoerd@acm.org>
Wed, 2 Sep 1992 11:25:37 +0000 (11:25 +0000)
committerSjoerd Mullender <sjoerd@acm.org>
Wed, 2 Sep 1992 11:25:37 +0000 (11:25 +0000)
update thread package.

Python/thread.c

index bdf34673397a269c04298dafad2c487d32c689fb..877b8e1afd1fb32bde9f91ce1869475efc7dee08 100644 (file)
@@ -1,11 +1,24 @@
 #include "thread.h"
 
+<<<<<<< thread.c
+#ifndef DEBUG
+#define DEBUG
+#endif
+
 #ifdef DEBUG
 #define dprintf(args)  printf args
 #else
 #define dprintf(args)
 #endif
 
+=======
+#ifdef DEBUG
+#define dprintf(args)  printf args
+#else
+#define dprintf(args)
+#endif
+
+>>>>>>> 2.3
 #ifdef __sgi
 #include <stdlib.h>
 #include <stdio.h>
@@ -59,6 +72,83 @@ struct lock {
 
 static int initialized;
 
+<<<<<<< thread.c
+#ifdef __sgi
+/*
+ * This routine is called as a signal handler when another thread
+ * exits.  When that happens, we must see whether we have to exit as
+ * well (because of an exit_prog()) or whether we should continue on.
+ */
+static void exit_sig _P0()
+{
+       dprintf(("exit_sig called\n"));
+       if (exiting && getpid() == my_pid) {
+               dprintf(("already exiting\n"));
+               return;
+       }
+       if (do_exit) {
+               dprintf(("exiting in exit_sig\n"));
+               exit_thread();
+       }
+}
+
+/*
+ * This routine is called when a process calls exit().  If that wasn't
+ * done from the library, we do as if an exit_prog() was intended.
+ */
+static void maybe_exit _P0()
+{
+       dprintf(("maybe_exit called\n"));
+       if (exiting) {
+               dprintf(("already exiting\n"));
+               return;
+       }
+       exit_prog(0);
+}
+#endif
+
+/*
+ * Initialization.
+ */
+void init_thread _P0()
+{
+#ifdef __sgi
+       struct sigaction s;
+#endif
+
+       dprintf(("init_thread called\n"));
+       if (initialized)
+               return;
+       initialized = 1;
+
+#ifdef __sgi
+       my_pid = getpid();      /* so that we know which is the main thread */
+       atexit(maybe_exit);
+       s.sa_handler = exit_sig;
+       sigemptyset(&s.sa_mask);
+       sigaddset(&s.sa_mask, SIGUSR1);
+       s.sa_flags = 0;
+       sigaction(SIGUSR1, &s, 0);
+       prctl(PR_SETEXITSIG, SIGUSR1);
+       usconfig(CONF_ARENATYPE, US_SHAREDONLY);
+       /*usconfig(CONF_LOCKTYPE, US_DEBUGPLUS);*/
+       shared_arena = usinit(tmpnam(0));
+       count_lock = usnewlock(shared_arena);
+       (void) usinitlock(count_lock);
+       wait_lock = usnewlock(shared_arena);
+#endif
+#ifdef sun
+       lwp_setstkcache(STACKSIZE, NSTACKS);
+#endif
+#ifdef C_THREADS
+       cthread_init();
+#endif
+}
+
+/*
+ * Thread support.
+ */
+=======
 #ifdef __sgi
 /*
  * This routine is called as a signal handler when another thread
@@ -134,6 +224,7 @@ void init_thread _P0()
 /*
  * Thread support.
  */
+>>>>>>> 2.3
 int start_new_thread _P2(func, void (*func) _P((void *)), arg, void *arg)
 {
 #ifdef sun