Commit graph

5160 commits

Author SHA1 Message Date
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
Juan Jose Garcia Ripoll
328ac68f83 No need to create an extra cons for the wait queue 2012-03-29 18:50:58 +02:00
Juan Jose Garcia Ripoll
72fb2b575c Use the spinlock in the queue object and not in the cons 2012-03-29 18:33:58 +02:00
Juan Jose Garcia Ripoll
47b906b18f Do not pass the wait queue cons object around 2012-03-29 18:18:38 +02:00
Juan Jose Garcia Ripoll
5b1007c787 Change field names and introduce the spinlock in the lock structure 2012-03-29 17:43:27 +02:00
Juan Jose Garcia Ripoll
658d1c53ab Removed unused code and refactored all the queue code into queueu.d 2012-03-29 17:37:35 +02:00
Juan Jose Garcia Ripoll
9331ec4ac5 Condition variables must _always_ wake up somebody. 2012-03-29 16:47:55 +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
Juan Jose Garcia Ripoll
b9cebb0cf7 print_lock() is now more like printf(). New implementation of the queue. 2012-03-29 12:45:22 +02:00
Juan Jose Garcia Ripoll
4bbeaa8f6e Handle SIGILL. 2012-03-29 12:43:50 +02:00
Juan Jose Garcia Ripoll
76de423dcd Remove debug statements 2012-03-28 21:53:48 +02:00
Juan Jose Garcia Ripoll
a5661d8ad5 Do not try the atomic lock operation if there are processes waiting. 2012-03-27 22:55:02 +02:00
Juan Jose Garcia Ripoll
e0a8c7b568 Check whether sched_yield() is available. 2012-03-27 22:53:58 +02:00
Juan Jose Garcia Ripoll
9ed7234c54 Debug wait queue 2012-03-23 23:23:53 +01:00
Juan Jose Garcia Ripoll
ad3b5ce069 Export spinlocks in internal.h 2012-03-23 22:30:19 +01: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
d54cbaa749 ecl_check_pending_interrupts() now takes the environment as argument
To wake up a process we need not supply any function (it is faster as it saves a call to queue_signal()
2012-03-20 00:02:47 +01:00
Juan Jose Garcia Ripoll
b10c0c1acf Interrupts will be discarded for exiting processes (avoids a harmful process kill signal when trying to clean up) 2012-03-19 23:59:58 +01:00
Juan Jose Garcia Ripoll
a444e8d290 When giving up a lock there is no need to disable interrupts. 2012-03-19 23:59:16 +01:00
Juan Jose Garcia Ripoll
445431daa4 Mutexes and condition variables now rely on a queue for organizing waiters. 2012-03-19 01:14:22 +01:00
Juan Jose Garcia Ripoll
a98208d1ea Fixed identification of inactive processes in unixint.d 2012-03-19 01:13:58 +01:00
Juan Jose Garcia Ripoll
bc738ccae8 The lock.waiter field was not marked during GC 2012-03-19 00:59:51 +01:00
Juan Jose Garcia Ripoll
6719519516 Simplified the function that creates the bytecodes compiler environment 2012-03-18 20:19:47 +01:00
Juan Jose Garcia Ripoll
af9808d5d9 Save the value of the code walker in the compiler environment 2012-03-18 20:03:30 +01:00
Juan Jose Garcia Ripoll
83b38deac6 In list_directory() the text mask is now a lisp object 2012-03-18 17:21:00 +01:00
Juan Jose Garcia Ripoll
f074dd441f When a directory component is not a wild string, nor a wild keyword, ECL no longer tries to list the directory. 2012-03-18 16:54:10 +01:00
Juan Jose Garcia Ripoll
f37055af48 New function to detect wild pathname components. 2012-03-18 16:53:44 +01:00
Juan Jose Garcia Ripoll
a85ee4d210 When in Unicode, ensure that the output string is always of the desired format, which defaults to :UTF8 for compiled files. 2012-03-18 16:24:46 +01:00
Juan Jose Garcia Ripoll
e48229c81a After -shell, stop processing any further arguments. 2012-03-18 16:24:46 +01:00
Juan Jose Garcia Ripoll
a9878638c1 MSVC admits 64 bit integers also in 32 bit mode. 2012-03-18 15:43:27 +01:00