Mercurial > cpython-lru_cache-weakref
annotate Python/thread_os2.h @ 68237:364638d6434d 2.3
Close 2.3 branch.
| author | Georg Brandl <georg@python.org> |
|---|---|
| date | Sat, 05 Mar 2011 14:55:46 +0100 |
| parents | e1a7eb832cb5 |
| children | 3ac8509437df 0b2b076e5908 a19c20c5e5c7 |
| rev | line source |
|---|---|
| 2649 | 1 /* This code implemented by cvale@netcom.com */ |
| 2 | |
| 3 #define INCL_DOSPROCESS | |
| 4 #define INCL_DOSSEMAPHORES | |
| 5 #include "os2.h" | |
| 6 #include "limits.h" | |
| 7 | |
| 8 #include "process.h" | |
| 9 | |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
10 #if defined(PYCC_GCC) |
|
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
11 #include <sys/builtin.h> |
|
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
12 #include <sys/fmutex.h> |
|
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
13 #else |
|
9679
877d23bd5bdc
Thanks to Chris Herborth, the thread primitives now have proper Py*
Guido van Rossum <guido@python.org>
parents:
6626
diff
changeset
|
14 long PyThread_get_thread_ident(void); |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
15 #endif |
| 2649 | 16 |
|
34433
e1a7eb832cb5
backport: make thread stack size compile-time tunable on OS/2
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26531
diff
changeset
|
17 #if !defined(THREAD_STACK_SIZE) |
|
e1a7eb832cb5
backport: make thread stack size compile-time tunable on OS/2
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26531
diff
changeset
|
18 #define THREAD_STACK_SIZE 0x10000 |
|
e1a7eb832cb5
backport: make thread stack size compile-time tunable on OS/2
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26531
diff
changeset
|
19 #endif |
|
e1a7eb832cb5
backport: make thread stack size compile-time tunable on OS/2
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26531
diff
changeset
|
20 |
| 2649 | 21 /* |
| 22 * Initialization of the C package, should not be needed. | |
| 23 */ | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
24 static void |
|
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
25 PyThread__init_thread(void) |
| 2649 | 26 { |
| 27 } | |
| 28 | |
| 29 /* | |
| 30 * Thread support. | |
| 31 */ | |
|
20468
ebfd87e87884
Partial patch from SF #452266, by Jason Petrone.
Guido van Rossum <guido@python.org>
parents:
14375
diff
changeset
|
32 long |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
33 PyThread_start_new_thread(void (*func)(void *), void *arg) |
| 2649 | 34 { |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
35 int aThread; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
36 int success = 0; |
| 2649 | 37 |
|
34433
e1a7eb832cb5
backport: make thread stack size compile-time tunable on OS/2
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26531
diff
changeset
|
38 aThread = _beginthread(func, NULL, THREAD_STACK_SIZE, arg); |
| 2649 | 39 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
40 if (aThread == -1) { |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
41 success = -1; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
42 fprintf(stderr, "aThread failed == %d", aThread); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
43 dprintf(("_beginthread failed. return %ld\n", errno)); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
44 } |
| 2649 | 45 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
46 return success; |
| 2649 | 47 } |
| 48 | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
49 long |
|
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
50 PyThread_get_thread_ident(void) |
| 2649 | 51 { |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
52 #if !defined(PYCC_GCC) |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
53 PPIB pib; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
54 PTIB tib; |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
55 #endif |
| 2649 | 56 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
57 if (!initialized) |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
58 PyThread_init_thread(); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
59 |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
60 #if defined(PYCC_GCC) |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
61 return _gettid(); |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
62 #else |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
63 DosGetInfoBlocks(&tib, &pib); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
64 return tib->tib_ptib2->tib2_ultid; |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
65 #endif |
| 2649 | 66 } |
| 67 | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
68 static void |
|
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
69 do_PyThread_exit_thread(int no_cleanup) |
| 2649 | 70 { |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
71 dprintf(("%ld: PyThread_exit_thread called\n", |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
72 PyThread_get_thread_ident())); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
73 if (!initialized) |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
74 if (no_cleanup) |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
75 _exit(0); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
76 else |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
77 exit(0); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
78 _endthread(); |
| 2649 | 79 } |
| 80 | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
81 void |
|
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
82 PyThread_exit_thread(void) |
| 2649 | 83 { |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
84 do_PyThread_exit_thread(0); |
| 2649 | 85 } |
| 86 | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
87 void |
|
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
88 PyThread__exit_thread(void) |
| 2649 | 89 { |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
90 do_PyThread_exit_thread(1); |
| 2649 | 91 } |
| 92 | |
| 93 #ifndef NO_EXIT_PROG | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
94 static void |
|
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
95 do_PyThread_exit_prog(int status, int no_cleanup) |
| 2649 | 96 { |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
97 dprintf(("PyThread_exit_prog(%d) called\n", status)); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
98 if (!initialized) |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
99 if (no_cleanup) |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
100 _exit(status); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
101 else |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
102 exit(status); |
| 2649 | 103 } |
| 104 | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
105 void |
|
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
106 PyThread_exit_prog(int status) |
| 2649 | 107 { |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
108 do_PyThread_exit_prog(status, 0); |
| 2649 | 109 } |
| 110 | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
111 void |
|
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
112 PyThread__exit_prog(int status) |
| 2649 | 113 { |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
114 do_PyThread_exit_prog(status, 1); |
| 2649 | 115 } |
| 116 #endif /* NO_EXIT_PROG */ | |
| 117 | |
| 118 /* | |
|
20782
b1d9029e09d1
SF patch #474500: Make OS/2 locks work like posix locks, from Michael
Tim Peters <tim.peters@gmail.com>
parents:
20468
diff
changeset
|
119 * Lock support. This is implemented with an event semaphore and critical |
|
b1d9029e09d1
SF patch #474500: Make OS/2 locks work like posix locks, from Michael
Tim Peters <tim.peters@gmail.com>
parents:
20468
diff
changeset
|
120 * sections to make it behave more like a posix mutex than its OS/2 |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
121 * counterparts. |
| 2649 | 122 */ |
|
20782
b1d9029e09d1
SF patch #474500: Make OS/2 locks work like posix locks, from Michael
Tim Peters <tim.peters@gmail.com>
parents:
20468
diff
changeset
|
123 |
|
b1d9029e09d1
SF patch #474500: Make OS/2 locks work like posix locks, from Michael
Tim Peters <tim.peters@gmail.com>
parents:
20468
diff
changeset
|
124 typedef struct os2_lock_t { |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
125 int is_set; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
126 HEV changed; |
|
20782
b1d9029e09d1
SF patch #474500: Make OS/2 locks work like posix locks, from Michael
Tim Peters <tim.peters@gmail.com>
parents:
20468
diff
changeset
|
127 } *type_os2_lock; |
|
b1d9029e09d1
SF patch #474500: Make OS/2 locks work like posix locks, from Michael
Tim Peters <tim.peters@gmail.com>
parents:
20468
diff
changeset
|
128 |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
129 PyThread_type_lock |
|
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
130 PyThread_allocate_lock(void) |
| 2649 | 131 { |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
132 #if defined(PYCC_GCC) |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
133 _fmutex *sem = malloc(sizeof(_fmutex)); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
134 if (!initialized) |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
135 PyThread_init_thread(); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
136 dprintf(("%ld: PyThread_allocate_lock() -> %lx\n", |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
137 PyThread_get_thread_ident(), |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
138 (long)sem)); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
139 if (_fmutex_create(sem, 0)) { |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
140 free(sem); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
141 sem = NULL; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
142 } |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
143 return (PyThread_type_lock)sem; |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
144 #else |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
145 APIRET rc; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
146 type_os2_lock lock = (type_os2_lock)malloc(sizeof(struct os2_lock_t)); |
| 2649 | 147 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
148 dprintf(("PyThread_allocate_lock called\n")); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
149 if (!initialized) |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
150 PyThread_init_thread(); |
| 2649 | 151 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
152 lock->is_set = 0; |
|
20782
b1d9029e09d1
SF patch #474500: Make OS/2 locks work like posix locks, from Michael
Tim Peters <tim.peters@gmail.com>
parents:
20468
diff
changeset
|
153 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
154 DosCreateEventSem(NULL, &lock->changed, 0, 0); |
| 2649 | 155 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
156 dprintf(("%ld: PyThread_allocate_lock() -> %p\n", |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
157 PyThread_get_thread_ident(), |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
158 lock->changed)); |
| 2649 | 159 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
160 return (PyThread_type_lock)lock; |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
161 #endif |
| 2649 | 162 } |
| 163 | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
164 void |
|
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
165 PyThread_free_lock(PyThread_type_lock aLock) |
| 2649 | 166 { |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
167 #if !defined(PYCC_GCC) |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
168 type_os2_lock lock = (type_os2_lock)aLock; |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
169 #endif |
|
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
170 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
171 dprintf(("%ld: PyThread_free_lock(%p) called\n", |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
172 PyThread_get_thread_ident(),aLock)); |
| 2649 | 173 |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
174 #if defined(PYCC_GCC) |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
175 if (aLock) { |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
176 _fmutex_close((_fmutex *)aLock); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
177 free((_fmutex *)aLock); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
178 } |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
179 #else |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
180 DosCloseEventSem(lock->changed); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
181 free(aLock); |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
182 #endif |
| 2649 | 183 } |
| 184 | |
| 185 /* | |
| 186 * Return 1 on success if the lock was acquired | |
| 187 * | |
|
20782
b1d9029e09d1
SF patch #474500: Make OS/2 locks work like posix locks, from Michael
Tim Peters <tim.peters@gmail.com>
parents:
20468
diff
changeset
|
188 * and 0 if the lock was not acquired. |
| 2649 | 189 */ |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
190 int |
|
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
191 PyThread_acquire_lock(PyThread_type_lock aLock, int waitflag) |
| 2649 | 192 { |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
193 #if !defined(PYCC_GCC) |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
194 int done = 0; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
195 ULONG count; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
196 PID pid = 0; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
197 TID tid = 0; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
198 type_os2_lock lock = (type_os2_lock)aLock; |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
199 #endif |
| 2649 | 200 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
201 dprintf(("%ld: PyThread_acquire_lock(%p, %d) called\n", |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
202 PyThread_get_thread_ident(), |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
203 aLock, |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
204 waitflag)); |
| 2649 | 205 |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
206 #if defined(PYCC_GCC) |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
207 /* always successful if the lock doesn't exist */ |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
208 if (aLock && |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
209 _fmutex_request((_fmutex *)aLock, waitflag ? 0 : _FMR_NOWAIT)) |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
210 return 0; |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
211 #else |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
212 while (!done) { |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
213 /* if the lock is currently set, we have to wait for |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
214 * the state to change |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
215 */ |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
216 if (lock->is_set) { |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
217 if (!waitflag) |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
218 return 0; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
219 DosWaitEventSem(lock->changed, SEM_INDEFINITE_WAIT); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
220 } |
|
20782
b1d9029e09d1
SF patch #474500: Make OS/2 locks work like posix locks, from Michael
Tim Peters <tim.peters@gmail.com>
parents:
20468
diff
changeset
|
221 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
222 /* enter a critical section and try to get the semaphore. If |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
223 * it is still locked, we will try again. |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
224 */ |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
225 if (DosEnterCritSec()) |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
226 return 0; |
|
20782
b1d9029e09d1
SF patch #474500: Make OS/2 locks work like posix locks, from Michael
Tim Peters <tim.peters@gmail.com>
parents:
20468
diff
changeset
|
227 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
228 if (!lock->is_set) { |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
229 lock->is_set = 1; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
230 DosResetEventSem(lock->changed, &count); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
231 done = 1; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
232 } |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
233 |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
234 DosExitCritSec(); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
235 } |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
236 #endif |
| 2649 | 237 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
238 return 1; |
| 2649 | 239 } |
| 240 | |
|
20782
b1d9029e09d1
SF patch #474500: Make OS/2 locks work like posix locks, from Michael
Tim Peters <tim.peters@gmail.com>
parents:
20468
diff
changeset
|
241 void PyThread_release_lock(PyThread_type_lock aLock) |
| 2649 | 242 { |
|
26530
b5837b8f3b2c
typo fix: declaration required for VACPP not EMX+gcc
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
22054
diff
changeset
|
243 #if !defined(PYCC_GCC) |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
244 type_os2_lock lock = (type_os2_lock)aLock; |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
245 #endif |
|
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
246 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
247 dprintf(("%ld: PyThread_release_lock(%p) called\n", |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
248 PyThread_get_thread_ident(), |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
249 aLock)); |
| 2649 | 250 |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
251 #if defined(PYCC_GCC) |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
252 if (aLock) |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
253 _fmutex_release((_fmutex *)aLock); |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
254 #else |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
255 if (!lock->is_set) { |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
256 dprintf(("%ld: Could not PyThread_release_lock(%p) error: %l\n", |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
257 PyThread_get_thread_ident(), |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
258 aLock, |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
259 GetLastError())); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
260 return; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
261 } |
|
20782
b1d9029e09d1
SF patch #474500: Make OS/2 locks work like posix locks, from Michael
Tim Peters <tim.peters@gmail.com>
parents:
20468
diff
changeset
|
262 |
|
26531
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
263 if (DosEnterCritSec()) { |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
264 dprintf(("%ld: Could not PyThread_release_lock(%p) error: %l\n", |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
265 PyThread_get_thread_ident(), |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
266 aLock, |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
267 GetLastError())); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
268 return; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
269 } |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
270 |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
271 lock->is_set = 0; |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
272 DosPostEventSem(lock->changed); |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
273 |
|
8e1567dbcba8
reformat for PEP-7 style conformance
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
26530
diff
changeset
|
274 DosExitCritSec(); |
|
22054
5cbcfde3ad55
OS/2 EMX port changes (Python part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21766
diff
changeset
|
275 #endif |
| 2649 | 276 } |
