summaryrefslogtreecommitdiff
path: root/arch/x86/machine/trap.h
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2014-06-10 21:14:51 +0200
committerRichard Braun <rbraun@sceen.net>2014-06-10 21:14:51 +0200
commit73a935a3e8f12447d455bcf4a1a01c51907a53a0 (patch)
tree7fbde09a59bcb4f2193a905e91ef9b805dd49746 /arch/x86/machine/trap.h
parentf0e77fb79581c9227f758ad014a3c2778ae9d2f5 (diff)
kern/llsync: rework lockless synchronization
Use a global checkpoint identifier as a generation counter and remove reset interrupts. For some reason I can't remember, using reset interrupts was thought to be more efficient, perhaps because accessing a global variable on each checkpoint looked expensive. But it's really not scalable, and a read-mostly global variable can get cached locally and not incur expensive access. In addition, add a decent amount of documentation about the semantics with regard to the rest of the system. Explicitely state that checkpoints are triggered by context switches and that it's not allowed to block inside read-side critical sections. Make periodic events attempt to trigger checkpoints too. Add a thread-local read-side critical section nesting counter so that it can be reliably determined whether the processor is running a read-side critical section or not.
Diffstat (limited to 'arch/x86/machine/trap.h')
-rw-r--r--arch/x86/machine/trap.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/arch/x86/machine/trap.h b/arch/x86/machine/trap.h
index bc0426d..99e2389 100644
--- a/arch/x86/machine/trap.h
+++ b/arch/x86/machine/trap.h
@@ -53,7 +53,6 @@
*
* The local APIC assigns one priority every 16 vectors.
*/
-#define TRAP_LLSYNC_RESET 238
#define TRAP_THREAD_SCHEDULE 239
#define TRAP_CPU_HALT 240
#define TRAP_LAPIC_TIMER 253