Commit graph

5132 commits

Author SHA1 Message Date
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
Juan Jose Garcia Ripoll
8a91265468 ECL was not using 'inline' functions when GCC switched to C99 (A. Hefner) 2012-03-18 15:42:11 +01:00
Juan Jose Garcia Ripoll
50cb6b5e07 The condition function in ecl_wait_on() now takes an environment argument. 2012-03-18 13:29:49 +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
f36b002a5f Slight optimization of the function that searches closure boundaries in CLOS 2012-03-18 13:24:35 +01:00
Juan Jose Garcia Ripoll
2d713f26f4 An overoptimization when compiling variables lead to some function boundaries not being registered 2012-03-18 13:24:18 +01:00
Juan Jose Garcia Ripoll
f8f67f0fbf Update list of files for Emacs 2012-03-18 01:19:42 +01:00
Juan Jose Garcia Ripoll
141b2f909b Implemented a first version of userspace condition variables. 2012-03-17 20:56:58 +01:00
Juan Jose Garcia Ripoll
15ffd896a9 In ecl_wait_on() added a fast path using spinlocks and a slow path using unwind-protect. 2012-03-17 19:37:52 +01:00
Juan Jose Garcia Ripoll
ac497876f3 The mutex only tries to wake one process 2012-03-17 19:37:13 +01:00
Juan Jose Garcia Ripoll
9ac615eca6 Removed debug statement 2012-03-17 19:35:47 +01:00
Juan Jose Garcia Ripoll
0782f9a2fb ecl_musleep() no longer disables interrupts. 2012-03-17 19:35:33 +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
fad8ebefae Fixed unbalanced parenthesis in alloc_2.d 2012-03-17 19:34:48 +01:00
Juan Jose Garcia Ripoll
d5bfaa2e9c The CLOS cache no longer uses a global lock 2012-02-19 23:12:53 +01:00
Juan Jose Garcia Ripoll
de42c0c0fb Added ecl_atomic_get() which extracts the value of a field and replaces it with NIL 2012-02-19 23:12:29 +01:00
Juan Jose Garcia Ripoll
67002663ae Creation/destruction of global variable identifiers does not require a lock. 2012-02-19 22:56:10 +01:00
Juan Jose Garcia Ripoll
3874f89eb7 Separate file for atomic operations 2012-02-19 22:55:46 +01:00
Juan Jose Garcia Ripoll
917ea9f3b0 ecl_interrupt_process() now accepts also NIL as an argument, implying that we only want to wake up the process. 2012-02-19 22:17:25 +01:00
Juan Jose Garcia Ripoll
ce73d0a60a Implemented a wait queue for locks and other events. 2012-02-19 01:23:06 +01:00
Juan Jose Garcia Ripoll
632f584598 Got rid of the signal_queue_lock in cl_core, replacing it with atomic operations. 2012-02-19 01:23:06 +01:00
Juan Jose Garcia Ripoll
28b007b0d9 In do_interrupt_process(), the queue lock was held. 2012-02-19 00:55:53 +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
0e1d0226b2 Explicitly mark the current thread environment, just in case it was not properly installed in cl_core.processes (this happens when registering external threads). 2012-02-18 10:48:48 +01:00
Juan Jose Garcia Ripoll
14c352593b Implemented an interruptible version of musleep() also for Windows. 2012-02-18 10:48:47 +01:00
Juanjo Garcia-Ripoll
08d461f564 When using nanosleep() wait only for the time that is remaining. 2012-02-17 14:36:36 +01:00
Juan Jose Garcia Ripoll
70b3b2635e Remove implicit type declarations in DEFMETHOD because the arguments to the function may be changed by the body itself. 2012-02-16 23:23:15 +01:00
Juan Jose Garcia Ripoll
1628fe2781 In ecl_read_object_with_delimiter fixed arguments for error message (red plait). 2012-02-16 21:59:45 +01:00
Juan Jose Garcia Ripoll
cd65c21270 Slight optimization of unlikely error conditions in mutex.d 2012-02-13 22:26:52 +01:00