Commit graph

2336 commits

Author SHA1 Message Date
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
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
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
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
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
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
8f9ee9ab41 Fixed typo in Windows' implementation of mmap 2012-02-12 15:26:10 +01:00
Juan Jose Garcia Ripoll
4ec9cdf4cf When compiling twice a block, ensure that load-time forms are removed. 2012-02-10 09:23:42 +01:00
Juan Jose Garcia Ripoll
5909bb0621 Removed debug statement. 2012-02-09 23:37:01 +01:00
Juan Jose Garcia Ripoll
e91a793052 Fixed use of FEtype_error_index 2012-02-09 23:03:22 +01:00
Juan Jose Garcia Ripoll
991bc3ab78 Changed reader/writer syntax for bytecodes so that shared constants remain shared. 2012-02-09 23:02:29 +01:00
Juan Jose Garcia Ripoll
bc0c5db519 #\ should not rebind the readtable when reading the character name. 2012-02-09 21:26:27 +01:00
Juan Jose Garcia Ripoll
8c1f5fa6a0 compile_with_load_time_forms() did not clean up the list of forms. 2012-02-06 23:39:16 +01:00
Juan Jose Garcia Ripoll
f873e36de1 Fixed typo in disassemble (Jerry James) 2012-02-06 22:13:50 +01:00
Juan Jose Garcia Ripoll
ae35b67986 In #*, when the dimension is missing, the size of the vector is uninitialized (Jerry James) 2012-02-06 22:12:22 +01:00
Juan Jose Garcia Ripoll
574f989070 EXT:MMAP did not use its optional argument (Jerry James) 2012-02-06 22:02:31 +01:00
Juan Jose Garcia Ripoll
fd8e3a2d76 Missing #include statements for mempcy(), read(), close() 2012-02-06 21:58:45 +01:00
Juan Jose Garcia Ripoll
e8d8c45e8d Fixed some improper uses of FEtype_error_index (Jerry James) 2012-02-06 21:54:36 +01:00