[Openmcl-cvs-notifications] r11769 - /release/1.3/source/lisp-kernel/thread_manager.c
rme at clozure.com
rme at clozure.com
Mon Feb 23 21:48:21 EST 2009
Author: rme
Date: Mon Feb 23 21:48:21 2009
New Revision: 11769
Log:
Merge part of r11742 from trunk (left out the cooperative threads
stuff.)
Modified:
release/1.3/source/lisp-kernel/thread_manager.c
Modified: release/1.3/source/lisp-kernel/thread_manager.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- release/1.3/source/lisp-kernel/thread_manager.c (original)
+++ release/1.3/source/lisp-kernel/thread_manager.c Mon Feb 23 21:48:21 2009
@@ -574,7 +574,18 @@
Boolean gs_was_tcr =3D ensure_gs_pthread();
#endif
TCR *tcr =3D get_interrupt_tcr(false);
-
+ =
+ if (tcr =3D=3D NULL) {
+ /* Got a suspend signal sent to the pthread. */
+ extern natural initial_stack_size;
+ void register_thread_tcr(TCR *);
+ =
+ tcr =3D new_tcr(initial_stack_size, MIN_TSTACK_SIZE);
+ tcr->suspend_count =3D 1;
+ tcr->vs_area->active -=3D node_size;
+ *(--tcr->save_vsp) =3D lisp_nil;
+ register_thread_tcr(tcr);
+ }
if (TCR_INTERRUPT_LEVEL(tcr) <=3D (-2<<fixnumshift)) {
SET_TCR_FLAG(tcr,TCR_FLAG_BIT_PENDING_SUSPEND);
} else {
@@ -1837,7 +1848,7 @@
LispObj callback_macptr =3D nrs_FOREIGN_THREAD_CONTROL.vcell,
callback_ptr =3D ((macptr *)ptr_from_lispobj(untag(callback_macptr))=
)->address;
int i, nbindwords =3D 0;
- extern unsigned initial_stack_size;
+ extern natural initial_stack_size;
=
/* Make one. */
current =3D new_tcr(initial_stack_size, MIN_TSTACK_SIZE);
More information about the Openmcl-cvs-notifications
mailing list