Commit graph

5190 commits

Author SHA1 Message Date
Juan Jose Garcia Ripoll
1472cc91ef Removed the code for alternative stacks 2012-04-08 20:29:41 +02:00
Juan Jose Garcia Ripoll
2425a9ebb9 process_interrupt_handler() now handles _all_ queued signals, instead of just one. 2012-04-08 17:18:38 +02:00
Juan Jose Garcia Ripoll
1f89d8620c SIGSEGV and SIGBUS share signal handler 2012-04-08 16:57:22 +02:00
Juan Jose Garcia Ripoll
840f041179 Avoid nested SIGSEGV/BUS interrupts, aborting immediately when it happens 2012-04-08 16:33:23 +02:00
Juan Jose Garcia Ripoll
8d1c35daeb ecl_unrecoverable_error() verifies that some frame was established before jumping to it. 2012-04-08 16:17:50 +02:00
Juan Jose Garcia Ripoll
9825171f42 Only deliver signals to active processes. 2012-04-08 16:12:11 +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
6b77244d07 Relax the iteration error in LOOP to a warning 2012-04-08 00:50:05 +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
748eb30ebe mp:mailbox-empty-p returned the opposite value. 2012-04-07 01:07:02 +02:00
Juan Jose Garcia Ripoll
ad49125681 Implemented a first prototype of mailbox 2012-04-07 00:55:14 +02:00
Juan Jose Garcia Ripoll
c123b66245 ecl_wait_on() returns the value of the tester. 2012-04-06 23:51:00 +02:00
Juan Jose Garcia Ripoll
c31ac36f91 get_semaphore_inner() must try to repeat decrementing the semaphore if CAS failed. 2012-04-06 23:17:43 +02:00
Juan Jose Garcia Ripoll
7643157118 Replace a @(return) with an ecl_return1() 2012-04-06 23:12:23 +02:00
Juan Jose Garcia Ripoll
defc12c1bc The waiter for a barrier must check both that it was signaled and that the barrier is enabled. 2012-04-06 23:07:22 +02:00
Juan Jose Garcia Ripoll
b053cd80ec The macroexpander for CASE also warns about an improper order of statements. 2012-04-06 18:49:09 +02:00
Juan Jose Garcia Ripoll
671aef6634 Warn when the OTHERWISE/T clause in CASE appears at a position other than the last one. 2012-04-06 18:20:55 +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
d0abeffcdd DIRECTORY does not complain about non-existent directory components 2012-04-06 18:04:00 +02:00
Juan Jose Garcia Ripoll
56d53420a9 In external-process-wait, spin to ensure that a structure was already updated by the concurrent thread. 2012-04-06 12:37:29 +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
d161ac43f9 wakeup_one() did not use the spinlocks and had some additional implementation errors. 2012-04-06 12:08:47 +02:00
Juan Jose Garcia Ripoll
9ee80d0396 Sometimes the environment of a process might be NULL -- in that case, avoid marking. 2012-04-06 11:47:58 +02:00
Juan Jose Garcia Ripoll
42459677a0 mp:barrier-wait was missing the condition for disabled barriers 2012-04-06 11:24:27 +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
44fbe27453 List new thread files in emacs.el 2012-04-05 01:11:03 +02:00
Juan Jose Garcia Ripoll
0221323a84 Change special handling of interrupt signal in asynchronous_signal_servicing_thread() 2012-04-05 01:11:03 +02:00
Juan Jose Garcia Ripoll
e192df6069 Fixed order of arguments to pthread_sigmask() 2012-04-05 01:08:39 +02:00
Juanjo Garcia-Ripoll
1683fe140d Removed wrong comment 2012-04-02 17:28:33 +02:00
Juanjo Garcia-Ripoll
0fecb887e0 Implemented semaphores using atomic operations 2012-04-02 17:12:50 +02:00
Juan Jose Garcia Ripoll
e607b5c7f8 Fixed a typo in queue.d 2012-04-01 12:32:44 +02:00
Juan Jose Garcia Ripoll
b45695b642 Remove change that slipped from previous debugging sessions. 2012-03-31 11:30:06 +02:00
Juan Jose Garcia Ripoll
1de1d7e428 ecl_wait_on() takes the environment as an argument 2012-03-31 11:25:56 +02:00
Juan Jose Garcia Ripoll
667362a485 mp_get_lock_wait() checks the type of the lock before dereferencing a field. 2012-03-31 11:22:23 +02:00
Juan Jose Garcia Ripoll
e278e1d5a7 When the lock is interrupted, we have to ensure that some thread is woken up. 2012-03-31 11:17:27 +02:00
Juan Jose Garcia Ripoll
108dffc08e Moved some comments 2012-03-31 11:17:08 +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
008a260e1f In ecl_wait_on(), take care of the situation in which we abort waiting but do not care to acquire the lock: the other waiters must then be awoken. 2012-03-31 10:54:01 +02:00
Juan Jose Garcia Ripoll
e614f54a10 Resucitate the ecl_wait_on() implementation based on nanosleep(). 2012-03-29 22:45:58 +02:00
Juan Jose Garcia Ripoll
a5d1a4fdad Only block the process communication thread 2012-03-29 22:25:28 +02:00
Juan Jose Garcia Ripoll
1a9789f271 Directly access the option values array and only block the process interrupt in ecl_wait_on(). 2012-03-29 22:11:29 +02:00
Juan Jose Garcia Ripoll
c4023263f0 Fixed small typo. 2012-03-29 20:25:28 +02:00
Juan Jose Garcia Ripoll
0b013aeaa4 Remove install_process_interupt_handler(), which is after all a synchronous signal handler 2012-03-29 20:23:14 +02:00
Juan Jose Garcia Ripoll
2d0f9bd1ed Split the process interrupt handler from others, to speed it up a bit. 2012-03-29 20:15:05 +02:00
Juan Jose Garcia Ripoll
616bcfcf0c Move the definition of sched_yield() up for scope reasons. 2012-03-29 19:34:12 +02:00
Juan Jose Garcia Ripoll
fc62d7927f Eliminated all of the remnants from the ecl_atomic_queue interface 2012-03-29 18:57:31 +02:00
Juan Jose Garcia Ripoll
a0252e9509 Remove debug statement 2012-03-29 18:51:08 +02:00