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
|
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
|
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 |
|