]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Sjoerd's thread changes (including down_sema typo fix).
authorGuido van Rossum <guido@python.org>
Tue, 8 Oct 1996 14:17:53 +0000 (14:17 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 8 Oct 1996 14:17:53 +0000 (14:17 +0000)
Note: waitflag not supported on NT.

Python/thread_cthread.h
Python/thread_foobar.h
Python/thread_lwp.h
Python/thread_nt.h
Python/thread_os2.h
Python/thread_pthread.h
Python/thread_sgi.h
Python/thread_solaris.h

index 79bcc0f40de4feb497ee4046d9b6c41c64177242..1e731ac5c093f992d2ae7cff69f1c50847b7b538 100644 (file)
@@ -183,10 +183,11 @@ void free_sema _P1(sema, type_sema sema)
        dprintf(("free_sema(%lx) called\n", (long) sema));
 }
 
-void down_sema _P1(sema, type_sema sema)
+int down_sema _P2(sema, type_sema sema, waitflag, int waitflag)
 {
-       dprintf(("down_sema(%lx) called\n", (long) sema));
+       dprintf(("down_sema(%lx, %d) called\n", (long) sema, waitflag));
        dprintf(("down_sema(%lx) return\n", (long) sema));
+       return -1;
 }
 
 void up_sema _P1(sema, type_sema sema)
index 772f26b6f9f27316612b12656c7241e155d4f3a7..0bf58f48ab5042824f3607d312bf3fac43295c17 100644 (file)
@@ -142,10 +142,11 @@ void free_sema _P1(sema, type_sema sema)
        dprintf(("free_sema(%lx) called\n", (long) sema));
 }
 
-void down_sema _P1(sema, type_sema sema)
+int down_sema _P2(sema, type_sema sema, waitflag, int waitflag)
 {
-       dprintf(("down_sema(%lx) called\n", (long) sema));
+       dprintf(("down_sema(%lx, %d) called\n", (long) sema, waitflag));
        dprintf(("down_sema(%lx) return\n", (long) sema));
+       return -1;
 }
 
 void up_sema _P1(sema, type_sema sema)
index a4e943f008f459b51e71124e4b29fb1a0aef851b..154133450312872fb4f4b58c298fa8e68de00377 100644 (file)
@@ -190,10 +190,11 @@ void free_sema _P1(sema, type_sema sema)
        dprintf(("free_sema(%lx) called\n", (long) sema));
 }
 
-void down_sema _P1(sema, type_sema sema)
+int down_sema _P2(sema, type_sema sema, waitflag, int waitflag)
 {
-       dprintf(("down_sema(%lx) called\n", (long) sema));
+       dprintf(("down_sema(%lx, %d) called\n", (long) sema, waitflag));
        dprintf(("down_sema(%lx) return\n", (long) sema));
+       return -1;
 }
 
 void up_sema _P1(sema, type_sema sema)
index 453e942b99833f4a40b9265420ad8a0e152edeb2..18b01be6fd1ab84d718310ed3cfeff3a7ee8b15f 100644 (file)
@@ -223,7 +223,10 @@ void free_sema(type_sema aSemaphore)
        CloseHandle((HANDLE) aSemaphore);
 }
 
-void down_sema(type_sema aSemaphore)
+/*
+  XXX must do something about waitflag
+ */
+int down_sema(type_sema aSemaphore, int waitflag)
 {
        DWORD waitResult;
 
@@ -232,6 +235,7 @@ void down_sema(type_sema aSemaphore)
        waitResult = WaitForSingleObject( (HANDLE) aSemaphore, INFINITE);
 
        dprintf(("%ld: down_sema(%lx) return: %l\n", get_thread_ident(),(long) aSemaphore, waitResult));
+       return 0;
 }
 
 void up_sema(type_sema aSemaphore)
index f9eda928dbaf5e0ffc4d62ac9f1f2bd92f653351..00a5244feb43ef3fe4c49518a2f08ef98a277a67 100644 (file)
@@ -203,9 +203,9 @@ void free_sema(type_sema aSemaphore)
 
 }
 
-void down_sema(type_sema aSemaphore)
+void down_sema(type_sema aSemaphore, int waitflag)
 {
-
+  return -1;
 }
 
 void up_sema(type_sema aSemaphore)
index 0485e667cf2c63118d830df1c5f785b434905169..a43a2f81d687ba7b2b41e3e334802bbf20808003 100644 (file)
@@ -274,10 +274,11 @@ void free_sema _P1(sema, type_sema sema)
        dprintf(("free_sema(%lx) called\n", (long) sema));
 }
 
-void down_sema _P1(sema, type_sema sema)
+int down_sema _P2(sema, type_sema sema, waitflag, int waitflag)
 {
-       dprintf(("down_sema(%lx) called\n", (long) sema));
+       dprintf(("down_sema(%lx, %d) called\n", (long) sema, waitflag));
        dprintf(("down_sema(%lx) return\n", (long) sema));
+       return -1;
 }
 
 void up_sema _P1(sema, type_sema sema)
index 654d4aec3a6c676f949163c5b06ce6670c96c30e..79357a5f5fd8ef540c605a8236e1e7162caf1f89 100644 (file)
@@ -423,12 +423,19 @@ void free_sema _P1(sema, type_sema sema)
        usfreesema((usema_t *) sema, shared_arena);
 }
 
-void down_sema _P1(sema, type_sema sema)
+int down_sema _P2(sema, type_sema sema, waitflag, int waitflag)
 {
+       int success;
+
        dprintf(("down_sema(%lx) called\n", (long) sema));
-       if (uspsema((usema_t *) sema) < 0)
-               perror("uspsema");
+       if (waitflag)
+               success = uspsema((usema_t *) sema);
+       else
+               success = uscpsema((usema_t *) sema);
+       if (success < 0)
+               perror(waitflag ? "uspsema" : "uscpsema");
        dprintf(("down_sema(%lx) return\n", (long) sema));
+       return success;
 }
 
 void up_sema _P1(sema, type_sema sema)
index f7fd056922fc563d0da4334baf7c5e13583ce125..871affa096381d9dbc64d4ad980bc3cde9ae67ac 100644 (file)
@@ -25,6 +25,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include <stdlib.h>
 #include <stdio.h>
 #include <unistd.h>
+#include <errno.h>
 #include </usr/include/thread.h>
 #undef _POSIX_THREADS
 
@@ -211,12 +212,25 @@ void free_sema _P1(sema, type_sema sema)
        free((void *) sema);
 }
 
-void down_sema _P1(sema, type_sema sema)
+int down_sema _P2(sema, type_sema sema, waitflag, int waitflag)
 {
+       int success;
+
        dprintf(("down_sema(%lx) called\n", (long) sema));
-       if (sema_wait((sema_t *) sema))
-               perror("sema_wait");
-       dprintf(("down_sema(%lx) return\n", (long) sema));
+       if (waitflag)
+               success = sema_wait((sema_t *) sema);
+       else
+               success = sema_trywait((sema_t *) sema);
+       if (success < 0) {
+               if (errno == EBUSY)
+                       success = 0;
+               else
+                       perror("sema_wait");
+       }
+       else
+               success = !success;
+       dprintf(("down_sema(%lx) return %d\n", (long) sema, success));
+       return success;
 }
 
 void up_sema _P1(sema, type_sema sema)