Commit graph

58 commits

Author SHA1 Message Date
Daniel Kochmański
11e35ea5b9 windows: gc: remove spurious define
Older bdwgc didn't export that symbol, so ECL patched that definition
for its own threaded needs. bdwgc has improved since then and our own
definition breaks CC builds. Fixes #288.

See https://gitlab.com/embeddable-common-lisp/ecl/issues/288
2016-09-16 11:03:44 +02:00
Fabrizio Fabbri
1e5e86c1d2 Fix on several minor issue on thread.
- fix #262 to manage CTRL+c on Win.
- unregistered thread are left registered and enviroment not cleanup.
-  manage when a finalizer is invoked before a valid enviroment is available.
2016-08-23 15:28:23 -04:00
Walter Genovese
67b2000ac6 MSVC fix ecl_import_current_thread
* Do not close thread handler until the thread is unregistered otherwise
  the thread wakeup using QueueUserAPC will not work.
2016-05-12 13:09:53 -04:00
Fabrizio Fabbri
ca2a0c91e6 Fix import thread 2016-05-12 13:09:52 -04:00
Daniel Kochmański
5e8ec11bdd cosmetic: fix indent (rest of C) 2016-05-06 08:41:52 +02:00
Denis Martinez
2b8bfc2825 fix a minor typo 2015-09-07 15:27:06 +02:00
Daniel Kochmański
0d25eccfb8 regression: add back removed interfaces
Adds back ecl_import_current_thread and ecl_release_current_thread.
Closes #8.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-09-04 21:29:08 +02:00
Matthew Mondor
8f07cd58d8 The ECL code no longer uses tabulator characters, they were replaced
by spaces.

A custom script was used to insert/replace Emacs and ViM per-file editor
settings according to their type and the new ECL coding style.
2015-09-03 07:35:47 -04:00
Daniel Kochmański
2f869e6eb6 windows: when using msvc, don't handle interrupts
Installed spawning process was broken and unimportant. ECL ignores C-c
interrupt and passes forward all the others when build with
msvc. Fixes #8.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-08-21 19:43:27 +02:00
Daniel Kochmański
4d19a27424 cosmetic: untabify
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
2015-06-21 14:38:20 +02:00
Juan Jose Garcia Ripoll
94b37a8ab6 Missing use of ECL_NO_TL_BINDING in process.d 2013-05-24 21:33:06 +02:00
Juan Jose Garcia Ripoll
c5d7b4c960 The value of *CURRENT-PROCESS* must be bound by ecl_import_current_thread(). 2012-11-09 22:20:01 +01:00
Juan Jose Garcia Ripoll
e6038ce113 Use the garbage collector routines to get the stack base in a more accurate way 2012-10-31 20:50:30 +01:00
Juan Jose Garcia Ripoll
42f0b2eaa5 Fixed problems in ecl_register_current_thread(). First, allocation of environment and process structures could not proceed when ecl_process_env() did not return a valid environment. Second, we can only call GC_unregister_my_thread() when the thread was not created by the garbage collector itself, for which we must inspect the output of GC_register_my_thread() 2012-09-27 23:06:56 +02:00
Juan Jose Garcia Ripoll
14d2960135 Use a spinlock for a thread wait until its process structure is completed by its parent. Rename waiting_for to woken_up for the real application it has. 2012-07-30 22:11:50 +02:00
Juan Jose Garcia Ripoll
52f6efc2a0 Fixed typo in process.d 2012-07-22 22:12:57 +02:00
Juan Jose Garcia Ripoll
e54d9a6173 Rename type_of -> ecl_t_of 2012-07-05 23:07:34 +02:00
Juanjo Garcia-Ripoll
9d4a68897a Fixed typo in process.d 2012-07-03 11:18:45 +02:00
Juan Jose Garcia Ripoll
e1fb39a49b Changed the name of the macro ECL_RESTARTS_TRY to ECL_RESTART_CASE 2012-07-02 23:21:34 +02:00
Juan Jose Garcia Ripoll
84a3200a02 Implemented a simple variant of RESTART-CASE in C. Used it to bind the restart ABORT on every thread. Introduced the function ecl_setq() 2012-07-02 22:49:27 +02:00
Juan Jose Garcia Ripoll
825fc8cbd3 Cnil and Ct are now part of legacy 2012-06-30 23:01:40 +02:00
Juan Jose Garcia-Ripoll
efadef99dc Prefix the block creation macros, ECL_BLOCK_*, etc 2012-06-30 12:01:44 +02:00
Juan Jose Garcia-Ripoll
05a16801ca Rename cl_va_* macros to ecl_va_* 2012-06-24 20:46:55 +02:00
Juan Jose Garcia Ripoll
52512c15a4 Rename the stp_* and aet_* enumeration names with the ecl_ prefix 2012-06-08 00:12:48 +02:00
Juan Jose Garcia Ripoll
64a9168434 CHARACTERP, BASE_CHAR_P, BASE_CHAR_CODE_P, CODE_CHAR, CHAR_CODE, REAL_TYPE, IMMEDIATE, IMMEDIATE_TAG, FIXNUM_TAG, FIXNUM_MINUSP, FIXNUM_PLUSP, FIXNUMP and fix get the ecl_ prefix 2012-06-06 11:19:55 +02:00
Juanjo Garcia-Ripoll
57cd6e3066 Minor changes to add the new MP objects to the MSVC port and new code for waking up processes in this platform. 2012-04-16 23:35:40 +02:00
Juan Jose Garcia Ripoll
e3a426896f The process list is now protected by a spinlock 2012-04-12 23:59:20 +02:00
Juan Jose Garcia Ripoll
fbd3587b1a Removed further warnings about uninitialized or unused variables and functions 2012-04-11 23:04:27 +02:00
Juan Jose Garcia Ripoll
3bbba10703 Block interrupts when exiting the thread. 2012-04-11 22:03:25 +02:00
Juan Jose Garcia Ripoll
036cb55928 Fixes to remove warnings about unused variables. Replaced some uses of @(return) with ecl_return*() 2012-04-10 23:20:40 +02:00
Juan Jose Garcia Ripoll
d33fa59ee4 Immediately register the process with the env it forms part of. 2012-04-08 15:19:06 +02:00
Juan Jose Garcia Ripoll
f03bb29cd9 Ensure that a process is listed when its environment is created, so that this environment is marked. 2012-04-08 12:29:34 +02:00
Juan Jose Garcia Ripoll
cd02c2a0f4 Totally block signals until a thread is completely set up. 2012-04-08 00:24:36 +02:00
Juan Jose Garcia Ripoll
8810352ceb Fixed wrong initialization error in process.d 2012-04-07 19:32:09 +02:00
Juan Jose Garcia Ripoll
3980ea5d66 Removed the process.active field and instead used 'process.phase'. Added some debug statements. Threads are launched also with POSIX signals disabled (at least ECL's signal). 2012-04-06 18:07:58 +02:00
Juan Jose Garcia Ripoll
d771c29fcf MP:PROCESS-JOIN now works with an exit barrier that is set up for each process. 2012-04-06 12:08:47 +02:00
Juan Jose Garcia Ripoll
a5eb54dd27 Implemented mp:barrier and fixed unixsys.d to use spinlocks and not real locks. 2012-04-06 00:18:29 +02:00
Juan Jose Garcia Ripoll
7d97d8c817 Define ecl_process_yield() 2012-04-05 10:24:53 +02:00
Juan Jose Garcia Ripoll
57b24d5807 The main process was not marked as ctive. 2012-03-31 11:16:10 +02:00
Juan Jose Garcia Ripoll
4cf99dce0b Reuse the cons that is used for adding a process to a wait queue. 2012-03-29 15:25:59 +02:00
Juanjo Garcia-Ripoll
d0e9b4cd47 While a thread is booting: i) signals are ignored, ii) mp_process_join() and mp_process_kill() wait. 2012-03-20 17:46:31 +01:00
Juan Jose Garcia Ripoll
cacf1be931 mp_process_kill() and mp_process_join() now check whether the process is alive. 2012-03-20 00:02:51 +01:00
Juan Jose Garcia Ripoll
1ff7d7e4c2 In process.d, handling of the process vector includes compacting it and using a global lock for all tasks. 2012-03-18 13:29:21 +01:00
Juan Jose Garcia Ripoll
607ecaea2a The list of processes now has a fill pointer 2012-03-17 19:35:07 +01:00
Juan Jose Garcia Ripoll
9707940125 The process list is now an array 2012-02-18 20:16:06 +01:00
Juan Jose Garcia Ripoll
d5296f2563 Implement mutexes using CAS. Deactivate condition variables temporarily. 2012-02-12 23:31:29 +01:00
Juan Jose Garcia Ripoll
bc7be9bb98 Improved EXT:CATCH-SIGNAL to handle not running processes, threads and better use of sigprocmask. 2011-08-06 22:47:39 +02:00
Juan Jose Garcia Ripoll
e6bb812e38 Protect the GET/SET-SYSPROP hash using the same global lock as packages, which is now called cl_core.global_env read/write-lock 2011-07-31 17:03:24 +02:00
Juan Jose Garcia Ripoll
4f1da6d6f6 Fix package prefix (si->ext) in Windows' threading code (src/c/threads/process.d) 2011-05-22 23:35:07 +02:00
Juan Jose Garcia Ripoll
a7000ca0f9 Reimplementation of the SIGCHLD handler -- avoids race conditions using the signal handling thread. 2011-03-13 21:59:36 +01:00