[Openmcl-cvs-notifications] r14199 - /trunk/source/lisp-kernel/thread_manager.c
gb at clozure.com
gb at clozure.com
Wed Aug 18 07:41:02 CDT 2010
Author: gb
Date: Wed Aug 18 07:41:02 2010
New Revision: 14199
Log:
Free the (separate) signal stack on thread exit on ARM Linux.
Modified:
trunk/source/lisp-kernel/thread_manager.c
Modified: trunk/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
--- trunk/source/lisp-kernel/thread_manager.c (original)
+++ trunk/source/lisp-kernel/thread_manager.c Wed Aug 18 07:41:02 2010
@@ -1433,6 +1433,22 @@
if (cs) {
condemn_area_holding_area_lock(cs);
}
+ /* On some platforms - currently just linuxarm - we have to
+ allocate a separate alternate signal stack (rather than just
+ using a few pages of the thread's main stack.) Disable and
+ free that alternate stack here.
+ */
+#ifdef ARM
+#if defined(LINUX)
+ {
+ stack_t new, current;
+ new.ss_flags =3D SS_DISABLE;
+ if (sigaltstack(&new, ¤t) =3D=3D 0) {
+ munmap(current.ss_sp, current.ss_size);
+ }
+ }
+#endif
+#endif
destroy_semaphore(&tcr->suspend);
destroy_semaphore(&tcr->resume);
destroy_semaphore(&tcr->reset_completion);
More information about the Openmcl-cvs-notifications
mailing list